嵌入式Linux工程师常见笔试题

嵌入式Linux工程师常见笔试题
嵌入式Linux工程师常见笔试题

北京航天泰睿科技有限公司

嵌入式linux笔试题目

一、简答题:

1.请写出实现后面几个功能的Linux命令:显示文件,拷贝,删除

Ls ls -la: -l查看文件所有的信息,-a查看所有的文件,包括隐藏的文件。

Cp /mnt/a.c /opt/

Rm /mnt/a.c

2.do……while和while……do有什么区别?

do……while至少执行一次循环体,while……do先判断循环条件再执行循环体。

3.Linux系统下.ko文件是什么文件?.so文件是什么文件?

.so 文件是动态链接库文件,相当于win下的 .dll 文件。

.ko 是内核模块文件,是内核加载的某个模块,一般是驱动程序。

4.如何使用vi进行块拷贝、粘贴、删除的操作

yy:复制鼠标当前所在行

dd:删除鼠标当前所在行

nyy/dd:复制/删除鼠标所在行开始的n行

p:粘贴复制内容到鼠标所在行

G:移动到文件尾(大写)

u:取消前一个动作(大写)

:q :退出

:w :保存

:wq :保存退出

:q!:强行退出

:w 文件名:另存为如::w hello

:set nu :显示行号

:set nonu:取消行号

5.在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是。

/etc :该目录下存放各种配置文件。对于PC上的linux系统,/etc目录下的目录,文件非常多。6.如何使用gcc得到宏展开的中间代码

Gcc -E *.i *.c

-c:编译成把源文件目标代码,不做连接的动作。

-s:把源文件编译成汇编代码,不做汇编和连接的动作。

-E:只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。

7.如何使用gdb调试多进程

答:最常用的是attach方法,

首先写程序时在子进程中调用sleep函数休眠30-60秒,将程序编译成可执行文件,后台运行可执行文件,ps -fu root查看进程号,gdb,attach进程号,再使用stop暂停子进程,设置一些断点和一些watch,break设置断点,list命令察看源代码,step单步运行,next运行下一步,continue继续运行,print打印变量信息。

8.用户进程间通信主要哪几种方式

管道、信号、消息队列、共享内存、信号量、套接字。

线程同步的方法主要有:互斥锁(mutex)和信号量

9.解释命令ls -amore具体含义。

A:输出所有文件,包括隐藏文件,m:横向输出文件名,并且中间以,号分开,r:列出子目录下的文件,o与-l相似,输出文件的详细信息,不输出组信息。

10.LINUX中的管道指什么,重定向又指什么

管道是linux中很重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入。11.请写出下列代码的输出内容

#include “stdio.h”

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return 0;}

A:13 b:10 c:12 d:120

B,c,d:10,12,120

12.编写一个函数int charnum(char fn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。

文件kt7_2.cpp的内容如下:

#include

#include

#include

int charnum(char fn[10]);

voidmain()

{

intnum;

num=charnum("abc.txt");

cout<<"num="<

}

Int charnum(char fn[10])

{

fstream file;

file.open(fn,ios::in);

if(!file)

{cout<<"abc.txt can't open"<

abort();}

char ch;

int i=0;

while(!file.eof())

{file.get(ch);

i++;}

file.close();

return i-1;

}

二、编程题

13.如果有一个简单的Test项目目录如下:

# tree Test

Test

|-- common.h

|-- main.cpp

|-- test.cpp

`-- test.h

1)使用wildcard、patsubst函数编写一个C++项目的Makefile文件

2)使用automake、autoconfig编写一个支持configure选项的configure.in脚本14.编写一个hello world程序,要求以创建进程的方式打印Hello World!

#include

#include

#include

#include

Main()

{

Pid_t result;

Result = fork();

If(result == -1)

{perror(fork);exit();}

Else if (result == 0) {printf(“hello wold”);}

if (result == 0) {printf(“hello wold”);}

}

15.打开一个文件,并读取从第100字节开始的50字节数据。

#include

#include

#include

#define MAX_LEN 4096

int main(int argc, char **argv)

{

int fd, i;

char buf[MAX_LEN];

for(i=0; i

{

buf[i]=0;

}

if(argc!=2)

{

printf("Invalid argument!\n");

exit(1);

}

if((fd=open((char*)argv[1], O_RDONLY))==-1) {

perror("Open failed");

exit(1);

}

lseek(fd, 100, SEEK_SET);

if(read(fd, buf, 50)!=50)

{

perror("Read error");

exit(1);

}

printf("%s\n", buf);

return 0;

}

16.编写一对socket程序,要求类似于network echo procotol。

Client每隔1秒把自己的IP地址轮流循环发送给一个Server.

Server接到IP后,在屏幕上打印对方IP;然后把自己的IP发送回去。Client收到回复后,在屏幕上打印对方IP。

程序一直运行,直到用户退出。各自分类统计接收到的各IP的数据包的个数。

注意:Client可以向多个Server发送请求,Server也可以接收多个Client请求。

17.请描述Linux下程序开发到执行的工作流程(结合自己的项目经历)。

开发arm-linux程序至少需要三种系统:

Windows系统。

主要用来文件传送和一些简单的文本文件编辑。这个系统其实并非必需,只是因为目前PC机上最流行的系统仍然是Windows系统,我们的很多关于PC的文件和数据的操作习惯都是在Windows 系统上养成的,已经对其形成了严重的依赖,所以Windows系统扮演着的“辅助开发系统”的角色。

PC-Linux系统。

在此系统上安装arm-Linux交叉编译器后,就可以对代码文本文件进行编译,生成可在

arm-Linux系统中运行可执行程序。此系统被称为“Linux宿主机”,我们对Linux程序的开发工作(包括代码编写、调试和编译生成可执行文件)基本上就是在此系统上进行的。

Arm-Linux系统。

Arm-Linux程序运行的平台。此系统的硬件载体是一块小型的嵌入式arm板,我们在Linux宿主机上开发好程序并编译生成arm-linux可执行程序后,将可执行程序文件传送到嵌入式arm板中,然后就可以在arm板上直接运行此程序了。

18. 结合自己的学习或工作感受简述Linux与Windows编程的区别,嵌入式Linux与Windows的嵌入式OS(如XPE、WinCE)的区别。

1. 尝试论述中断产生,到中断处理结束的详细过程7’

设备控制器或其他系统产生一个中断,处理器结束当前指令的执行,处理器发送中断应答信号,处理器将PSW和PC压入堆栈,根据中断,处理器加载新的PC值,保存剩余的处理状态,处理中断,恢复处理状态信息,恢复PC和PSW

2. 试阐述何时可能会导致进程切换,以及进程切换的详细过程8'

1、时钟中断,进程允许执行的时间片结束导致进程切换

2、IO中断

3、内存失效

4、发生错误或异常,进程被转换到退出状态

5、系统调用,比如打开文件,通常导致进程为阻塞状态

1.解释命令ls -a | more具体含义.

ls -a 是将当前目录下的文件名输出到终端,而加入后面的| more 是将输出结果分页显示2.LINUX中的管道指什么重定向又指什么

3.GCC -g -o test.elf test.c的具体含义

将test.c 文件编译输出为test.elf 带上调试信息,可以用GDB调试用

4.浅述GCC编译器在编译时都有哪几个过程

要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。预处理(Preprocessing):命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define 等)进行分析。编译(Compilation):接着调用cc进行编译,这个阶段根据输入文件生成以.o 为后缀的目标文件。汇编(Assembly):汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.s为后缀的汇编语言源代码文件和汇编.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。连接(Linking):当所有的目标文件都生成之后,gcc 就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

6.说明uclinux 和linux的区别

uclinux不具有的功能:1). 没有存储管理单元2). 不能运行时增加进程栈3). 不支持分页4). 可执行程序不是elf, 而是flat 5). 不能用fork, 而是用vfork 6). RAMDISK

7 解释下面一组GDB命令的含义.

break 94 设置断定,让程序在执行到第94行之前停止run 运行准备调试的程序info line 121 查看第121行设置的断点的信息

8.什么是链接脚本,其作用是什么请编写一个简单的链接脚本

链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局.

实例:以下脚本将输出文件的text section定位在0×10000, data section定位在0×8000000: SECTIONS { . = 0×10000; .text : { *(.text) } . = 0×8000000; .data : { *(.data) } .bss : { *(.bss) } } 解释一下上述的例子: . = 0×10000 : 把定位器符号置为0×10000 (若不指定, 则该符号的初始值为0). .text : { *(.text) } : 将所有(*符号代表任意输入文件)输入文件的.text section合并成一个.text section, 该section的地址由定位器符号的值指定, 即0×10000. . = 0×8000000 :把定位器符号置为0×8000000 .data : { *(.data) } : 将所有输入文件的.data section合并成一个.data section, 该section的地址被置为0×8000000. .bss : { *(.bss) } : 将所有输入文件的.bss section合并成一个.bss section,该section的地址被置为0×8000000+.data section的大小. 连接器每读完一个section描述后, 将定位器符号的值*增加*该section的大小. 注意: 此处没有考虑对齐约束.

9.编写一个SHELL脚本程序,将当前目录及其子目录中所有后缀为.O类型文件的文件名输出到用户指定的文件中.

ls -a | *.o >result.txt

10.请写出5个LINUX基本系统调用的函数名称. 包括与设备文件的交互和与普通文件的交互的系统调用(open, close, ioctl, create, unlink, . . . );与进程相关的系统调用又包括进程控制系统调用(fork, exit, getpid, . . . ),

11.描述LINUX中字符设备驱动的基本编写框架. 根据struct file_operations 的数据结构,填充里面的如:open,write,close,ioctl等函数并进行模块的初始化和退出

12.编写一个hello world程序,要求以创建进程的方式打印hello world.编写hello.c文件如下

#include ""stdio.h "

int main()

{

fork();

printf("hello world!/n");

exit(0);

} 编译hello.c生成hello可执行文件在shell中执行#fork hello 便可以看到打印结果

13.浅谈bootloader,kelnel,filesystem三者之间的关系.

嵌入式是linux启动过程如下。bootloader->kernel->filesystem->application 先是bootloader,它是linux-kernel移植的基石,Bootloader是在系统启动之后、Kernel运行之前所执行的第一段代码,其任务是为调用Kernel准备必要的软硬件环境。完成bootlaoder 的移植后,就是kernel的移植。主要包括添加特定模块的驱动,针对具体要求对内核进行配置。这里有两点要注意:一是有些参数要与所用的bootloader向对应,如nand的分区参数。二是bootlaoder对特定模块的驱动在进入kernel后便会有kernel接管,并有kernel 重新驱动文件系统主要是建立根文件和一些系统功能的实现,如bash。用busybox很容易搞定。

3. Linux系统下.ko文件是什么文件?.so文件是什么文件?

Linux下面文件名不代表什么。但是从常识上讲,.ko代码是驱动编译成的格式, .so文件一般是动态库文件

4.二维数组AA [ 3 ][ 7 ]的另外一种表示方法:

*(AA[3]+7) *(*(AA+1)+7)

5.请写出下列代码的输出内容

#include “stdio.h”

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return 0;

}

输出结果为:b, c, d: 10, 12, 120

嵌入式面试题

一、ANSI C/C++部分

<1> 简答题

1、如何在C中为一个数组分配空间?

2、如何初始化一个指针数组?

3、s[10]的另外一种表达方式是什么?

4、对(-1.2345)取整是多少?

5、如何让局部变量具有全局变量的生命期?

6、C中的常量字符串应在何时定义?

7、如何在两个.C文件中引用对方的变量?

8、a+++++b所表示的是什么意思?有什么问题?

<2> 问答题

1、下面x,y,*p的值是多少,有什么问题?

int x,y,z = 2;

int *p = &z;

x = sizeof(*p);

y = x/*p;

2、一般使用malloc是,需要进行强制类型转换,如:

char *s;s = (char *)malloc(21);

下面中???该如何填写,才可以正确执行强制类型转换?

int (* monthp)[31]; monthp = (???)malloc(31);

3、指针和数组的区别是什么?用一个简单的声明把它区分开。

指针和数组的声明在什么情况下是相同的?

4、C语言的左值(lalue)和右值(rvalue)的含义是什么?

5、说明C语言中术语“声明“”定义“”原型“的含义?

6、编写一个函数,输入一个整形数,可以选择按照8/10/16进制输出字符串;

7 下面是一个16*16的黑白图标:

static unsigned short stopwatch[] = { 16个数};

如何修改声明,可以使之在源代码中形象的表现出图像的摸样?

<3> 分析题

本题假设下面代码中的变量都合法,调用外部的函数都正确,回答几个问题:这些代码意图要干什么?

是否有问题?

如果有问题,该如何修改,或者如何避免类是错误的发生?

如果没有问题,如果有输出,输出时什么?

1./* x =2 ,y = 3,z=? */

if(x == 0)

if(y == 0)

z = -1:

else

z = x+y;

2.

int is_gb2312_char(char c1,char c2)

{

if (c1>=0xal &&c2>=0xal)

return 1;

else

return 0;

}

二、POSIX方面的知识

<1> 简答题。下面的题目必须全部答对才给分;

1、在UNIX环境中,编译流程是什么?

2、一般UNIX的程序有多少段,举一个实际的例子说明。

3、系统调用和库函数调用有什么区别。

在linux2.4.xx上的glibc和newlib(一种嵌入式C库)的系统调用有什么不同?

4、列出你所知道的2个内存跟踪库

设计一个内存跟踪方案,为什么选择这个方案

<2> 综合编程题

1、有一个8MB的文件,编写一个copy程序,拷贝这个文件,并计算所需要的时间,指出是哪些代码或函数造成速度瓶颈。

提示:如果只是用read/write调用,不是一个好的实现。

三、编译器与调试器

1、如何使用gcc得到宏展开的中间代码

2、如何通过gcc在命令行中传入宏定义

3、在哪一级优化的情况下,内联函数才真正的内联到代码中

4、gdb的watch命令如何使用,有何缺点

5、gdb中使用什么命令可以显示调用的栈帧,如何查看某个栈帧上的局部变量

6、如何使用gdb调试多线程

四、Makefile

如果有一个简单的Test项目目录如下:

#tree test

test

|-common.h

|-main.cpp

|-test.cpp

|-test.h

使用wildcard、patsubst函数编写一个C++项目的Makefile文件

linux 笔试题-填空

一.填空题 1. 在Linux系统中,以(文件)方式访问设备。 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。 3. Linux文件系统中每个文件用i节点来标识。 4. 全部磁盘块由四个部分组成,分别为引导块、专用块、 i节点表块和数据存储块。 5. 链接分为:硬链接和符号链接。 6. 超级块包含了i节点表和空闲块表等重要的文件系统信息。 7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为:644,该文件属性是目录。 8. 前台起动的进程使用 Ctrl+c 终止。 9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。 10. 网络管理的重要任务是:控制和监控。 11. 安装Linux系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。 13. 编写的Shell程序运行前必须赋予该脚本文件执行权限。 14. 系统管理的任务之一是能够在分布式环境中实现对程序和数据的安全保护、备份、恢复和更新。 15. 系统交换分区是作为系统虚拟存储器的一块区域。 16. 内核分为进程管理系统、内存管理系统、i/o管理系统和文件管理系统四个子系统。 17. 内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。 18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址和子网掩码等必要信息。 19. 唯一标识每一个用户的是用户id和用户名。 20 .rip协议是最为普遍的一种内部协议,一般称为动态路由选择协议。 21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。 22. DHCP可以实现 IP地址分配。 23. 系统网络管理员的管理对象是服务器、用户和服务器的进程以及系统的各种资源。 24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。 25. 当想删除本系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的设备驱动程序时,必须对内核升级。 26 Ping命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络的。 27. vi编辑器具有两种工作模式:命令模式和输入模式。 28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1位,表示文件类型,第二段占3 位,表示文件所有者对该文件的权限。 29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态、就绪态和等待态(阻塞态)。 30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现ip地址和主机名之间的转换。 31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端为用户提供浏览web服务的就是apache 应用程序。 32. 在Linux系统上做备份可以有两种类型:系统备份和用户备份。其中前者是指对操作系统的备份,后者是指对应用程序和用户文件的备份。 33. CD-ROM标准的文件系统类型是iso9660。 34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是lilo。 35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数-b。 36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是vfat。 37. 设定限制用户使用磁盘空间的命令是quota。

嵌入式笔试题汇总1

1 读程序段,回答问题 (a) int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%d\n",d); return 0; } a) 写出程序输出 b) 在一个可移植的系统中这种表达式是否存在风险?why? 答案:5 存在风险,因为c=c++%5;这个表达式对c有两次修改,行为未定义,c的值不确定 (b) #include "stdio.h" int a=0; // data section int b; // data section static char c; // BSS int main(int argc,char *argv[]) { char d=4; // stack static short e; // BSS a++; b=100; c=(char)++a; e=(++d)++; printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e); return 0; } a) 写出程序输出 b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。 答案:a=2,b=100,c=2,d=6,e=5 2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。 __interrupt double compute_area(double radius) { double area = PI * radius *radius; printf("nArea = %f", area); return area; } 答案

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

Linux期末考试试题8套(含答案)

Linux 期末考试试题(一) 一、选择题 (每小题2分,共50分) 1.在创建Linux分区时,一定要创建(D )两个分区 A. FAT/NTFS B. FAT/SWAP C. NTFS/SWAP D.SW AP/根分区 2.在Red Hat Linux 9中,系统默认的(A)用户对整个系统拥有完全的控制权。 A. root B. guest C. administrator D.supervistor. 3. 当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B ) A. NID B. PID C. UID D. CID 4. 下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 5. 哪个目录存放用户密码信息( B ) A. /boot B. /etc C. /var D. /dev 6. 默认情况下管理员创建了一个用户,就会在( B )目录下创建一个用户主目录。 A. /usr B. /home C. /root D. /etc 7. . 当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于( D )目录。 A. /home B. /bin C. /etc D. /dev 8. 如果要列出一个目录下的所有文件需要使用命令行( C )。 A. ls –l B. ls C. ls –a(所有) D. ls –d 9. 哪个命令可以将普通用户转换成超级用户(D ) A. super B. passwd C. tar D. su 10. 除非特别指定,cp假定要拷贝的文件在下面哪个目录下( D ) A. 用户目录 B. home目录 C. root目录 D. 当前目录 11. 在vi编辑器里,命令"dd"用来删除当前的( A ) A. 行 B. 变量 C. 字 D. 字符 12. 当运行在多用户模式下时,用Ctrl+ALT+F*可以切换多少虚拟用户终端( B ) A. 3 B. 6 C. 1 D. 12 13. Linux启动的第一个进程init启动的第一个脚本程序是( B )。 A./etc/rc.d/init.d B./etc/rc.d/rc.sysinit C./etc/rc.d/rc5.d D./etc/rc.d/rc3.d 14. 按下(A )键能终止当前运行的命令 A. Ctrl-C B. Ctrl-F C. Ctrl-B D. Ctrl-D 15. 下面哪个命令用来启动X Window ( C ) A. runx B. Startx C. startX D. xwin 16. 用来分离目录名和文件名的字符是( B ) A. dash (-) B. slash (/) C. period (.) D. asterisk(*) 17. 用"rm -i",系统会提示什么来让你确认( B ) A. 命令行的每个选项 B. 是否真的删除 C. 是否有写的权限 D. 文件的位置 18. 以下哪个命令可以终止一个用户的所有进程( D ) A. skillall B. skill C. kill D. killall 19.在Red Hat Linux 9中,一般用(D )命令来查看网络接口的状态 A. ping B. ipconfig C. winipcfg D ifconfig 20. vi中哪条命令是不保存强制退出( C )(第五章) A. :wq B. :wq! C. :q! D. :quit

嵌入式软件工程师C语言笔试题

软件笔试题(A) 姓名:___________________________________ 学校:_____________________________________ 专业:___________________________________ 电话:_____________________________________ (如无特殊说明,以下所有测试内容都是基于32位嵌入式系统) 1)程序的局部变量存在于 _______________ 中,全局变量存在于_________________ 中,动态申请数据存在于_________________ 中。 2)如何用if来做零值比较 int a : if(a==O) bool a : _________________________ float a : _________________________ void * a : 3) void func( char str[1OO]) { printf( “ %d ,sizeof( str )); } 输出结果是:_____________________ 有下列定义: char str[] = “ Hello World ” ; char *p = str; int n = 10; void *ptr = malloc( 100 ); 请写出如下表达式的值: sizeof (str ) = _ sizeof ( p ) = _ sizeof ( n ) = _ sizeof ( ptr )= _ 4)

un sig ned char *p1; un sig ned long *p2; p1=(unsigned char *)0x87000000; p2=(unsigned long *)0x80010000; 请问p1+5 = ____________ ; ___________ p2+5 = ________ ; _____________ 5) char str[10]; strcpy(str,"0123456789"); 产生什么结果?为什么? 6)用C语句,让程序跳转到绝对地址0XFFFF0去执行 7) 已知一个数组array ,用一个宏定义,求出数组的元素个数 #define ARRAY_COUNT _____________________________________________________ 8) 简要说明,为什么标准头文件都有类似以下的结构。 #ifndef __INC_Ho neywell_Debug #defi ne __INC_Ho neywell_Debug #ifdef __cplusplus extern "C" { #en dif /*???*/ #ifdef __cplusplus } #en dif #e ndif /*__INC_Hon eywell_Debug */

海康嵌入式笔试题

海康嵌入式笔试题 Revised as of 23 November 2020

海康嵌入式笔试题 1.请问TCP/IP协议分为哪几层FTP协议属于哪一层 答:可以分为物理层,数据链路层,网络层,传输层,应用层 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、 文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务, 主要功能是数据格式化、数据确认和丢失重传等。 如传输控制协议(TCP)、用户数据报协议(UDP)等, TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据, 并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。如ARP是地址解析协议,在这一层的时候吧IP地址转换为物理地址网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、SerialLine等)来传送数据。 另外补充一下OSI的七层所对应的协议: 应用层(Application): 应用程序网关(applicationgateway)Telnet:远程登录(在应用层连接两部分应用程序) FTP(FileTransferProtocol):文件传输协议 HTTP(HyperTextTransferProtocol):超文本传输协议 SMTP(SimpleMailTransterProtocol):简单邮件传输协议 POP3(PostOfficePtotocol):邮局协议 SNMP(SimpleNetworkMangementProtocol)简单网络管理协议 DNS(DomainNameSystem):域名系统 传输层(Transport): 传输网关(transportgateway) TCP(TransmissionControlPotocol):传输控制协议 (在传输层连接两个网络) UDP(UserDataPotocol):用户数据协议 网络层(Internet): 多协议路由器(multiprotocolrouter) IP(InternetProtocol):网络协议(在异构网络间转发分组) ARP(AddressResolutionProtocol):地址解析协议 RARP(ReverseAddressResolutionProtocol):逆地址解析协议 ICMP(InternetControlMessageProtocol):因特网控制消息协议

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 {for( size_t i=0; i

常见linux笔试题-100道选择题与答案

Linux认证笔试基本题(答案见最后) (以下均为单选题) 1.cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2.在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ? A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机 3.下面哪个Linux命令可以一次显示一页内容? A. pause B. cat C. more D. grep 4.怎样了解您在当前目录下还有多大空间? A. Use df B. Use du / C. Use du . D. Use df . 5.怎样更改一个文件的权限设置? A. attrib B. chmod C. change D. file 6.假如您需要找出 /etc/my.conf 文件属于哪个包 (package) ,您可以执行: A. rpm -q /etc/my.conf B. rpm -requires /etc/my.conf C. rpm -qf /etc/my.conf

D. rpm -q | grep /etc/my.conf 7.假如当前系统是在 level 3 运行,怎样不重启系统就可转换到 level 5 运行? A. Set level = 5 B. telinit 5 C. run 5 D. ALT-F7-5 8.那个命令用于改变 IDE 硬盘的设置? A. hdparam B. ideconfig C. hdparm D. hddparm 9.下面哪个命令可以列出定义在以后特定时间运行一次的所有任务? A. atq B. cron C. batch D. at 10.下面命令的作用是:set PS1="[\u\w\t]\\$" ; export PS1 A. 改变错误信息提示 B. 改变命令提示符 C. 改变一些终端参数 D. 改变辅助命令提示符 11.作为一个管理员,你希望在每一个新用户的目录下放一个文件 .bashrc ,那么你应该在哪个目 录下放这个文件,以便于新用户创建主目录时自动将这个文件复制到自己的目录下。 A. /etc/skel/ B. /etc/default/ C. /etc/defaults/ D. /etc/profile.d/ 12.在bash中,export命令的作用是: A. 在子shell中运行命令 B. 使在子shell中可以使用命令历史记录 C. 为其它应用程序设置环境变量 D. 提供NFS分区给网络中的其它系统使用

经典嵌入式面试题

经典嵌入式面试题 C语言测试就是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者与被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也就是相当有趣的。 从被面试者的角度来讲,您能了解许多关于出题者或监考者的情况。这个测试只就是出题者为显示其对ANSI标准细节的知识而不就是技术技巧而设计不?这个愚蠢的问题不?如要您答出某个字符的ASCII值。这些问题着重考察您的系统调用与内存分配策略方面的能力不?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。如果上述任何问题的答案就是"就是"的话,那么我知道我得认真考虑我就是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,您能了解应试者C语言的水平。不管怎么样,瞧一下这人如何回答她不会的问题也就是满有趣。应试者就是以好的直觉做出明智的选择,还就是只就是瞎蒙呢?当应试者在某个问题上卡住时就是找借口呢,还就是表现出对问题的真正的好奇心,把这瞧成学习的机会呢?我发现这些信息与她们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。这些问题都就是我这些

年实际碰到的。其中有些题很难,但它们应该都能给您一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让您能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为您所用,请自行按您的意思分配分数。 预处理器(Preprocessor) 1 、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想瞧到几件事情: ?; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) ?; 懂得预处理器将为您计算常数表达式的值,因此,直接写出您就是如何计算一年中有多少秒而不就是计算出实际的值,就是更清晰而没有代价的。 ?; 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数就是的长整型数。 ?; 如果您在您的表达式中用到UL(表示无符号长整型),那么您有了一个好的起点。记住,第一印象很重要。 2 、写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )

linux考试题库(300道)

使用shutdown -k命令并不真正使系统关机,而只是给用户提出警告 1 错误 2 正确 正确答案:2 提示:rx1:T 手工运行fsck的最好时机是在系统备份文件之后,这样在发现错误后,还可以利用备份文件进行修复 1 正确 2 错误 正确答案:1 提示:rx2:T Linux 系统引导后,内核运行init程序,这个程序在处理任何其他规定的运行等级之后,在运行/etc/rc.d/rc.sysinit脚本 1 正确 2 错误 正确答案:2 提示:rx3:F 进程可以处于僵死状态,而在当前进程表中仍有记录 1 正确 2 错误 正确答案:1 提示:rx4:T dump必须借助于其他工具才能支持备份级别 1 错误 2 正确 正确答案:2 提示:rx5:T 为了应用smbclient读取远程机power上的pub共享目录,共享目录的正确写法是//power:share 1 错误 2 正确 正确答案:1 提示:rx6:F syslogd守护进程,不仅可以将日志记录在本地机message文件中,还可以将日志记录通过网络发送出去 1 正确 2 错误 正确答案:1 提示:rx7:T Samba服务器可以设置成在网络下对外宣称自己是一个Windows NT服务器或Win95客户机 1 正确 2 错误 正确答案:1 提示:rx8:T

在fatab文件中,使用;标记注释行 1 正确 2 错误 正确答案:2 提示:rx9:F 为匹配所有的空行,可以使用如下正则表达式^$ 1 正确 2 错误 正确答案:1 提示:rx10:T 如果系统使用了sendmail,那么sendmail.log文件以二进制形式保存了sendmail的统计信息 1 错误 2 正确 正确答案:1 提示:rx11:F a.out是现代Linux的可执行文件、目标文件和系统函数库的标准格式 1 正确 2 错误 正确答案:1 提示:rx12:T Linux系统以文本文件的形式保存大部分系统日志,如lastlog 1 正确 2 错误 正确答案:2 提示:rx13:F 安装过程中,如果是使用fdisk分区工具,我们必须十分小心,因为对分区表所作的修改在每一步完成后,都会立刻反映到分区表上,除非在第二次打开fdisk后,选择删除新分区,再重新分区 1 错误 2 正确 正确答案:1 提示:rx14:F 目录树结构与文件系统是两个不同的概念,文件系统是磁盘或分区上文件的物理存放方法,而目录树结构是操作系统中管理文件的逻辑方式 1 错误 2 正确 正确答案:2 提示:rx15:T dump不同于其它备份工具的地方在于:它直接读取文件系统,而不是通过文件系统读取文件来进行备份,这样可在不影响文件时间戳的情况下,备份文件。 1 错误 2 正确 正确答案:2 提示:rx16:T

嵌入式笔试题

嵌入式笔试题 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 下面就由为大家介绍一下嵌入式笔试题的文章,欢迎阅读。 嵌入式笔试题篇11:用C语言实现大小端的测试Int CheckCpu(){union{int a;char b;}c;c.a=1;if(c.b==1)printf(“小端);else printf(“大端);}2:volatile的作用有哪些?Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从新读取它的值,并不要随意针对它做优化,主要用在:1:一个中断子程序中会访问到的非自动变量;2:多线程应用中被几个线程共享的变量;3:并行设备的硬件寄存器。 3:C语言中static关键字的作用有哪些?1:在函数体中,一个被声明为静态的变量在这个变量在调用过程中维持其值不变;2:在模块内(但在函数体外),一个被声明为静态的变量,可以被这个模块内的所用函数使用,但不能被模块外的函数使用,它是一个本地的全局变量;3:在模块内,一个被声明为静态变量的函数,智能被这个模块内的函数调用;4:static全局变量与局部变量的区别:static全局变量只能被初始化一次,防止其他单元文件中被引用;5:static局部变量与局部变量的区别:static局部变量只能被初始化一次,下一次依据上一次结果的值;6:static函数与普通函数的区别:static在内存中只用一份,普通函数在每

一次调用中维持一份拷贝。 4:请问下面三种变量的区别:Int const *p : 指向常整型的指针;Int *const p; 指向整型的常指针;Int *const *p:指向常整型的常指针;5:在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的。 当参数小于等于4的时候是通过r0~r3来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。 6:中断与异常有何区别.异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。 所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。 7:用预处理指令#define表示一年中有多少秒#define SECONDS_PER_YEAR (60*60*24*365)UL注意后面必须加UL,表示计算的结构是常整型。 8:简述SPI,UART,I2C三种传输方式。 SPI:高速同步串行口,首发独立,可同步进行SPI接口主要应用在EEPROM,Flash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。

基于嵌入式linux的bsp概念与开发

引言 Linux诞生于1991年,芬兰学生LinuSTorvaldS是Linux操作系统的缔造者,与传统的操作系统不同,Linux操作系统的开发一开始就在FSF(自由软件基金会组织)的GPL(GNU Public License)的版本控制之下,Linux内核的所有源代码都采取了开放源代码的方式。Linux具有相当多的优点。 BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,其主要功能为屏蔽硬件,提供操作系统的引导及硬件驱动。Linux操作系统目前已发展为主流操作系统之一,并且还在不断的壮大和发展。 最新的2.6版内核增加了很多新特性为嵌入式应用提供广泛的支持,使得它不仅可以应用于大型系统,还可以应用于像PDA这类超小型系统中。随着Linux系统在嵌入式领域的广泛应用,对它的研究也在逐渐成为热点并且走向成熟。 在嵌入式系统开发过程中,板级支持包(BSP,BoardSuport Package)的开发已成为非常重要的环节。本文以Linux系统上的BSP技术为研究内容,讨论了BSP的基本概念和设计思想,特别针对Linux系统上BSP的层次结构、各功能模块的实现技术做了详细分析。 通过分析PC机的BIOS技术阐述了嵌入式系统中板级初始化流程和技术重点,并从源代码分析入手详细分析了PC机GURB引导程序设计技术,提出了嵌入式系统上BootLoader的程序结构和设计思想。 嵌入式操作系统对设备驱动程序的管理技术是BSP设计的重要组成部分。本文对比了Linux2.4和Linux2.6的设备驱动程序框架,同时结合大量源代码的研读,对Linux2.6内核的统一设备模型进行了深入的研究,剖析了内核对象机制的主要数据结构及驱动程序设计框架,理解了该模型对设备类的抽象机制,并在实际的项目实践中,结合所作的研究工作,圆满完成了基于ARM+Linux开发平台的BSP开发任务。 最后对本文研究工作进行了总结,并对下一步工作进行了展望。

Linux期末考试试题8套(含答案)

Linux 期末考试试题 (一 ) 一、选择题 ( 每小题 2 分,共 50分) D )两个分区 C. NTFS/SWAP D.SWAP/ 根分区 A )用户对整个系统拥有完全的控制权。 C. administrator D.supervistor. ID 号的 shell 将被调用,这个 ID 是什么 ( B ) D. CID 4. 下面哪个命令是用来定义 shell 的全局变量 ( D ) A. exportfs B. alias C. exports D. export 5. 哪个目录存放用户密码信息 ( B ) A. /boot B. /etc C. /var D. /dev 6. 默认情况下管理员创建了一个用户,就会在 ( B )目录下创建一个用户主目录。 A. /usr B. /home C. /root D. /etc 7. . 当使用 mount 进行设备或者文件系统挂载的时候,需要用到的设备名称位于 ( D )目录。 A. /home B. /bin C. /etc D. /dev 8. 如果要列出一个目录下的所有文件需要使用命令行 ( C )。 A. Is - B. Is C. Is -a(所有) D. Is - 9. 哪个命令可以将普通用户转换成超级用户 (D ) A. super B. passwd C. tar D. su 10. 除非特别指定, cp 假定要拷贝的文件在下面哪个目录下 ( D ) A. 用户目录 B. home 目录 C. root 目录 D. 当前目录 11. 在vi 编辑器里,命令"dd"用来删除当前的(A ) A. 行 B. 变量 C. 字 D. 字符 12. 当运行在多用户模式下时,用 CtrI+ALT+F* 可以切换多少虚拟用户终端 ( B ) A. 3 B. 6 C. 1 D. 12 13. Linux 启动的第一个进程 init 启动的第一个脚本程序是 ( B )。 A./etc/rc.d/init.d B./etc/rc.d/rc.sysinit C./etc/rc.d/rc5.d D./etc/rc.d/rc3.d 14 . 按下 (A )键能终止当前运行的命令 A. CtrI-C B. CtrI-F C. CtrI-B D. CtrI-D 15 . 下面哪个命令用来启动 X Window ( C ) A. runx B. Startx C. startX D. xwin 16. 用来分离目录名和文件名的字符是 ( B ) A. dash (-) B. sIash (/) C. period (.) 17. 用 "rm -i", 系统会提示什么来让你确认 ( A. 命令行的每个选项 B. 是否真的删除 A. skiIIaII B. skiII C. kiII D. kiIIaII 19. 在 Red Hat Linux 9 中,一般用( D A. ping B. ipconfig C. winipcfg D ifconfig 20. vi 中哪条命令是不保存强制退出 ( C )(第五章) A. :wq B. :wq! C. :q! D. :quit 21. 局域网的网络设备通常有( ABCDE ) A.交换机 B.路由器 C.网桥 D.双绞线 E. HUB 1.在创建 Linux 分区时,一定要创建( A. FAT/NTFS B. FAT/SWAP 2.在 Red Hat Linux 9 中,系统默认的( A. root B. guest 3. 当登录 Linux 时,一个具有唯一进程 A. NID B. PID C. UID D. asterisk (*) B ) C. 是否有写的权限 ( D ) D. 文件的位置 18. 以下哪个命令可以终止一个用户的所有进程 )命令来查看网络接口的状态

嵌入式经典笔试题目

1将一个字符串逆序 2、将一个链表逆序 3、计算一个字节里(byte)里面有多少bit被置1 4、搜索给定的字节(byte) 5、在一个字符串中找到可能的最长的子字符串 6、字符串转换为整数 7、整数转换为字符串 答案: 1、方法1: int main() { char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc(len+1);//要为\0分配一个空间char* d = dest; char* s = &src[len-1];//指向最后一个字符 while( len-- != 0 ) *d++=*s--; *d = 0;//尾部要加\0 printf("%s\n",dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露return 0; } 方法2: #include #include main() { char str[]="hello,world"; int len=strlen(str); char t; for(int i=0; i { t=str[i]; str[i]=str[len-i-1]; str[len-i-1]=t; } printf("%s",str); return 0; } 2、 链表题:一个链表的结点结构 struct Node {

int data ; Node *next ; }; typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel) Node * ReverseList(Node *head) //链表逆序 { if ( head == NULL || head->next == NULL ) return head; Node *p1 = head ; Node *p2 = p1->next ; Node *p3 = p2->next ; p1->next = NULL ; while ( p3 != NULL ) { p2->next = p1 ; p1 = p2 ; p2 = p3 ; p3 = p3->next ; } p2->next = p1 ; head = p2 ; return head ; } (2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同) Node * Merge(Node *head1 , Node *head2) { if ( head1 == NULL) return head2 ; if ( head2 == NULL) return head1 ; Node *head = NULL ; Node *p1 = NULL; Node *p2 = NULL; if ( head1->data < head2->data ) { head = head1 ; p1 = head1->next; p2 = head2 ; } else {

单片机嵌入式应聘测试题(含答案)[精品文档]

嵌入式工程师初试试题 学校_______________ 院系________________ 姓名________________ 电话_________________ 本试题包括C程序设计(70分)、单片机基础(20分)、逻辑题(10分) C程序设计部分: 一、选择题(本大题共10小题,每小题3分,共30分) 1.下面定义变量方法错误的一项是( C) A)int ab_2 B) int _2a3 C)int 2_ab D)int ab2_ 2.判断char型变量ch是否为大写字母的正确表达式是(B ) A)‘A’<=ch<=’Z’ B) (ch>=’A’) && (ch<=’Z’) C) (ch>=’A’)& (ch<=’Z’) D) (‘A’<=ch) AND (‘Z’>=ch) 3.设有说明:char w;int x;double y;则表达式w*x-y值的数据类型为(D ) A) float B) char C) int D) double 4.以下正确的说法是(D ) 在C语言中 A) 实参和与其对应的形参各占用独立的存储单元 B) 实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D) 形参是虚拟的,不占用存储单元 5.下面程序运行结果是( C) #include int a[3][3]={{1},{2},{3}}; int b[3][3]={1,2,3,4,5}; int main() { printf("%d\n",a[1][0] + b[1][0]); return 0; } A) 2 B) 4 C) 6 D) 值不一定 6.下面程序运行结果是( D) #include "stdio.h" int main() { int x=1, y=0, a=0, b=0;

Linux考试题

Linux基础知识自测题 单选题(共计40题) 1. 查看命令cd的绝对路径,结果如下: # which cd /usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) 可以使用下列哪条命令获得cd的帮助信息? A. which cd B. help cd C. man cd D. info cd 2. 请判断关于Linux系统安装下列的说法哪一个是错误的? A. 安装时至少需要划分两个分区:根分区和swap分区 B. 在安装设置中可以添加除root以外的其他普通用户 C. Linux安装时可以选择不安装图形环境 D. 安装中设置了使用DHCP自动获取IP地址以后将无法再手工更改IP 3. 关于软链接文件的说法以下哪一个是错误的? A. 软链接文件和原文件的i节点一致 B. 软链接文件默认权限皆为777 C. 软链接可以链接目录 D. 软链接的文件类型使用字母l表示 4. 以下说法中错误的是? A. 默认创建的二进制文件不具有可执行权限 B. Vim的配置文件名为.vimrc C. 一个i节点只能对应一个文件 D. Linux中设备是以文件形式进行管理 5. 下列哪条命令可以取消vim/vi中上一步的错误操作? A. r B. s C. u D. x 6. 如何查找命令quota的路径? A. whatis quota B. find quota C. where quota D. which quota

相关文档
最新文档