嵌入式Linux工程师常见笔试题.doc_第1页
嵌入式Linux工程师常见笔试题.doc_第2页
嵌入式Linux工程师常见笔试题.doc_第3页
嵌入式Linux工程师常见笔试题.doc_第4页
嵌入式Linux工程师常见笔试题.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

北京航天泰睿科技有限公司嵌入式linux笔试题目一、 简答题:1 请写出实现后面几个功能的Linux命令:显示文件,拷贝,删除Ls ls -la: -l查看文件所有的信息,-a查看所有的文件,包括隐藏的文件。Cp /mnt/a.c /opt/Rm /mnt/a.c2 dowhile和whiledo有什么区别?dowhile至少执行一次循环体,whiledo先判断循环条件再执行循环体。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:120B,c,d:10,12,12012 编写一个函数int charnum(char fn10),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。 请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。文件kt7_2.cpp的内容如下:#include#include #include int charnum(char fn10); voidmain()intnum;num=charnum(abc.txt);coutnum=NUMENDL;Int charnum(char fn10)fstream file;file.open(fn,ios:in);if(!file)coutabc.txt cant openendl;abort();char ch;int i=0;while(!file.eof()file.get(ch);i+;file.close();return i-1;二、编程题13 如果有一个简单的Test项目目录如下:# tree TestTest|- common.h|- main.cpp|- test.cpp- test.h1)使用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 4096int main(int argc, char *argv) int fd, i; char bufMAX_LEN; for(i=0; iresult.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 的另外一种表示方法: *(AA3+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、 如何在C中为一个数组分配空间?2、 如何初始化一个指针数组?3、 s10的另外一种表达方式是什么?4、 对(-1.2345)取整是多少?5、 如何让局部变量具有全局变量的生命期?6、 C中的常量字符串应在何时定义?7、 如何在两个.C文件中引用对方的变量?8、 a+b所表示的是什么意思?有什么问题? 问答题 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个数 ; 如何修改声明,可以使之在源代码中形象的表现出图像的摸样? 分析题 本题假设下面代码中的变量都合法,调用外部的函数都正确,回答几个问题:这些代码意图要干什么?是否有问题?如果有问题,该如何修改,或者如何避免类是错误的发生?如果没有问题,如果有输出,输出时什么?1./* x =2 ,y = 3,z=? */if(x = 0)if(y = 0)z = -1:elsez = x+y;2.int is_gb2312_char(char c1,char c2)if (c1=0xal &c2=0xal)return 1;elsereturn 0;二、POSIX方面的知识 简答题 。下面的题目必须全部答对才给分;1、 在UNIX环境中,编译流程是什么?2、 一般UNIX的程序有多少段,举一个实际的例子说明。3、 系统调用和库函数调用有什么区别。在linux2.4.xx上的glibc和newlib(一种嵌入式C库)的系统调用有什么不同?4、 列出你所知道的2个内存跟踪库设计一个内存跟踪方案,为什么选择这个方案 综合编程题1、 有一个8MB的文件,编写一个copy程序,拷贝这个文件,并计算所需要的时间,指出是哪些代码或函数造成速度瓶颈。提示:如果只是用read/write调用,不是一个好的实现。三、编译器与调试器1、 如何使用gcc得到宏展开的中间代码2、 如何通过g

温馨提示

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

评论

0/150

提交评论