面试流程
两轮技术面 + 一轮主管面,线下进行,一天面完。
一面:C 语言 + 操作系统(60 分钟)
static、const、volatile三个关键字分别什么作用?- 内存对齐:为什么对齐?
#pragma pack有什么坑? - 中断上下文里能不能调用
printf?为什么? - 现场写:反转一个链表的 C 代码,写完讲边界条件。
二面:项目 + 现场调试(75 分钟)
- 深挖了一个 RTOS 项目:任务调度、优先级反转怎么处理。
- 给一段有 bug 的驱动代码,当场找 bug(缓冲区溢出 + 竞态条件)。
- 问 I2C 波形:用示波器看的话,起停位、应答位长什么样。
主管面(30 分钟)
聊技术路线:偏驱动还是偏应用?有没有从 0 到 1 带项目的经历?
总结心得
- C 语言三大关键字 + 内存对齐是嵌入式送分题,一定要答全。
- 现场找 bug 比手写代码更常见,平时多读 Linux 内核驱动代码有奇效。
- 中断上下文、原子操作这些概念要能说清楚"为什么"而不只是"是什么"。