职位题库

嵌入式软件工程师面试题库

面向嵌入式软件工程师相关面试,围绕C语言、I2C、RTOS、中断、操作系统等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

383 道题目建议用时 1149 分钟专项面试练习

全部题目 383 道题

169

如果EEPROM突然读不到了,你会怎么排查?

考察候选人硬件到软件的排查思路、I2C协议理解和逻辑分析仪使用能力。
170

请解释 C 语言中 static 关键字的作用。

考察对 C 语言存储类、作用域和链接属性的理解。
171

请说明 inline 关键字的作用。

考察对函数内联、编译优化和链接行为的理解。
172

结构体和联合体有什么差别?

考察对复合数据类型内存布局的理解。
173

strlen 和 sizeof 有什么差别?

考察对字符串长度和内存大小的区分。
174

堆和栈有什么差别?

考察对内存分区、分配方式和生命周期的理解。
175

请设计一个嵌入式存储方案:设备每10ms产生一条数据,需持续写入Flash,空间有限需循环覆盖旧数据,且可能随时掉电,重启后要尽量保住最近的数据。

考察候选人在真实约束下设计存储系统的能力,重点在异常路径、掉电一致性、循环覆盖与恢复策略,而非背诵Flash定义。
176

请解释文件调用write返回成功后,数据是否一定进入存储介质?page cache、脏页、后台回写和fsync之间是什么关系?

考察对文件系统写路径和持久化语义的理解,尤其是write成功与真正落盘之间的差距,以及fsync在掉电场景下的保证边界。
177

请说明DMA读写缓冲区时为什么需要考虑Cache一致性,以及CPU已改缓存但DMA读到旧数据时如何处理。

考察对DMA与Cache交互的理解,包括一致性问题的成因、常见处理手段及其代价。
178

请说明中断上下文为什么不能睡眠,自旋锁和互斥锁如何选择,以及自旋锁一直拿不到会怎样。

考察对中断上下文约束和锁机制的理解,包括睡眠、调度、死锁和中断禁用等实际后果。
179

请解释volatile能保证什么、为什么不能拿它做线程同步,并说明编译器乱序与CPU乱序的区别以及内存屏障的使用场景。

考察对volatile语义、编译器优化、CPU乱序和内存屏障的理解,判断候选人是否能把语言语义与硬件行为区分开。
180

static修饰局部变量和全局变量分别有什么影响?未初始化的全局变量和局部变量的初始值是什么?

考察C语言基础,static关键字对变量存储期、作用域和链接属性的影响,以及未初始化变量的默认值。
返回面试题库