嵌入式软件工程师笔试题
嵌入式软件工程师经典笔试题
> 预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。
这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if- then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
嵌入式软件工程师笔试题目
1.编写一个函数,判断处理器是使用Big_endian模式(返回0)还是Little_endian模式(返回1)存储数据[cpp]view plaincopyprint?1. i nt checkCPU()2. {3. union w4. {5. int a;6. char b;7. }c;8. c.a = 1;9.10. return (c.b == 1);11. }/*共用体的所有成员都是从地地址开始存放的.2.判断单链表是否存在环形链表问题[cpp]view plaincopyprint?1. b ool IsLoop(node *head,node **start)2. {3. node *p1 = head, *p2 = head;4.5. if(head == NULL || head->next == NULL)6. {7. return false;8. }9. do10. {11. p1 = head->next;12. p2 = head->next->next;13. }while(p2 && p2->next && p1 != p2);14. if(p1 == p2)15. {16. *start = p1;17. return true;18. }19. else20. return false;21. }3.计算一个无符号32位整型(unsigned int)的bit有多少位为1或0 [cpp]view plaincopyprint?1. i nt caculate_bit(unsigned int num)2. {3. unsigned int mask = 1 << 31;4. int n = 0;5. int i;6.7. for(i = 0; i < 32; i++)8. {9. if(num & mask)10. {11. n++;12. }13. num <<= 1;14. }15.16. return n;17. }4.保证malloc和free成对出现[cpp]view plaincopyprint?1. c har * function(void)2. {3. char *p;4. p = (char*)malloc(…);5. if(p==NULL)6. …;7. … /* 一系列针对p 的操作 */8. return p;9. }在某处调用function(),用完function 中动态申请的内存后将其free,如下:char *q = function();…free(q);上述代码明显是不合理的,因为违反了malloc 和free 成对出现的原则,即"谁申请,就由谁释放"原则。
嵌入式笔试题目
1、在嵌入式系统中,以下哪个组件负责执行程序指令?
A. 内存
B. 中央处理器(CPU)
C. 输入/输出设备
D. 存储设备(答案:B)
2、以下哪种类型的存储器在掉电后会丢失数据?
A. SRAM
B. DRAM
C. Flash ROM
D. EEPROM(答案:B)
3、在嵌入式系统设计中,I2C总线主要用于什么类型的通信?
A. 高速数据传输
B. 低速串行通信
C. 并行数据传输
D. 高频信号处理(答案:B)
4、下列哪个协议是用于网络通信,特别是嵌入式设备与互联网之间的通信?
A. SPI
B. I2C
C. TCP/IP
D. UART(答案:C)
5、在嵌入式Linux系统中,Bootloader的主要作用是?
A. 加载并启动操作系统内核
B. 提供图形用户界面
C. 管理系统文件
D. 执行应用程序(答案:A)
6、以下哪种编程语言常用于嵌入式系统的底层开发?
A. Python
B. Java
C. C/C++
D. JavaScript(答案:C)
7、在嵌入式系统中,中断的作用是什么?
A. 提高系统处理速度
B. 使系统进入低功耗模式
C. 允许CPU在处理其他任务时响应外部事件
D. 增加系统内存(答案:C)
8、下列哪项技术不是用于降低嵌入式系统功耗的?
A. 睡眠模式
B. 动态电压和频率调整(DVFS)
C. 增加处理器核心数量
D. 定时唤醒机制(答案:C)。
嵌入式笔试题
嵌入式笔试题在当今科技快速发展的背景下,嵌入式系统成为人们日常生活中不可或缺的一部分。
嵌入式系统广泛应用于智能手机、可穿戴设备、汽车电子、家用电器等各个领域。
为了提高嵌入式系统的工程能力,以下是一些嵌入式系统相关的笔试题目,帮助大家巩固相关知识。
一、单项选择题1. 软件开发中,以下那种语言属于编译型语言?A. PythonB. C++C. JavaScriptD. Ruby2. 嵌入式系统可以分为硬件和软件两部分。
以下哪一项属于嵌入式系统的软件部分?A. CPUB. RAMC. 操作系统D. 电源3. 在嵌入式系统中,以下哪一种通信协议被广泛应用于设备间的数据传输?A. HTTPB. FTPC. USBD. DNS4. 嵌入式系统中最常用的开发语言是什么?A. CB. PythonC. JavaD. Ruby5. 在嵌入式系统的开发过程中,以下哪个阶段主要涉及硬件设计?A. 需求分析B. 软件开发C. 硬件设计D. 测试与验证二、填空题1. 嵌入式系统是一种______________的计算机系统。
2. 嵌入式系统通常由______、__________和________组成。
3. 常用的嵌入式操作系统有____________、_________、__________等。
4. 在嵌入式系统中,CPU的作用是______________。
5. 嵌入式系统的节能设计可以通过_______________实现。
三、简答题1. 请简要解释什么是中断?2. 嵌入式系统中的RTOS是什么意思?简述其作用。
3. 请简要解释什么是嵌入式系统的实时性要求?4. 嵌入式系统的可靠性是指什么?如何提高嵌入式系统的可靠性?5. 嵌入式系统的性能指标有哪些?请列举并解释。
四、编程题请使用C语言编写一个简单的嵌入式系统应用程序,在LCD显示屏上循环显示数字1到9,每个数字显示1秒钟,然后重复该过程。
附加题:请将上述应用程序在实际的硬件平台上进行调试和运行。
(完整word版)嵌入式软件工程师笔试题
笔试题1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.c/2*(a+b)参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
2:为了向二进制文件尾部增加数据,打开文件的方式应采用A.″ab″B.″rb+″C.″wb″D.″wb+″参考答案:D3:下述程序执行后的输出结果是#includemain(){int x=’f';printf(“%c\n”,’a’+(x-‘a’+1));}A.gB.hC.iD.j参考答案:A4:C语言中,下列运算符优先级高的是A.!B.%C.>>D.= =参考答案:A5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*aB.a [ 0 ]C.aD.a++参考答案:D6:执行语句“ k=7>>1; ”后,变量 k 的当前值是A.15B.31C.3D.1参考答案:C7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型A.voidB.charC.floatD.int参考答案:D8:若main()函数带参数,参数个数多是A.0B.1C.2D.3参考答案:C 只知道有定义形式main(int argc,char* argv[])) 9:若有宏定义:#define MOD(x,y) x%y则执行以下语句后的输出结果是int a=13,b=94;printf(″%d\n″,MOD(b,a+4));A.5B.7C.9D.11参考答案:B10:下列各个错误中,哪一个不属于编译错误A.改变 x 原值 3 为 5 ,写作“ x==5 ;”B.花括号不配对C.复合语句中的后一条语句后未加分号D.变量有引用、无定义11:下列程序段运行后, x 的值是( )a=1;b=2;x=0;if(!( — a))x — ;if(!b)x=7;else ++x;A.0B.3C.6D.7参考答案:A12:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是A.defB.dC.eD.0参考答案:C14:下列转义字符中错误的是A.′\000′B.′\14′C.′\x111′D.′\2′参考答案:C error C2022: ‘273’ : too big for character15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算16:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B17:表达式strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个A.非零整数B.浮点数C.0D.字符参考答案: A18:设struct{ short a;char b;float c;}cs;则sizeof(cs)的值是A.4B.5C.6D.7参考答案: D 字节对齐的话应该是819:若变量已正确定义,表达式( j=3 , j++ )的值是A.3B.4C.5D.0参考答案:A20:C 语言中运算对象必须是整型的运算符是A.%B./C.!参考答案:A21:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?22:01 #include0203 void main()0405 { int c;0607 while ((c=getchar())!= ′\ n ′ )0809 switch(c - ′ 2 ′ )1011 { case 0:1213 case 1:putchar(c+4);break;1415 case 2:putchar(c+4);break;1617 case 3:putchar(c+3);break;1819 default:putchar(c+2);break;2021 }2223 printf( ″\ n ″ );2425 }运行时输入: 2473 ,输出结果:参考答案:6897 VC++6.0测试过23:写一语句实现x是否为2的若干次幂的判断。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)
招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在C语言中,volatile关键字的主要作用是什么?A. 使变量成为全局变量B. 告诉编译器该变量可能会被外部因素改变,从而阻止优化C. 使变量成为常量D. 加快变量访问速度2、关于ARM架构处理器,以下哪个描述是正确的?A. ARM架构处理器仅支持32位指令集B. 所有的ARM处理器都支持Thumb-2技术C. ARM处理器采用的是RISC设计理念D. ARM处理器不能运行Linux操作系统3、嵌入式软件开发岗位笔试题及解答(某大型国企)一、单项选择题(每题2分,共20分)3、以下哪个不是嵌入式系统设计中常用的实时操作系统(RTOS)?A. VxWorksB. LinuxC. FreeRTOSD. Windows CE4、在嵌入式软件开发中,以下哪个概念不是用于描述硬件和软件之间接口的标准?A. 总线协议B. 寄存器映射C. 驱动程序D. API5、在ARM架构中,哪个寄存器通常被用作链接寄存器来保存子程序返回地址?A. R0B. R13 (SP)C. R14 (LR)D. R15 (PC)6、关于嵌入式系统的实时性,下列说法正确的是:A. 实时系统必须保证所有任务都能在指定的时间内完成B. 实时系统仅关注任务的平均响应时间C. 软实时系统对响应时间的要求比硬实时系统更加严格D. 实时系统中,任务的优先级可以根据任务的紧迫程度动态调整7、以下哪个协议不属于嵌入式系统中常用的网络通信协议?A. TCP/IPB. CAN(Controller Area Network)C. BluetoothD. SPI(Serial Peripheral Interface)8、在嵌入式软件开发中,以下哪个概念通常用来描述硬件和软件之间的接口?A. 驱动程序B. 硬件抽象层(HAL)C. 用户界面(UI)D. 操作系统内核9、在嵌入式系统开发过程中,以下哪种编程语言通常被认为最适合用于硬件抽象层(HAL)的开发?A. JavaB. C++C. CD. Python 10、以下关于ARM架构的描述,哪一项是正确的?A. ARM架构是一种RISC(精简指令集计算机)架构。
嵌入式工程师笔试试卷及答案
嵌入式工程师笔试试卷及答案在嵌入式系统领域,嵌入式工程师是一种非常重要的职业。
他们需要掌握硬件和软件技能,以及在资源受限的环境下进行开发的技能。
本试卷旨在测试嵌入式工程师的专业知识和技能。
第一部分:选择题这一部分包括5个选择题,每个问题有4个选项,只有一个选项是正确的。
这部分的目的是测试对嵌入式系统的基础知识的掌握。
下列哪个不是嵌入式系统的特点?A. 硬件资源受限B. 实时性要求高C. 软件开发成本低D. 系统可靠性要求高答案:C下列哪个不是嵌入式系统中常用的总线标准?A. USBB. I2CC. RS232D. HDMI答案:D下列哪个不是C语言的关键字?A. switchB. caseC. classD. break答案:C下列哪个不是常用的编译器?A. GCCB. KeilC. IARD. Visual Studio答案:D下列哪个不是常用的调试工具?A. JTAGB. GDBC. SVND. Trace32答案:C第二部分:简答题这一部分包括2个简答题,每个问题需要回答2-3个句子。
这部分的目的是测试对嵌入式系统的基本原理和通信协议的理解。
什么是中断?中断的作用是什么?答:中断是指在CPU运行程序的过程中,由于某些事件的发生,需要立即暂停当前程序的执行,转而去执行另一段代码的一种机制。
中断的作用是提高CPU 的利用率,增强系统的实时性和可靠性,实现CPU与外设的异步通信。
请简述I2C总线的工作原理。
答:I2C总线是一种串行通信协议,通过两根线SCL和SDA实现设备间的通信。
SCL线是时钟线,由主设备控制;SDA线是数据线,用于主设备和从设备之间的数据传输。
在传输数据时,主设备先发送起始信号,然后发送从设备地址和读/写标志,接着发送数据或者请求数据,最后发送停止信号。
从设备在接收到起始信号后,会根据地址来判断是否需要响应主设备的请求。
第三部分:编程题这一部分包括2个编程题,需要在规定的环境下编写代码。
嵌入式工程师笔试题
1.在嵌入式系统中,常用于存储启动代码和关键数据的存储器类型是?
A.SRAM
B.DRAM
C.Flash存储器(答案)
D.SDRAM
2.下列哪项不是嵌入式操作系统的特点?
A.实时性强
B.可裁剪
C.资源丰富,占用空间大(答案)
D.可靠性高
3.在嵌入式系统开发中,用于描述硬件设备的结构和功能的语言是?
A.C语言
B.HDL(硬件描述语言)(答案)
C.Java
D.Python
4.下列哪种通信接口在嵌入式系统中常用于低速、短距离的数据传输?
B
B.SPI(答案)
C.Ethernet
D.HDMI
5.嵌入式系统开发中,常用于调试和程序下载的接口是?
A.GPIO
B.UART(答案)
C.I2C
D.PWM
6.下列哪项不是嵌入式系统设计中需要考虑的实时性因素?
A.响应时间
B.吞吐量
C.延迟时间
D.代码美观性(答案)
7.在嵌入式Linux系统中,用于管理系统资源和提供程序运行环境的层是?
A.Bootloader
B.Kernel(答案)
C.Filesystem
D.Shell
8.下列哪种工具不是嵌入式系统开发中常用的交叉编译工具?
A.arm-linux-gcc
B.gcc(答案)
C.arm-none-eabi-gcc
D.x86_64-linux-gnu-gcc。
嵌入式软件开发岗位招聘笔试题及解答(某大型国企)2025年
2025年招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、在嵌入式软件开发中,以下哪个不是常见的硬件接口?A. SPI接口B. USB接口C. UART接口D. I2C接口2、嵌入式系统中,下列哪种编程语言最适合用于开发实时操作系统?A. JavaB. PythonC. C++D. JavaScript3、嵌入式系统中,以下关于ARM架构描述错误的是:A. ARM架构低功耗、高性能B. ARM架构主要用于移动计算和嵌入式领域C. ARM架构不支持多媒体和DSP功能D. ARM架构具有灵活的技术授权模式4、在嵌入式软件开发中,关于实时操作系统的描述错误的是:A. 实时操作系统具有高度的响应性和确定性B. 实时操作系统主要应用于实时性要求不高的场景C. 实时操作系统可以确保任务的及时完成和响应需求D. 实时操作系统常用于工业控制、医疗设备等领域5、在嵌入式软件开发中,以下哪种编程语言因其高性能和对低级硬件的控制能力而被广泛使用?A. PythonB. JavaC. CD. JavaScript6、嵌入式系统的核心特点是:A. 计算机视觉B. 无线通信C. 实时响应D. 数据存储7、在嵌入式软件开发中,以下哪个选项是实时操作系统的特点?A. 具有固定的时间表B. 可以根据需要动态调整任务优先级C. 仅适用于单处理器系统D. 不支持多任务处理8、在嵌入式系统中,通常使用哪种类型的存储器?A. 硬盘驱动器C. 光盘D. 闪存9、嵌入式软件开发中,关于内存管理的说法错误的是:A. 动态内存分配是指在程序运行时动态地分配或释放内存。
B. 静态内存分配在程序开始运行时进行,并在程序结束时释放。
C. 内存泄漏是指分配给程序的内存没有得到及时回收,导致内存占用持续增长。
D. 为了避免内存溢出,应该尽可能多地分配内存空间。
10、关于嵌入式系统的说法,错误的是:A. 嵌入式系统通常运行在特定硬件平台上,并对硬件环境有较强依赖性。
嵌入式软件工程师笔试题
嵌入式软件工程师笔试题1、将一个字符串逆序2、将一个链表逆序3、计算一个字节里(byte)里面有多少bit被置14、搜索给定的字节(byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串1、c51单片机的串口异步通信和同步通信的区别,说说他们的优缺点。
2、C51单片机的数据总线和地址总线是如何复用的,说明原理。
3、C51单片机的绝对寻址范围是多少k?4、说明下面的寻址方式(1)MOV A , #30H (2)MOV A,@R0(3)ADD A , R4 (4)MOV A+@DPTR 5、写出下面分别是什么指针?(1)int *a[10]; (2)int (*a)[10];(3)int (*P)(int) ; (4)int (*a[10])(int);6、void swap(int a,int b){int temp;temp = a;a=b;b=temp;}main(void){int x="3",y=4;swap(x,y);}问上面程序执行完后x= ?,y=?7、typedef struct test{int i;short s;char c;union{int a;short b;}}example ;int y ;y = sizeof(example);请问在TC环境下,y=?8、编程实现数组的逆置,例如,“hello,world!”逆置后为“!dlrow,olleh”。
9、你认为嵌入式操作系统包括哪些部分?说说实时操作系统有哪些特点。
10、冯诺依曼结构的计算机由哪几部分组成?11、说说程序,进程,线程的区别。
12、说说你怎样理解程序= 数据+ 结构+ 算法13、根据函数原型编程实现一个数组,按从大到小的冒泡排序。
void tibbule(int a[],int n);//a[]为数组,n为数组长度14、OSI有哪几层?tcp/ip包括哪几层?15、编程实现一个双链表的节点插入和删除。
嵌入式软件 笔试题
嵌入式软件工程师笔试题姓名:得分:一、常识理论题1、简述嵌入式操作系统有哪些,你用过哪几种,简述其特点、优势及劣势?(5分)2、请描述控制及提高嵌入式软件质量有哪些办法,在开发过程中怎么才能保证嵌入式软件的可靠性?(5分)3、你认为在嵌入式开发过程中需要哪些过程控制文档?(5分)4、用变量a给出下面的定义。
(8分)a)一个整型数(An integer)b)一个指向整型数的指针(A pointer to an integer)c)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to aninteger)d)一个有10个整型数的数组(An array of 10 integers)e)一个有10个指针的数组,该指针是指向一个整型数的。
(An array of 10 pointers tointegers)f)一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to afunction that takes an integer as an argument and returns an integer)h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )5、在嵌入式系统中,动态分配内存可能发生的问题是什么?请给出下面这段代码的输出结果。
(10分)char *ptr;if ((ptr = (char *)malloc(0)) ==NULL)puts("Got a null pointer");else puts("Got a valid pointer");6、请解释下面这段语句的意思及区别?(10分)#define dPS struct s *typedef struct s * tPS;dPS p1,p2;tPS p3,p4;7、请解释关键字static、const、volatile各自的含义及作用,请解释下面这个函数有什么错误?(10分)int square(volatile int *ptr){return *ptr * *ptr;}8、请指出下面代码是什么意思,指出其中的错误。
嵌入式软件笔试题(含答案)
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
22:谈谈COM的线程模型。然后讨论进程内/外组件的差别。
23:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
参考答案:
虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
A.15
B.31
C.3
D.1
参考答案:C
7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
DHale Waihona Puke int 参考答案:D 8:若main()函数带参数,参数个数最多是
A.0
B.1
C.2
D.3
参考答案:C 只知道有定义形式main(int argc,char* argv[]))
#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出错
参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉
13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是
(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),
26:写一语句实现x是否为2的若干次幂的判断。
嵌入式工程师测试题及答案
嵌入式工程师测试题及答案一、单项选择题(每题2分,共20分)1. 在嵌入式系统中,以下哪个不是实时操作系统的特点?A. 多任务B. 多用户C. 确定性D. 可预测性答案:B2. 下列哪种编程语言通常不用于嵌入式系统开发?A. C语言B. PythonC. C++D. Java答案:B3. 以下哪个设备不是嵌入式系统?A. 智能手机B. 微波炉C. 个人电脑D. 智能手表答案:C4. 在嵌入式系统中,中断服务程序的主要作用是什么?A. 处理用户输入B. 管理文件系统C. 响应外部事件D. 执行操作系统任务答案:C5. 以下哪个协议不是用于嵌入式设备网络通信的?A. TCP/IPB. HTTPC. BluetoothD. USB答案:B6. 在嵌入式系统中,以下哪种存储器不是易失性的?A. SRAMB. DRAMC. EEPROMD. Flash答案:C7. 在嵌入式系统中,以下哪个概念与硬件无关?A. 时钟周期B. I/O端口C. 寄存器D. 函数答案:D8. 在嵌入式系统中,以下哪个是操作系统的组成部分?A. 编译器B. 汇编器C. 内核D. 链接器答案:C9. 嵌入式系统中的设备驱动程序的主要功能是什么?A. 管理内存分配B. 管理文件系统C. 提供硬件与操作系统之间的接口D. 执行系统调用答案:C10. 在嵌入式系统中,以下哪个不是操作系统的任务?A. 进程管理B. 内存管理C. 硬件管理D. 编译源代码答案:D二、多项选择题(每题3分,共15分)1. 在嵌入式系统开发中,以下哪些是常用的调试工具?A. 逻辑分析仪B. 调试器C. 编译器D. 仿真器答案:ABD2. 以下哪些是嵌入式系统中常用的通信接口?A. UARTB. SPIC. USBD. HDMI答案:ABC3. 在嵌入式系统中,以下哪些是常用的外设?A. LCD显示屏B. 触摸屏C. 键盘D. 打印机答案:ABC4. 在嵌入式系统中,以下哪些是常用的编程模式?A. 事件驱动B. 轮询C. 多线程D. 阻塞答案:ABC5. 在嵌入式系统中,以下哪些是操作系统提供的服务?A. 任务调度B. 内存分配C. 文件系统管理D. 网络服务答案:ABCD三、判断题(每题2分,共10分)1. 嵌入式系统通常具有较低的计算能力。
嵌入式软件开发岗位招聘笔试题及解答(某大型央企)2025年
2025年招聘嵌入式软件开发岗位笔试题及解答(某大型央企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、嵌入式系统中最常用的操作系统是_____ 。
A. LinuxB. Windows CEC. VxWorksD. Android2、在嵌入式系统中,中断是指当系统内部或者外部发生特定的触发事件时,处理器自动暂停当前正在运行的程序,转去处理这个事件,处理完毕后再返回原程序继续执行。
中断的目的是 _____ 。
A. 提高CPU的运行效率B. 减少程序的代码量C. 防止程序死锁D. 响应及时的外部事件3.在嵌入式系统中,以下哪个描述不属于RTOS(实时操作系统)的特点?A. 提供实时的响应性能B. 提供图形界面支持用户操作体验提升C. 可应用于多种嵌入式硬件平台D. 任务调度具有优先级特性4.在嵌入式软件开发中,关于ARM架构的处理器,以下哪个说法是错误的?A. ARM架构处理器功耗较低,适合嵌入式应用。
B. ARM架构处理器不支持浮点运算,需要额外硬件支持。
C. ARM架构处理器有丰富多样的处理器系列,满足不同应用场景需求。
D. ARM架构处理器的指令集采用RISC(精简指令集)设计。
5、数字、嵌入式系统中CPU的初始化过程包括哪些步骤?()A. 中断系统初始化B. 系统总线初始化C. 内存管理单元初始化D. 时钟管理初始化6、数字、在嵌入式系统中,以下哪个指令可以被中断打断?()A. 读写内存的指令B. 浮点运算指令C. 输入输出指令D. 时钟选择指令7、嵌入式系统中,以下哪个高性能FPGA最适合用于高性能数据处理和信号处理任务?A. Xilinx SpartanB. Xilinx Virtex-7C. Altera iCE40D. Altera Stratix V8、在嵌入式Linux系统中,当PCB上向外发送脉冲信号时,推荐使用的硬件层模块是?A. gpioB. timerC. serialD. pwm9.在嵌入式系统中,通常使用哪种类型的处理器?A. 大型通用处理器B. 嵌入式微控制器C. 图形处理器D. 数字信号处理器 10.在嵌入式软件开发中,哪种编程语言是最常用的?A. C++B. JavaC. PythonD. JavaScript二、多项选择题(本大题有10小题,每小题4分,共40分)1、以下关于嵌入式软件开发的叙述哪些是正确的?(多选)A. 嵌入式软件通常需要在限定的资源环境下运行。
嵌入式软件工程师 经典笔试题
2 char * const p
char const * p
const char *p 上述三个有什么
6 main() {
int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答案:2 5 分析:*(a+1)就是 a[1],*(ptr-1)就是 a[4],执行结果是 2,5 。&a+1 不是首地址+1, 系统会认为加一个 a 数组的偏移,是偏移了一个数组的大小(本例是 5 个 int) int *ptr=(int *)(&a+1); 则 ptr 实际是&(a[5]),也就是 a+5 原因如下: &a 是数组指针, 其类型为 int (*)[5]; 而指针加 1 要根据指针类型加上一定的值,不同类型的指针+1 之 后增加的大小不同 a 是长度为 5 的 int 数组指针,所以要加 5*sizeof(int) 所以 ptr 实际是 a[5] 但是 prt 与(&a+1)类型是不一样的(这点很重要) 所以 prt-1 只会减去 sizeof(int*)。 a,&a 的地址是一样的,但意思不一样,a 是数组首地址,也就是 a[0] 的地址,&a 是对象(数组)首地址,a+1 是数组下一元素的地址,即 a[1],&a+1 是下一个 对象的地址,即 a[5].
c++嵌入式软件工程师笔试题
c++嵌入式软件工程师笔试题1. C++是什么?2. C++中`this`指针的含义是什么?3. 什么是异常处理?如何在C++中实现?4. 什么是多态?在C++中如何实现?5. 什么是虚函数?6. 什么是构造函数?它在C++中的作用是什么?7. C++中的析构函数有何用途?8. 请描述一下内存分区,并说明堆和栈的区别。
9. 如何定义类的成员函数为静态的?10. 请简述一下拷贝构造函数。
11. `const`关键字在C++中的用途有哪些?12. 在C++中,`inline`关键字有何作用?13. 请描述C++中的RAII技术。
14. `new`和`malloc`在C++中的主要区别是什么?15. 请描述C++中的三种基本控制结构。
16. `switch`语句在C++中允许的变量类型有哪些?17. 如何声明一个常量整型数组?18. `sizeof`运算符在C++中的作用是什么?19. 什么是全局变量和局部变量?它们有什么区别?20. 什么是函数的重载?21. 什么是函数的默认参数?22. C++中的友元函数是什么?23. 请描述一下C++中的内联函数。
24. 什么是STL(标准模板库)?25. `vector`、`list`、`deque`的区别是什么?26. C++中的STL容器如何进行排序?27. 什么是STL中的迭代器?它与指针有何相似之处?28. `auto`关键字在C++中的用途是什么?29. 什么是lambda表达式?如何使用它?30. C++中的STL算法有哪些常见的用途?31. 什么是多线程编程?在C++中如何实现多线程?32. 请描述一下C++中的线程安全问题。
33. C++中的智能指针是什么?它与原始指针有何不同?34. `nullptr`与`NULL`的区别是什么?35. 请解释C++中的深拷贝和浅拷贝。
36. 如何使用C++中的IO流进行文件读写操作?37. 什么是异常安全代码?如何在C++中编写异常安全代码?38. `final`关键字在C++中的含义是什么?它与`override`关键字有何联系?39. C++中的STL容器如何进行查找操作?40. 请描述一下C++中的STL容器的容量和大小。
嵌入式软件工程师笔试题
嵌入式软件工程师笔试题一、题目描述某公司正在招聘一名嵌入式软件工程师,为了筛选合适的人选,决定进行一场笔试。
请根据以下要求完成以下三个问题:1. 设计一个嵌入式软件系统,要求对温度进行实时监测,并根据温度变化控制一个风扇的转速。
2. 编写一个C语言函数,实现对一个整型数组的排序功能。
3. 使用C语言编写一个简单的通信协议,实现两个设备之间的数据传输。
二、嵌入式软件系统设计在嵌入式软件系统设计方面,以下是一个简要的设计方案:1. 硬件配置:a. 主控芯片:选择一款适合的低功耗嵌入式处理器,如ARM Cortex-M系列。
b. 温度传感器:选择一款精度高、稳定性好的温度传感器,可通过I2C或SPI接口与主控芯片通信。
c. 风扇控制器:选择一款与主控芯片兼容的风扇控制器,可通过PWM信号控制风扇转速。
2. 软件设计:a. 主程序循环:主控芯片通过定时器中断实现周期性监测温度并控制风扇的转速。
b. 温度读取:通过I2C或SPI通信协议读取温度传感器的温度值。
c. 温度判断:根据温度值判断是否需要调整风扇转速。
d. 风扇控制:通过PWM信号控制风扇的转速,根据温度变化调整占空比。
三、整型数组排序函数实现以下是一个简单的C语言函数,实现对一个整型数组的排序功能:```cvoid arraySort(int arr[], int length) {int i, j, temp;for (i = 0; i < length - 1; i++) {for (j = 0; j < length - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}```四、简单通信协议设计以下是一个使用C语言编写的简单通信协议,实现两个设备之间的数据传输:```c// 发送端void sendData(uint8_t data) {// 将数据通过串口发送给接收端UART_send(data);}// 接收端void receiveData() {while (!UART_dataAvailable()) {} // 等待数据接收完成uint8_t data = UART_receive(); // 获取接收到的数据// 对接收到的数据进行处理// ...```根据上述设计方案和示例代码,嵌入式软件工程师可以完成相关开发任务,实现温度监测与风扇控制、数组排序功能以及设备间的简单数据传输。
嵌入式软件工程师笔试题
嵌入式软件工程师笔试题一、选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义结构体?A. ifB. switchC. structD. for2. 在嵌入式系统中,通常用于实现实时多任务操作的机制是:A. 线程B. 进程C. 中断D. 信号量3. 下列哪种存储器属于非易失性存储器?A. RAMB. ROMC. EEPROMD. SDRAM4. 在ARM架构中,用于存储程序计数器(PC)的寄存器是:A. R0B. R1C. R15D. SP5. 以下哪种通信协议不属于工业通信协议?A. ModbusB. CANC. HTTPD. Profibus6. 在嵌入式Linux开发中,设备树(Device Tree)的主要作用是:A. 描述硬件信息B. 配置内核参数C. 管理文件系统D. 运行应用程序7. 以下哪个是实时操作系统(RTOS)的特点?A. 支持多任务B. 支持多线程C. 支持图形界面D. 支持网络通信8. 在C语言中,用于动态分配内存的函数是:A. mallocB. freeC. callocD. realloc9. 以下哪种传感器通常用于测量物体的速度?A. 加速度传感器B. 陀螺仪C. 霍尔传感器D. 光电传感器10. 在嵌入式系统中,串行通信接口UART的主要作用是:A. 连接显示器B. 连接键盘C. 连接鼠标D. 连接串行设备二、填空题(每题2分,共20分)11. 在C语言中,使用关键字________可以定义一个指向函数的指针。
12. 在嵌入式系统中,________是一种常用的低功耗无线通信技术。
13. 为了在嵌入式设备中实现网络功能,通常需要使用________协议栈。
14. 在嵌入式Linux系统中,使用________命令可以查看当前系统的进程信息。
15. 一个典型的嵌入式系统通常包括硬件平台、________、外设和应用程序。
16. 在ARM架构中,异常处理程序通常存储在向量表的________部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
笔试题
1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是
A.(a+b)*c/2
B.(1/2)*(a+b)*c
C.(a+b)*c*1/2
D.c/2*(a+b)
参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
2:为了向二进制文件尾部增加数据,打开文件的方式应采用
A.″ab″
B.″rb+″
C.″wb″
D.″wb+″
参考答案:D
3:下述程序执行后的输出结果是
#include
main()
{
int x=’f';
printf(“%c\n”,’a’+(x-‘a’+1));
}
A.g
B.h
C.i
D.j
参考答案:A
4:C语言中,下列运算符优先级高的是
A.!
B.%
C.>>
D.= =
参考答案:A
5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*a
B.a [ 0 ]
C.a
D.a++
参考答案:D
6:执行语句“ k=7>>1; ”后,变量 k 的当前值是
A.15
B.31
C.3
D.1
参考答案:C
7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
D.int
参考答案:D
8:若main()函数带参数,参数个数多是
A.0
B.1
C.2
D.3
参考答案:C 只知道有定义形式main(int argc,char* argv[])) 9:若有宏定义:#define MOD(x,y) x%y
则执行以下语句后的输出结果是
int a=13,b=94;
printf(″%d\n″,MOD(b,a+4));
A.5
B.7
C.9
D.11
参考答案:B
10:下列各个错误中,哪一个不属于编译错误
A.改变 x 原值 3 为 5 ,写作“ x==5 ;”
B.花括号不配对
C.复合语句中的后一条语句后未加分号
D.变量有引用、无定义
11:下列程序段运行后, x 的值是( )
a=1;b=2;x=0;
if(!( — a))x — ;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
参考答案:A
12:设
#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出错
参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉
13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是
A.def
B.d
C.e
D.0
参考答案:C
14:下列转义字符中错误的是
A.′\000′
B.′\14′
C.′\x111′
D.′\2′
参考答案:C error C2022: ‘273’ : too big for character
15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为
A.算术运算、赋值运算、关系运算
B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算
D.关系运算、算术运算、赋值运算
16:设#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出错
参考答案:B
17:表达式strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个
A.非零整数
B.浮点数
C.0
D.字符
参考答案: A
18:设struct
{ short a;
char b;
float c;
}cs;
则sizeof(cs)的值是
A.4
B.5
C.6
D.7
参考答案: D 字节对齐的话应该是8
19:若变量已正确定义,表达式( j=3 , j++ )的值是
A.3
B.4
C.5
D.0
参考答案:A
20:C 语言中运算对象必须是整型的运算符是
A.%
B./
C.!
参考答案:A
21:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
22:
01 #include
02
03 void main()
04
05 { int c;
06
07 while ((c=getchar())!= ′\ n ′ )
08
09 switch(c - ′ 2 ′ )
10
11 { case 0:
12
13 case 1:putchar(c+4);break;
14
15 case 2:putchar(c+4);break;
16
17 case 3:putchar(c+3);break;
18
19 default:putchar(c+2);break;
20
21 }
22
23 printf( ″\ n ″ );
24
25 }
运行时输入: 2473 ,输出结果:
参考答案:6897 VC++6.0测试过
23:写一语句实现x是否为2的若干次幂的判断。
参考答案:!(X)&(X-1)
24:如何判别一个数是unsigned。
参考答案:1 #define issignal(x) ((x>=0 && ~x>=0) ? 1:0) //为1是无符号为0有符号
25:已知一个数组table,用一个宏定义,求出数据的元素个数。
参考答案:#define NTBL
1 #define NTBL (sizeof(table)/sizeof(table[0]))
26:最简单的RS-232线缆需要几根线?最通用的波特率是多少?最通用的位数是多少?
参考答案:3根;9600 bit/s ;1 bit start,8 bit data,1 bit stop。
27:请简单描述一下什么是IIC总线?标准速率是多少?快速速率是多少?总线设备地址是几位?通信总线有几根,分别是什么?
参考答案:一种芯片之间的通信总线;100 Kbit/s ;400 Kbit/s ;7 bit ;2 根,SDA、SCL 。
28:请简单描述一下什么是IIC总线?标准速率是多少?快速速率是多少?总线设备地址是几位?通信总线有几根,分别是什么?
参考答案:一种芯片之间的通信总线;100 Kbit/s ;400 Kbit/s ;7 bit ;2 根,SDA、SCL 。
29:请问SPI通信总线有几根,分别是什么?
参考答案:4 根,CS、MCLK(SCLK)、MISO(SDI)、MOSI(SDO)。
30:请问USB通信总线的通信速率有几种?分别最大是什么?
参考答案:4 种;低速:1.5Mbit/s , 全速:12Mbit/s , 高速:480Mbit/s , 超高速:4.8Gbit/s ,。