2022年嵌入式经典面试题 .pdf

上传人:C****o 文档编号:34269800 上传时间:2022-08-15 格式:PDF 页数:6 大小:61.97KB
返回 下载 相关 举报
2022年嵌入式经典面试题 .pdf_第1页
第1页 / 共6页
2022年嵌入式经典面试题 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年嵌入式经典面试题 .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式经典面试题 .pdf(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、嵌入式经典面试题六:关键字 static 的作用是什么?这个简单的问题很少有人能回答完全。在C 语言中,关键字static 有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。嵌入式经典面试题八:关键字 volatile有什么含意 ? 并给出三个不同的例子。一个定义为 volatile 的变量是说这变量可

2、能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile 变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3) 多线程应用中被几个任务共享的变量1)一个参数既可以是const还可以是 volatile吗?解释为什么。2); 一个指针可以是volatile 吗?解释为什么。下面是答案:1)是的。一个例子是只读的状态寄存器。它是volatile 因为它可能被

3、意想不到地改变。它是const 因为程序不应该试图去修改它。2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer 的指针时。1.static变量和 static 函数各有什么特点?static 变量分两种,局部变量和全局变量,他们都放在全局数据区(我觉得表达不准确。全局静态变量本文件可见,局部静态变量在在定义的block 内可见; static 函数也放在全局数据区,外部文件不可见;3.描述一下嵌入式基于ROM 的运行方式基于ram 的运行方式有什么区别rom 运行方式是指指令从rom 中取出,首先对rom 有一定要求 (例如按block 进行读写 nand

4、 flash 就不支持 rom 运行,同时由于rom 读写的限制,无法完成异常处理,即异常处理函数肯定放在ram 中) 。在有区别就是片选不一样。4.task 有几种状态? 就绪、挂起、阻塞、睡眠、运行5.task 有几种通讯方式?共享内存、信号量、消息队列和管道、socket 6.C 函数允许重入吗?函数的重入和不可重入是和函数本省有关的,例如一个字符串拷贝的函数就是可重入的 ,而一个在函数中调用了I/O,分配内存是就可能是不重入的,是否重入要看调用的库函数是否重入的.现在 Windows 平台下的 C 库已经支持多线程了,所以如果你调用的是多线程版的C 运行库 ,应该都是可重入的. 7.嵌

5、入式操作系统和通用操作系统有什么差别?多优先级,抢占型,实时操作系统。嵌入式操作系统一名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 般没有 UI,体积小,实时性强,对稳定性要求更高。嵌入式操作系统强调实时性,并且可裁减。要求系统资源的消耗要尽可能的小。如何在 C中初始化一个字符数组。这个问题看似很简单, 但是我们要将最简单的问题用最严谨的态度来对待。关键的地方:初始化、字符型、数组。最简单的方法是char array;。这个问

6、题看似解决了,但是在初始化上好像还欠缺点什么,个人认为:char array5=1,2,3,4,5;或者 char array5=12345;或者 char array210=China,Beijing;也许更符合 “初始化”的意思。2、 如何在 C中为一个数组分配空间。最简单的方法是:char array5;意思是分配给数组array一个 5 个字节的空间。但是我们要知道在C中数组其实就是一个名字,其实质含义就是指针,比如char array;是到底分配的多少空间?所以我们要将其分成为两种不同的形式给出答案:一种是栈的形式:char array5;一种是堆的形式:char *array; a

7、rray=(char *)malloc(5);/C+: array=new char5; 堆和栈的含义其实我也没弄太透彻,改天明白了再发一篇。我们要明白的是,第一种形式空间分配的大小可能会受操作系统的限制, 比如 windows会限制在2M ;第二种形式成空间分配很灵活,想分配多少分配多少,只要RAM 够大。3、 如何初始化一个指针数组。首先明确一个概念,就是指向数组的指针,和存放指针的数组。指向数组的指针:char (*array)5;含义是一个指向存放5 个字符的数组的指针。存放指针的数组:char *array5;含义是一个数组中存放了5 个指向字符型数据的指针。按照题意,我理解为初始化

8、一个存放指针的数组,char *array2=China,Beijing;其含义是初始化了一个有两个指向字符型数据的指针的数组,这两个指针分别指向字符串China 和Beijing。4、如何定义一个有10 个元素的整数型指针数组。既然只是定义而不是初始化,那就很简单且没有争议了:int *array10;。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 5、 s10的另外一种表达方式是什么。前面说过了,数组和指针其实是数据存在形

9、态的两种表现形式,如果说对于数组s ,我们知道 *s=s0,那么 s10 的另一种表达方式就是:*(s+10) 。6、 GCC3.2.2 版本中支持哪几种编程语言。这个问题实在变态,就像问你 #error的作用是什么一样。不可否认, gcc 是 linux下一个亮点,是一个备受无数程序员推崇的编译器,其优点省略1000 字,有兴趣可以自己查,我翻了翻书,书上曰:支持C,C+,Java,Obj-C,Ada,Fortran,Pascal,Modula-3等语言,这个“等”比较要命,不过我认为已经很全了,如果认为还是不全,干脆把ASM 也加上算了,不过那已经不算是编译了。7、 要使用 CHAR_BI

10、T需要包含哪个头文件。如果结合上面的问题,答题的人估计会认为自己撞鬼了,这个问题实在是 , 搜索了一下,应该是limits.h。8、 对(-1.2345)取整是多少?其实不同的取整函数可能有不同的结果,不过这个数没有太大的争议,答案是-1 。9、 如何让局部变量具有全局生命期。具体的生命期的概念我觉得我还要好好深入的学习一下,但是这个题目还算比较简单,即用 static修饰就可以了,但是只是生命期延长,范围并没有扩大,除非把这个变量定义在函数体外的静态区,不过那样就变成全局变量了,仿佛不符合题目要求。10、 C中的常量字符串应在何时定义?这个问题说实话不是很理解题干的意思,据我理解,有两种情况

11、,一种是预处理阶段,用#define定义;还有就是使用const 修饰词,不过 const 修饰的是一个变量,其含义是“只读”,称之为常量并不准确,但是确实可以用操作变量的方法当常量用。所以还是第一种比较靠谱。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 11、如何在两个 .c 文件中引用对方的变量。这个问题也问的挺含糊的,怎么说呢,最简单最直接的方法是为变量添加extern修饰词,当然,这个变量必须是全局变量。还有一种就是利

12、用函数调用来进行变量的间接引用,比如这个C文件中的一个函数引用另外一个C中的函数,将变量通过实参的形式传递过去。不过题目既然说是引用,那么还是用第一个答案好了。12、使用 malloc 之前需要做什么准备工作。其实准备工作很多啊,比如你需要一台计算机之类的。玩笑话, 我们首先要知道malloc的用途, 简单的说就是动态的分配一段空间,返回这段空间的头指针。实际的准备工作可以这么分:需要这段空间的指针是否存在,若不存在,则定义一个指针用来被赋值,还要清楚要返回一个什么类型的指针,分配的空间是否合理;如果指针已经存在,那么在重新将新的空间头地址赋值给这个指针之前,要先判断指针是否为NULL ,如果

13、不是要free一下,否则原来的空间就会被浪费,或者出错,free 之后就按照前一种情形考虑就可以了。13、 realloc函数在使用上要注意什么问题。这个函数我也才知道的,汗一个。 据我的初步理解,这个函数的作用是重新分配空间大小,返回的头指针不变,只是改变空间大小。既然是改变,就有变大、变小和为什么改变的问题。变大,要注意不能大到内存溢出;变小,那变小的那部分空间会被征用,原有数据不再存在;为什么改变,如果是想重新挪作他用,还是先free了吧。14、 strtok函数在使用上要注意什么问题。这个问题我不知道能不能回答全面,因为实在是用的很少。这个函数的作用是分割字符串,但是要分割的字符串不能

14、是常量,这是要注意的。比如先定义一个字符串:char array=part1,part2;,strtok的原形是char *strtok(char *string, char *delim);,我们将 , 作为分隔符, 先用 pt=strtok(array,);, 得到的结果print出来就是 part1,那后面的呢,要写成pt=strtok(NULL,);,注意,要用NULL ,如果被分割的字符串会被分成 N段,那从第二次开始就一直要用NULL 。总结起来,需要注意的是:被分割的字符串和分隔符都要使用变量;除第一次使用指向字符串的指针外,之后的都要使用NULL ;注意使用这个函数的时候千万别

15、把指针跟丢了,不然就全乱了。15、 gets 函数在使用上要注意什么问题。这是一个键盘输入函数,将输入字符串的头地址返回。说到要注意的问题,我还是先查名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 了一下网上的一些情况,需要注意的就是gets 以输入回车结束,这个地球人都知道,但是很多人不知道的是,当你输入完一个字符串后,这个字符串可能依然存在于这个标准输入流之中,当再次使用gets 的时候,也许会把上次输入的东西读出来,所以应

16、该在使用之后用fflush(stdin);处理一下, 将输入流清空。 最后也还是要注意溢出的问题。关于这个答案我比较含糊,不知道有没有高人高见?16、 C语言的词法分析在长度规则方面采用的是什么策略?我无语, 闻所未闻啊 , 还是搜索了一下,有一篇文章,地址是:http:/202.117.80.9/jp2005/20/kcwz/wlkc/wlkc/03/3_5_2.htm,是关于词法分析器的。其中提到了两点策略: (1) 按最长匹配原则确定被选的词型;(2) 如果一个字符串能为若干个词型匹配,则排列在最前面的词型被选中。不知道是不是题干的要求,还是其他什么。我乃一介草民,望达人指点迷津!17、

17、 a+b所表示的是什么意思?有什么问题?这个东西 (称之为东西一点都不过分)其实并没有语法错误,按照 C对运算符等级的划分,+的优先级大于 +,那么这句话会被编译器看做:(a+)+(+b),这回明白了吧。有什么问题, 语法上没有问题,有的是道德上的问题!作为一个优秀的程序员,我们要力求语句的合法性和可读性,如果写这句的人是在一个team 里,那么他基本会被打的半死, 最后讨论一下结果:假设a 之前的值是3,b 是 4,那么运行完这个变态语句后,a 的值是 4,b 是5,语句的结果是8。18、如何定义Bool 变量的 TRUE 和 FALSE的值。不知道这个题有什么陷阱,写到现在神经已经大了,一

18、般来说先要把TURE和 FALSE给定义了,使用 #define就可以: #define TURE 1 #define FALSE 0 如果有一个变量需要定义成bool 型的,举个例子:bool a=TURE; 就可以了。19、C语言的 const 的含义是什么。 在定义常量时, 为什么推荐使用const ,而不是 #define 。首先,这个题干抽了10 题回答的一个大嘴巴。关于常量的概念看来我要好好看看书了, 我说过了,const 修饰词可以将一个变量修饰为“只读”,这个就能称为常量么?姑且认为可以。回到题目中,const 是只读的意思,它限定一个变量不允许被改变,谁都不能名师资料总结 -

19、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 改!既然是修饰变量,那么变量的类型就可以丰富多彩,int啊,char 啊,只要 C认识的都可以;但是 #define就不可以了,在预处理阶段缺乏类型检测机制,有可能会出错。还有就是变量可以extern ,但是 #define就不可以。貌似const 还可以节省RAM ,这个我倒是没有考证过。至于const 的用法和作用,有很多,我会总结后发上来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com