1 Star 0 Fork 139

玛卡巴卡 / 嵌入式软件笔试题汇总

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
194-超纲或不重要 12.71 KB
一键复制 编辑 原始数据 按行查看 历史
zhangjing 提交于 2020-03-15 22:09 . [Modify]整理完一部分题目
====
1、C语言的词法分析在长度规则方面采用的是什么策略?
编译原理知识
====
2、gets函数在使用上要注意什么问题。
人机交互,键盘输入,可以应用在工业设备。
这是一个键盘输入函数,将输入字符串的头地址返回。说到要注意的问题,我还是先查了一下网上的一些情况,需要注意的就是gets以输入回车结束,这个地球人都知道,但是很多人不知道的是,当你输入完一个字符串后,这个字符串可能依然存在于这个标准输入流之中,当再次使用gets的时候,也许会把上次输入的东西读出来,所以应该在使用之后用fflush(stdin);处理一下,将输入流清空。最后也还是要注意溢出的问题。
====
3、strtok函数在使用上要注意什么问题。
这个问题我不知道能不能回答全面,因为实在是用的很少。
而且对数据进行高级操作时可以用C++的库,会更好用。
这个函数的作用是分割字符串,但是要分割的字符串不能是常量,这是要注意的。比如先定义一个字符串:char array[]="part1,part2";,strtok的原形是char *strtok(char *string, char *delim);,我们将","作为分隔符,先用pt=strtok(array,",");,得到的结果print出来就是"part1",那后面的呢,要写成pt=strtok(NULL,",");,注意,要用NULL,如果被分割的字符串会被分成N段,那从第二次开始就一直要用NULL。总结起来,需要注意的是:被分割的字符串和分隔符都要使用变量;除第一次使用指向字符串的指针外,之后的都要使用NULL;注意使用这个函数的时候千万别把指针跟丢了,不然就全乱了。
====
4、realloc函数在使用上要注意什么问题。
这个函数我也才知道的,其实一个malloc函数就可以走遍天下了。据我的初步理解,这个函数的作用是重新分配空间大小,返回的头指针不变,只是改变空间大小。既然是改变,就有变大、变小和为什么改变的问题。变大,要注意不能大到内存溢出;变小,那变小的那部分空间会被征用,原有数据不再存在;为什么改变,如果是想重新挪作他用,还是先free了吧。
====
5、 要使用CHAR_BIT需要包含哪个头文件。
如果结合上面的gcc相关的问题,答题的人估计会认为自己撞鬼了,这个问题实在是……搜索了一下,应该是limits.h。
====
6、 GCC3.2.2版本中支持哪几种编程语言。
谁需要知道这个知识点,只要gcc能支持c/c++就可以了,滑稽。
这个问题实在变态,就像问你#error的作用是什么一样。不可否认,gcc是linux下一个亮点,是一个备受无数程序员推崇的编译器,其优点省略1000字,有兴趣可以自己查,我翻了翻书,书上曰:支持C,C++,Java,Obj-C,Ada,Fortran,Pascal,Modula-3等语言,这个“等”比较要命,不过我认为已经很全了,如果认为还是不全,干脆把ASM也加上算了,不过那已经不算是编译了。
====
7、Linux2.4.x有多少种类型的设备文件?分别写出来。
答:还不如问有哪几种类型的驱动呢。
字符设备,块设备,网络设备。
====
8、glibc动态库的搜寻次序是什么?
编译原理
====
9、如果一个CVS项目中,甲添加了一个子目录模块,那么乙在update时是否会自动检出这个新添加的子模块?如果不能,那么你有什么好的解决方案?
考CVS还不如考SVN或者GIT呢,摊手。
====
10、 Makefile。如果有一个简单的Test项目目录如下: # tree Test Test |-- common.h |-- main.cpp |-- test.cpp `-- test.h    
1)使用wildcard、patsubst函数编写一个C++项目的Makefile文件
2)使用automake、autoconfig编写一个支持configure选项的configure.in脚本 
====
11、库。
1)如何知道XSetIMValues这个符号在那个X的库文件中
2)如何读取C++的符号名,更具可读性
3)请解释动态库的soname概念
4)解释在链接时rpath选项的含义 
====
12、编译器与调试器。
1)如何使用gcc得到宏展开的中间代码
2)如何通过gcc在命令行中传入宏定义
3)在那一级优化的情况下,内联函数才真正的内联到代码中
4)gdb的watch命令如何使用,有何缺点
5)gdb中使用什么命令可以显式调用的栈帧,如何查看某个栈帧上的局部变量
6)如何使用gdb调试多进程
7)如何使能/禁止core dump? 这个小题我知道,在应用程序同级目录下执行ulimited -c,core文件用于应用崩溃后找出数据在何处异常的,非常有用,嵌入式应该掌握。
====
13、 编辑工具的使用。
1)如何使用vi进行块拷贝、粘贴、删除的操作
2)如何设置Tab的长度,以及自动缩进的长度
3)如何使用tag进行代码阅读
4)如何在1~10行,有确认的进把所有的RedHat改为RedFlag
5)在SourceNavigator中,如何跳到一个变量的声明处?如何得知光标当前的位置在哪个函数体内?
用虚拟机双系统,用SourceInsight可视化编写代码,vi用的很少,我也只知道Esc :q :q! :w GHJK等一些简单的。
可以改.vimrc文件,上网搜
====
14、如何把标准错误输出,重定向到标准输出上。
答:输入命令2 > &1。
重定向操作符 描述
> 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。
<</strong> 从文件而不是从键盘或句柄读入命令输入。
>> 将命令输出添加到文件末尾而不删除文件中已有的信息。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
| 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;
常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;
====
15、使用ls命令编写一个脚本,实现ls -R,递归列出当前目录下的所有目录、文件。
需要用到的时候再上网搜吧。
====
16、编写一个脚本获得当前系统eth0的IP地址。
可能用ifconfig啥的
====
17、编写一个pipe程序,测试有N个管道,size大小的buffer情况下,pipe的传输性能是多少
互斥,信号量,线程,socket。管道就要上网搜搜了,所以,需要用的时候上网搜呗。
====
18、如果要你改造一把菜刀,使之更加安全,你是否会使用这样的菜刀,为什么
====
19、 列出5种以上你所看过的C编程的书籍,并写简要书评。
说实话我只看过谭浩强的书,其它的C知识都是工作中接触的。
====
20、举一个例子,说明使用assert和防错代码的区别。
====
21、说明C语言中术语"声明""定义""原型"的含义?
====
22、 为什么C语言可以实现printf(char *format, ...)这样可变参数的调用形式?这样有什么缺点?
====
23、C语言的左值(lvalue)和右值(rvalue)的含义是什么?
一个在左边一个在右边。
====
24、关于C语言运算符优先级的记忆技巧是什么?
单目操作 算数操作 逻辑操作 位操作 赋值操作 逗号操作 之类的顺序吧
====
25、指针和数组的区别是什么?
很多功能几乎相同,可以相互转换,指针多了一项指示各种类型变量的功能。
====
26、IPV4分为A B C D E五类地址,写出B类地址与C类知道的范围与子网掩码。D类地址的作用。
答:
B类IP地址范围:128.0.0.0到191.255.255.255
默认的子网掩码:255.255.0.0
C类IP地址的范围:192.0.0.0到223.255.255.255
默认的子网掩码:255.255.255.0
D类地址用于多点广播(Multicast)。
====
27、什么是MMU,MMU的作用
答:
MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址到物理地址的转换. 提供硬件机制的内存访问授权.
现 代的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标. 使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样. 例如MICROSOFT WINDOWS操作系统, 地址4M-2G处划分为用户地址空间. 进程A在地址 0X400000映射了可执行文件. 进程B同样在地址 0X400000映射了可执行文件. 如果A进程读地址0X400000, 读到的是A的可执行文件映射到RAM的内容. 而进程B读取地址0X400000时则读到的是B的可执行文件映射到RAM的内容.
这就是MMU在当中进行地址转换所起的作用.
====
28、已知一个双向链表的节点定义,定义一个函数在节点pPrex之后插入节点pNode
====
29、打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y ”,从第三层起每层依次打印数字0,1,2,3,...
  例子:当N =5,打印出下面的图形:
  X X X X X
  X Y Y Y X
  X Y 0 Y X
  X Y Y Y X
  X X X X X
====
30、多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
 参考答案:
  虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
  而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是 实现多态的关键.
====
31、C++中为什么用模板类。
答:
(1)可用来创建动态增长和减小的数据结构
(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全
(4)它是平台无关的,可移植性
(5)可用于基本数据类型
====
32、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”?
答:
其实现在gcc编译器,用g++命令可以直接编译C和C++混合在一起的代码,没必要加。
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。
====
33、 以前的工作中你参与过哪些项目,详细描述一下。
====
34、 你为什么离职
测试应聘者的求职动机是否合理。重新求职的原因可能因为应聘者原单位的问题,但通过回答可以考察应聘者是否既能客观、委婉地说明原由。
====
35、如何判断一段程序是由C编译器编译的还是由C++ 编译器编译的?
C++编译时定义了_cplusplus,而C编译时定义了_STDC_。
====
36、 main主函数执行完毕后,是否可能会再执行一段代码?给出说明。
会,main函数之前和之后都会执行准备和销毁代码
====
37、There are two int variables: a and b, don't use "if", "?:", "switch" or other judgment statements, find out the biggest one of the two numbers.
方案一:
int max = ((a+b) + abs(a-b))/2;
方案二:
int c = a -b;
c = unsigned (c) >> (sizeof(int)*8 - 1);
====
38、螺旋队列
21 22 ......
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
看清以上数字排列的规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正。例如,7的坐标为(-1,-1),2的坐标为 (0,1),3的坐标为(1,1)。编程实现输入任意一点的坐标(x,,y),输出所对应的数字。
====
39、-1,2,7,28,63,126请问28和126中间那个数是什么?为什么?
答案应该是4^3-1=63
规律是n^3-1(当n为偶数0,2,4)n^3+1(当n为奇数1,3,5)
答案:63
====
40、直接链接两个信令点的一组链路称作什么?
PPP点到点连接
====
41、软件测试都有那些种类?
黑盒:针对系统功能的测试
白盒:测试函数功能,各函数接口
单元测试:模块编写者自测
功能测试:测试人员整体测试
====
42、确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段
====
43、 防火墙是怎么实现的?
====
44、一个农夫发现围成正方形的围栏比长方形的节省4个木桩但是面积一样.羊的数目和正方形围栏的桩子的个数一样但是小于36,问有多少羊?
====
45、a.编写一个递归函数删除一个目录
b.编写一个非递归函数删除一个目录
比较其性能
====
46、 什么是对象?
C++中一切皆对象。
====
10. 8086是多少位的系统?在数据总线上是怎么实现的?
答:8086系统是16位系统,其数据总线是20位。
C
1
https://gitee.com/makabak/embedded_exercise_problems.git
git@gitee.com:makabak/embedded_exercise_problems.git
makabak
embedded_exercise_problems
嵌入式软件笔试题汇总
master

搜索帮助