《嵌入式Linux工程师常见笔试题.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux工程师常见笔试题.docx(9页珍藏版)》请在课桌文档上搜索。
1、北京航天泰容科技嵌入式Iinux笔试题目一、简答题:1 .请写出实现后面几个功能的LinUX命令:显示文件,拷叫删除LsIs-la:-I查看文件所有的信息,-a查看所有的文件,包括隐藏的文件。Cpmnta.copt2 .do”,while和while,do有什么区别?do,while至少执行一次循环体,while,do先判断循环条件再执行循环体。3 .LinUX系统下.ko文件是什么文件?.so文件是什么文件?.so文件是动态链接库文件,相当于Wirl下的.dll文件。.ko是内核模块文件,是内核加载的某个模块,一般是驱动程序。4 .如何使用Vi进行块拷贝、粘贴、删除的操作yy:复制鼠标当前所
2、在行dd:删除鼠标当前所在行nyy/dd:复制/删除鼠标所在行开始的n行P:粘贴复制内容到鼠标所在行G:移动到文件尾大写u:取消前一个动作(大写:q:退出:W:彳踞:wq:保存退出:q!:强行!出:w文件名:另存为如:Whello:setnu:显示行号:setnonu:取消行号5 .在LinUX系统中,用来存放系统所需要的配置文件和子目录的目录是。/etc:该目录下存放各种配置文件。对于PC上的IinUX系统,/etc目录下的目录,文件非常多。6 .如何使用gcc得到宏展开的中间代码Gcc-E*.i*.c- c:编译成把源文件目标代码,不做连接的动作。- s:把源文件编译成汇编代码,不做汇编和
3、连接的动作。- E:只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。7 .如何使用gdb调试多进程答:最常用的是attach方法,首先写程序时在子进程中调用SIeeP函数休眠30-60秒,将程序编译成可执行文件,后台运行可执行文件,ps-furoot查看进程号,gdb,attach进程号,再使用StOP暂停子进程,设置一些断点和一些WatCh,break设置断点,IiSt命令观察源代码,SteP单步运行,next运行下一步,COntinUe继续运行,Print打印变量信息。8 .用户进程间通信主要哪几种方式管道、信号、消息队列、共享内存、信号量、套接字。线程同步的方法主要有:
4、互斥锁(mutex)和信号量9 .解释命令Is-amore具体含义。A:输出所有文件,包括隐藏文件,m:横向输出文件名,并且中间以,号分开,r:列出子目录下的文件,。与-I相似,输出文件的详细信息,不输出组信息。10 .LINUX中的管道指什么,重定向又指什么管道是Iinux中很重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入。11 .请写出以下代码的输出内容#includemain()inta,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b.c,d:%d,%d,%dn,b,c,d);return0;A:13b:10c:12d:120BCd:10,
5、12,12012 .编写一个函数intcharnum(charfn10),该函数以只读方式翻开文件fn,通过统计,返回文件中字符的个数,请使用WhiIe循环实现计数功能。请勿修改主函数main和其他函数中的任何内容,仅在函数CharnUm的花括号中填写假设干语句。文件kt7.2.cpp的内容如下:#include#include#includeintcharnum(charfn10);voidmain()intnum;num=charnum(abc.txtn);coutnum=NUMENDL;)Intcharnum(charfn10)fstreamfile;file.open(fnjos:in
6、);if(!file)cout,abc.txtcantopenendl;abort();charch;inti=0;while(!file.eof()file.get(ch);i+;)file.close();returni-1;)二、编程题13 .如果有一个简单的Test工程目录如下:#treeTestTest1)使用wildcardpatsubst函数编写一个C+工程的Makefile文件14 .编写一个helloworld程序,要求以创立进程的方式打印HelloWorld!#include#include#include#includeMain()PidJresult;Result=fo
7、rkO;If(result=-1)perror(fork);exitO;Elseif(result=0)printf(uhellowoldz,);if(result=0)printf(uhellowoldw);)15 .翻开一个文件,并读取从第100字节开始的50字节数据。ttincludettincldeinclude#defineMAX_LEN4096intmain(intargc,char*argv)(intfd,i;charbufMAX.LEN;for(i=0;iresult.txt10 .请写出5个LINUX根本系统调用的函数名称.包括与设备文件的交互和与普通文件的交互的系统调用(o
8、pen,close,ioctl,create,unlink,.);与进程相关的系统调用又包括进程控制系统调用(fork,exit,getpid,.),11 .描述LlNUX中字符设备驱动的根本编写框架.根据StrUCtfiIjOPerMiOnS的数据结构,填充里面的如:OPen,whte,Closejoctl等函数并进行模块的初始化和退出12 .#includestdio.h,intmain()(fork();printf(helloworld!n);函t(0);编译hello.c生成hello可执行文件在shell中执行#forkhello便可以看到打印结果13 .浅谈bootloader,
9、kelnel,filesystem三者之间的关系.嵌入式是Iinux启动过程如下。bootloader-kernel-filesystem-application先是bootloader,它是IinlJX-kernel移植的基石,BoOtIOader是在系统启动之后、Kemel运行之前所执行的第段代码,其任务是为调用Kernel准备必要的软硬件环境。完成bootlaoder的移植后,就是kernel的移植。主要包括添加特定模块的驱动,针对具体要求对内核进行配置。这里有两点要注意:一是有些参数要与所用的bootloader向对应,如nand的分区参数。二是bootlaoder对特定模块的驱动在进
10、入kernel后便会有kernel接管,并有kernel重新驱动文件系统主要是建立根文件和一些系统功能的实现,如bash。用busybox很容易搞定。3 .Linux系统下.ko文件是什么文件?.so文件是什么文件?LinUX下面文件名不代表什么。但是从常识上讲,.ko代码是驱动编译成的格式,.so文件一般是动态库文件4 .二维数组AA37的另外一种表示方法:*(AA3+7)*(*(AA+1)+7)5 .请写出以下代码的输出内容#includemain()inta,b,c1d;a=10;b=a+;c=+a;printf(,b,c,d:%d,%d,%d,b,c,d);returnO;输出结果为:
11、b,c,d:10,12,120嵌入式面试题一、ANSlC/C+局部简答题1、如何在C中为一个数组分配空间?2、如何初始化一个指针数组?3、s10的另外一种表达方式是什么?4、对(-1.2345)取整是多少?5、如何让局部变量具有全局变量的生命期?6、C中的常量字符串应在何时定义?7、如何在两个C文件中引用对方的变量?8、a+b所表示的是什么意思?有什么问题?问答题1、下面x,y,*p的值是多少,有什么问题?intx,y,z=2;int*p=&z;X=sizeof(*p);y=x*p;2、-一般使用malk是,需要进行强制类型转换,如:char*s;s=(char*)malloc(21);下面中
12、?该如何填写,才可以正确执行强制类型转换?int(*monthp)31;monthp=(?)malloc(31);3、指针和数组的区别是什么?用一个简单的声明把它区分开。指针和数组的声明在什么情况下是相同的?4、C语言的左值(IalUe)和右值(rvalue)的含义是什么?5、说明C语言中术语“声明”定义原型”的含义?6、编写一个函数,输入一个整形数,可以选择按照8/10/16进制输出字符串;7下面是一个16*16的黑白图标:staticunsignedshortstopwatch=16个数);如何修改声明,可以使之在源代码中形象的表现出图像的摸样?分析题此题假设下面代码中的变量都合法,调用外
13、部的函数都正确,答复几个问题:这些代码意图要干什么?是否有问题?如果有问题,该如何修改,或者如何防止类是错误的发生?如果没有问题,如果有输出,输出时什么?I./*X=2,y=3,Z=?*/if(x=0)if(y=0)z=l:elsez=x+y;intis_gb2312_char(charcl,charc2)(if(cl=0xal&c2=Oxal)return1;elsereturnO;)二、PoSIX方面的知识简答题。下面的题目必须全部答对才给分;1、在UNIX环境中,编译流程是什么?2、一般UNIX的程序有多少段,举一个实际的例子说明。3、系统调用和库函数调用有什么区别。在linux2.4.
14、xx上的glibc和newlib(种嵌入式C库)的系统调用有什么不同?4、列出你所知道的2个内存跟踪库设计一个内存跟踪方案,为什么选择这个方案综合编程题1、有一个8MB的文件,编写一个COPy程序,拷贝这个文件,并计算所需要的时间,指出是哪些代码或函数造成速度瓶颈。提示:如果只是用read/Write调用,不是一个好的实现。三、编译器与调试器1、如何使用gcc得到宏展开的中间代码2、如何通过gcc在命令行中传入宏定义3、在哪一级优化的情况下,内联函数才真正的内联到代码中4、gdb的WatCh命令如何使用,有何缺点5、gdb中使用什么命令可以显示调用的栈帧,如何查看某个栈帧上的局部变量6、如何使用gdb调试多线程四、Makefile如果有一个简单的Test工程目录如下:#treetesttest使用WiIdCard、patsubst函数编写一个C+工程的Makefile文件