嵌入式Linux面试试题库汇总_第1页
嵌入式Linux面试试题库汇总_第2页
嵌入式Linux面试试题库汇总_第3页
嵌入式Linux面试试题库汇总_第4页
嵌入式Linux面试试题库汇总_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式Linux系统基础试题库一.不定项选择题:1. 对于如下的定义,说法正确的有(A )int * pb, pc;A、 pb是一个指向整数的指针,pc是一个整数B、pb和pc都是指向整数的指针C、这个定义是错的D、这个定义是对的,但在编译时会出现告警2. 以下描述正确的有(D)A、sizeof(Iong等于 4.B、short类型的指针p,p+表示指向下一个字节C、int a=0xffff0000,a 的值为-65535.D、unsigned char类型的取值范围是 0256.3. 以下代码正确的是(C)A、 char a=“ ABC ;B、char a= ” k”;c、char a4=0

2、;d、char a11=Heilrd! ”4. 下面的网络协议中,面向连接的的协议是:AA、传输控制协议B、用户数据报协议C、网际协议 D、网际控制报文协议5. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C A、文件类型 B、文件所有者的权限C、文件所有者所在组的权限D、其他用户的权限6. 终止一个前台进程可能用到的命令和操作B。A、killB、+C C、shut downD、halt7. 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建 父目录的选项是D。A、-m B、-d C、-f D、-p8. 下面关于i节点描述错误的是 A。A、i节点和文件是一一对应的

3、(每个文件都有唯一一个索引结点号与 之对应,而对于一个索引结点号,却可以有多个文件名与之对应)B、i节点能描述文件占用的块数C、i节点描述了文件大小和指向数据块的指针D、通过i节点实现文件的逻辑结构和物理结构的转换9. 一个文件名字为rr.Z,可以用来解压缩的命令是:D。A、tar B、gzip C、compress D、uncompress10. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作A、配置域名服务器B、定义一条本机指向所在网络的路由C、定义一条本机指向所在网络网关的路由D、定义一条本机指向目标网络网关的路由11. 局域网的网络地址/24,局域网络连

4、接其它网络的网关 地址是 。主机 0访问 /24 网络时,其 路由设置正确的是B。A、 route add et gw netmask metric 1B、route add et gw netmask metric 1C、route add -net gw netmask metric 1D、route add

5、default netmask metric 112. 下列提法中,不属于ifconfig命令作用范围的是 D。A、配置本地回环地址 B、配置网卡的IP地址C、激活网络适配器 D、加载网卡到内核中13. 在局域网络内的某台主机用 ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是C。A、主机IP设置有误B、没有设置连接局域网的网关C、局域网的网关或主机的网关设置有误D、局域网DNS服务器设置有误14. 不需要编译内核的情况是 D。A、删除系统不用的设备驱动程序时B、升级内核时C、添加新硬件时D、将网卡激活15.

6、在shell中变量的赋值有四种方法,其中,采用 name=12的方法 称A。A、直接赋值B、使用read命令C、使用命令行参数D、使用命令的输出16. D命令可以从文本文件的每一行中截取指定内容的数据。A、cp B、dd C、fmt D、cut17. 下列不是Linux系统进程类型的是 D。A、交互进程 B、批处理进程 C、守护进程 D、就绪进程18. 内核不包括的子系统是 D。A、进程管理系统 B、内存管理系统 C、I/O管理系统D、硬件管理 系统19. 若一台计算机的内存为128MB,则交换分区的大小通常是C。A 64MB B 128MB C 256MB D 512MB20. 在TCP/I

7、P模型中,应用层包含了所有的高层协议,在下列的一些 应用协议中,B是能够实现本地与远程主机之间的文件传输工作。A tel net B FTP C SNMP D NFS21. 用Is - al命令列出下面的文件列表,D文件是符号连接文件。A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 helloB -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbeyC drwxr-r- 1 hel users 1024 Sep 10 08:10 zha ngD lrwxr-r- 1 hel users 2024 Sep 12 08

8、:12 che ng22. DNS域名系统主要负责主机名和 A之间的解析。A IP地址B MAC地址C网络地址 D主机别名构。A服务器/工作站B B/S C集中式D分布式24. NFS是C系统。A文件B磁盘C网络文件D操作25. Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在C目录中。A /bin B /etc C /dev D /lib26. 如果限定程序的栈的大小是1K字节,则以下代码,运行时会出错的有(C )A. foo.cstatic int iA512;int mai n()return 0 ;B. foo.cint mai n()st

9、atic int iA512return 0;C. foo.cint mai n()int iA512return 0;D. foo.cint mai n()In t*piApiA二malloc(512*sizeof(i nt);return 0;27. 以下代码最后一次打印结果是(C )void fun (i nt iln putNum)static int iCo un t=1;iCo un t=iCou nt+il nputNum;Print( n iCount =%d ” ,icount+iInputNum);for(i=1;i3;i+)Fun(i);B.iCou nt =4C.iCo

10、u nt =6D.iCou nt =5A. iCou nt =328. 关于以下代码,输出结果是(A )Void Fun()Int i;Int x33=1,2,3,4,5,6,7,8,9;Int *p;P=& x 11;For(i=0;i 3) patNext; pstD-pstNext二pstB; pstA-pstNext=pstD; free(pstB);B.pstA-pstNext=pstD;pstD-pstNext二pstA-pstNext-pstNext;free(pstB);C. pstA-pstNext-pstNext-pstpre=pstD; pstD-pstNext=pstA

11、-pstNext-pstNext; pstD-pstpre=pstB-pstpre; pstA-pstNext=pstB-pstNext-pstpre; free(pstB);D.pstD-pstNext=pstB-pstNext;pstD-pstNext-pstpre=pstD;pstD-pstpre=pstA;pstA-pstNext二pstD;free(pstB);33. 实现从IP地址到以太网MAC地址转换的命令为:C。A、pi ng B、ifconfig C、arp D、traceroute34. 在vi编辑器中的命令模式下,键入B可在光标当前所在行下添 加一新行。A、 B、 C、

12、D、A35. 用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的 类型为A。-rwxr-xr- 1 root root 599 Cec 10 17:12 ffA、普通文件B、硬链接 C、目录D、符号链接36. 删除文件命令为:D。A、mkdir B、rmdir C、mv D、rm37. DHCP是动态主机配置协议的简称,其作用是可以使网络管理员 通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分 配 D 地址。A、网络 B、MAC C、TCP D、IP38. 为了保证在启动服务器时自动启动 DHCP进程,应将A文件中的dhcpd二no 改为 dhcpd二yesA、rc

13、.inet1 B、lilo.conf C、inetd.conf D、httpd.conf39. 对文件进行归档的命令为D。A、dd B、cpio C、gzip D、tar40. 改变文件所有者的命令为C。A、chmod B、touch C、chown D、cat41. 某32位系统下,C程序,请计算sizeof的值(A).char str =“ ”char *p = str ;int n 二 10;请计算sizeof (str ) =?()A、17 B、16 C、15 D、1842. 某32位系统下,C程序,请计算sizeof的值(B)char str =“

14、 ”char *p = str ;int n 二 10;请计算sizeof ( p ) = ()?A、5 B、4 C、6 D、343. 这段程序的输出是(B)void f(char*);mai n()char * argv = ab ,cd , ef ,gh, ij ,kl ;f( argv );void f( char *p )char* t;t=(p+二sizeof(i nt)-1;prin tf(%s,t);A、ab B、cd C、ef D、gh44 .在给定文件中查找与设定条件相符字符串的命令为:AA、grep B、gzip C、find D、sort4

15、5. 建立一个新文件可以使用的命令为D。A、chmod B、more C、cp D、touch46. 在下列命令中,不能显示文本文件内容的命令是:D。A、more B、less C、tailD、join47. 文件权限读、写、执行的三种标志符号依次是A。A、rwx B、xrw C、rdx D、srw48. Linux文件名的长度不得超过 C个字符。A、64 B、128 C、256 D、51249. 进程有三种状态:CA准备态、执行态和退出态B精确态、模糊态和随机态C运行态、就绪态和等待态 D手工态、自动态和自由态50. crontab文件由六个域组成,每个域之间用空格分割,其排列如下:BA、M

16、IN HOUR DAY MONTH YEAR COMMANDB、MIN HOUR DAY MONTH DAYOFWEEK COMMANDC、COMMAND HOUR DAY MONTH DAYOFWEEKD、COMMAND YEAR MONTH DAY HOUR MIN二简答题1、简述堆和栈的区别答:栈是编译器自动分配和释放,申请空间小,申请速度快,向低地 址扩展的连续区域,存放内容多数有自动进行。堆是程序员申请和释放,申请空间较大,相对较慢,向高地址扩 展的不连续区域,存放内容程序员自己安排。2、栈和队列有何区别?答:1、队列先进先出,栈先进后出2、队列一口插入一口删除,而栈都是一个口3、遍

17、历数据的速度不同,栈需要开辟空间来遍历数据,而队列 只需要指针完成。3、TCP和UDP之间的区别?答:TCP传输控制协议,是一个基于连接的可靠的字节流服务,双 方交换数据是必须先建立连接,才能传输数据。超时重发,数据校验, 丢弃重复数据,保证数据从一端传到另一端。UDP:用户数据报协议,是一个简单的面向数据报的运输层协议, 不可靠,效率高。4、进程和线程的区别?答:1、线程是组成进程的基本单位。2、进程有独立的地址空间,线程也有一些自己的堆栈和局部变 量,但是线程没有独立地址空间,一个进程死掉,整个程序就死掉5、进程间通信的方式都有哪些,有何区别?答:1、管道,socket,共享内存,消息队列

18、,信号量级2、共享内存:效率非常高6、哪些情况会导致内存泄露?如何避免内存泄露?答:1、堆内存泄露,一般是指 malloc, realloc. New,而未对应的用 free 或 delete 释放。2、系统资源泄漏,指程序使用系统分配的资源或函数,如socket, handle等,而未用相应的函数释放掉。避免方法:养成良好的编码习惯,在涉及内存代码编写时要谨慎。7、声明和定义的区别?答:声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器 并不会为它分配任何内存。而定义就是分配了内存。8、int(*a1O)(int)表示什么?答:int (*s10)(int)函数指针数组,每个指针指向

19、一个int func(intparam )的函数。9、gdb调试的用法?以file.c为例答:编译gcc -g file.c -o file,然后gdb file运行即可进入GDB调试环 境,这时可以设置断点进行跟踪调试例如:break main然后run,接下 来next (简称n),回车就直接默认前一个命令,可以打印变量或指 针值print i,遇见函数输入step会进入函数执行,否则不进入。10、关键字static的作用是什么?答:关键字static有三个明显的作用:1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维 持其值不变。2) 在模块内(但在函数体内),一个被声明为静

20、态的变量可以被模块 内所用函数访问,但不能被模块外其他函数访问。它是一个本地的全 局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函 数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。11、inline与宏的区别答:宏:预处理阶段不经过安全检查直接替换,不可以对数据成员进 行操作。Inline:编译器经过安全检查之后替换函数调用,既提高代码效率,又经过安全检查,而且还可以对数据成员进行操作。12、有关内存的思考题void GetMemory(char *p) char *GetMemory(void) p = (char *)malloc(100);char p

21、 = hello world;return p;void Test(void)void Test(void)char *str = NULL;GetMemory(str);char *str = NULL;strcpy(str, hello world);str = GetMemory();prin tf(str);pr in tf(str);请问运行Test函数会有什么样的结果?请问运行Test函数会有什么样的结果?答:程序崩溃。答:可能是乱码。因为GetMemory并不能传递动态内存,因为GetMemory返回的是指向栈内存”的Test函数中的str 一直都是 NULL。指针,该指针的地址

22、不是 NULL,但其原现的strcpy(str, hello world);将使程序崩溃。内容已经被清除,新内容不可知。void GetMemory2(char *p, intvoid Test(void)num)char *str = (char *) malloc(100);*p = (char *)malloc (nu m);strcpy(str, hello”);free(str);void Test(void)if(str != NULL)char *str = NULL;strcpy(str, world ”);GetMemory(&str, 100);pr in tf(str);

23、strcpy(str, hello);prin tf(str);请问运行Test函数会有什么样的结果?请问运行Test函数会有什么样的结果?答:篡改动态内存区的内容,后果难以预料,答:非常危险。(1 )能够输出hello因为free(str);之后,str成为野指针,(2 )内存泄漏if(str != NULL)语句不起作用。13.写一个 标准”宏,这个宏输入两个参数并返回较小的一个。 答案:#defi ne Min(X, Y) (X)( Y) ?(Y) :(X)14. 什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含

24、文件和相 同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预 编译头。15. 请问以下代码有什么问题:int mai n()char a;char *str 二&a;strcpy(str,hello);prin tf(str);return 0;答案:没有为str分配内存空间,将会发生异常问题出在将一个字符 串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。16. 关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。17. 交换两个变量的值,不使用第三个变量。即a=3,b=5交换

25、之后 a=5,b=3;答案:有两种解法,一种用算术算法,一种用八(异或)a = a + b; b = a - b; a = a - b; or a = aAb;/ 只能对 int,char. b = aAb; a = aAb; or a A= b A= a;18、 嵌入式系统中经常要用到无限循环,你怎么用C编写死循环?答案:第一方案:while(1);第二方案:for(;);第三个方案是用 gotoLoop:goto Loop;19、用变量a给出下面的定义a) 一个整型数(An integer )b) 一个指向整型数的指针(A poi nter to an in teger )c) 一个指向指

26、针的的指针,它指向的指针是指向一个整型数( Apointer to a pointer to an intege)rd) 一个有10个整型数的数组(An array of 10 integers )e) 一个有10个指针的数组,该指针是指向一个整型数的。(An arrayof 10 poin ters to in tegers)f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 in tegers )g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an intege

27、r as an argument and retur ns an in teger)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an in teger argume nt and retur n an in teger)答案:a) int a; / An in tegerb) int *a; / A poin ter to an in tegerc) int *a; / A poin ter to a poin ter to an in tegerd)

28、int a10; / An array of 10 in tegerse) int *a10; / An array of 10 poin ters to in tegers等价于 int *(a10);f) int (*a)10; / A pointer to an array of 10 integersg) in t (*max_fu ncti on )(i nt a); / A poin ter to a fun cti on a that takes an in teger argume nt andretur ns an in tegerh) in t (*a10)(i nt);

29、/ An array of 10 poin ters to fun cti ons that take an in teger argume nt andretur n an in teger20、简述嵌入式Linux系统开发流程。答案:1.操作系统的裁剪。2.嵌入式操作系统内核的配置和编译。3. 文件系统的建立。4用户程序的编写和简单的仿真调试。5.整体系统的目标板仿真调试。6.系统下载和脱机运行。三.编程题。1.在Linux操作系统下,完成下列任务:编程实现以下功能主程序 hello.c(打印 Hello World!)主程序通过头文件hello.h调用message函数头文件hello.

30、h(声明message函数)message函数由 message.c定义(打印 This is a message )参考答案:hello.c:# in clude # in clude # in clude # in clude head.hint mai n (int argc,char *argv)pri ntf(Hello World!n);message();return 0;head.h:void message(void);message.c:# in clude void message (void)pri ntf(This is a message! n);2假定你在目录/home/arm下有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论