20个嵌入式工程师常见面试题.docx
《20个嵌入式工程师常见面试题.docx》由会员分享,可在线阅读,更多相关《20个嵌入式工程师常见面试题.docx(11页珍藏版)》请在优知文库上搜索。
1、20个嵌入式工程师常见面试题Q:嵌入式系统中经常要用到无限循环,如何用C编写死循环?A:WhiIe或者for(;)Q:程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里?A:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。Q:关键字ConSt有什么含义?A:1)只读。2)使用关键字ConSt也许能产生更紧凑的代码。3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。Q:请问以下代码有什么问题:intmain()chara;char*str=fea;StrCPy(Str,hello);printf(str);return0;)A:没有
2、为Str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。Q:已知一个数组table,用一个宏定义,求出数据的元素个数A:#defineNTBL(sizeof(table)sizeof(table0)Q:写一个“标准宏MIN,这个宏输入两个参数并返回较小的一个。A:SdefineMIN(A,B)((八)二(B)?(八):(B)考点:1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到
3、要求的性能,嵌入代码经常是必须的方法。2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。3)懂得在宏中小心地把参数用括号括起来。Q:doWhile和While有什么区别?A:前一个循环一遍再判断,后一个判断以后再循环。Q:什么是预编译,何时需要预编译?A:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。Q:一个32位
4、的机器,该机器的指针是多少位?A:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。Q:局部变量能否和全局变量重名?A:能,局部会屏蔽全局。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。Q:引用与指针有什么区别?A:1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的
5、指针。Q:关键字StatiC的作用是什么?A:在C语言中,关键字StatiC有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。Q:StatiC全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?A:全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是
6、静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。static函数与普通函数作用域不
7、同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(Static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。Q:进程之间通信的途径有哪些?A:进程间通信主要通过管道、消息、信号等途径进行。1、无名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2、高级管道(PoPen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。3、有名管道Samedpip
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20 嵌入式 工程师 常见 试题
