面灵AI→

嵌入式秋招二面怎么准备:20 道高频八股与「定义+场景+故障」三段式

时间
2026-10
来源
牛客网

《面试题目》

  1. volatile 的作用是什么?哪些场景必须加,哪些加了也没用?
  2. 指针和数组在形参传递时有什么区别?sizeof 结果会怎样?
  3. 大小端是什么?如何判断当前平台?和网络字节序怎么转换?
  4. 结构体对齐/填充规则是什么?#pragma pack 会带来什么代价?
  5. 栈、堆、全局/静态区、代码区分别放什么?栈溢出怎么发现?
  6. 启动后从复位到 main 大致经历哪些步骤?向量表的作用是什么?
  7. 中断和轮询如何选择?中断服务函数里哪些操作是危险的?
  8. 关总中断、关某个外设中断、优先级屏蔽,三者差别是什么?
  9. GPIO 推挽、开漏、上拉下拉分别用在什么场景?
  10. UART 丢数据常见原因有哪些?空闲中断一帧接收怎么做?
  11. I2C 的起始、应答、时钟拉伸是什么?ACK/NACK 分别表示什么?
  12. SPI 的 CPOL/CPHA 是什么?全双工下 MISO/MOSI 如何同时工作?
  13. DMA 解决什么问题?内存到外设、外设到内存有何注意点?
  14. 有 Cache 的 MCU/SoC 上,DMA 和 Cache 一致性问题怎么处理?
  15. FreeRTOS 任务状态有哪些?如何合理设置任务栈和优先级?
  16. 队列、信号量、互斥量的区别?为什么中断里通常用 FromISR 接口?
  17. 优先级反转是什么?互斥量的优先级继承如何缓解?
  18. Bootloader 和 App 如何分区?跳转 App 前为什么要做合法性校验?
  19. Flash 擦写有哪些约束?掉电过程中写 Flash 可能带来什么风险?
  20. HardFault 出现后,你的第一时间排查步骤是什么?需要看哪些寄存器/信息?

《参考解析》

这篇经验真正有用的部分不是题单,而是「按简历倒推」的复习顺序。 作者给的优先级是:第一层 C 语言加单片机基础(指针、内存、volatile/const、大小端、对齐、中断、启动、链接、栈和堆),这是所有方向的公共底座,挂了基本没有下一轮;第二层跟你垂直项目强绑定的八股(做工控就看总线、超时重传、掉电存储、看门狗;做摄像头就看缓冲、丢帧、I2C 配 sensor、启动时序;做车载就看 CAN、启动/Boot、写 Flash 风险);第三层才是 RTOS/驱动/Boot 里你简历敢写的词。这个顺序的道理在于:面试官的问法是从你的简历出发的,所以复习的有效边界也是你的简历,通背手册反而是无效勤奋。

「定义一句 + 场景一句 + 故障一句」这个结构值得抄。 嵌入式面试的特点是第一刀问定义、第二刀必落现场:你说熟悉 UART,他就问轮询/中断/DMA 三种收法差在哪、一帧怎么判断结束、丢字节怎么定位;你说熟悉 FreeRTOS,他就问优先级反转怎么规避、栈溢出看哪个寄存器。所以每个高频点都该准备三层,而面试官能追问的往往是第三句——也就是「出了事什么样、你怎么定位」。这也正好呼应题单里那些看起来最「现场」的题:栈溢出怎么发现、HardFault 先看哪、掉电写 Flash 什么风险。

「项目和八股别互相拆台」是最容易翻车的点。 作者列了三种典型:简历写熟悉 DMA 却讲不清半满/全满中断;简历写 FreeRTOS 却只会创建两个闪灯任务;简历写 IAP 却讲不清校验失败为什么不能跳 App。根因是项目和八股用了两套故事——项目里真用过的机制,八股必须能展开;反过来,八股里背得很熟但项目没碰过的东西,写进简历就是自找追问。所以两边应该收敛成一套叙事。

落地节奏。 作者的安排是每天两块:一块继续把主项目链路补完整,一块按题单做口述(不看答案先自己讲两分钟)。口述比默读有效,因为面试考察的是「能不能讲出来」而不是「认不认识」;讲不顺的题就是缺口,这个自测信号比刷题量可靠得多。