B 公司面经

B 公司嵌入式软件岗面试:C 语言、操作系统、现场编程。

面试流程

两轮技术面 + 一轮主管面,线下进行,一天面完。

一面:C 语言 + 操作系统(60 分钟)

  1. staticconstvolatile 三个关键字分别什么作用?
  2. 内存对齐:为什么对齐?#pragma pack 有什么坑?
  3. 中断上下文里能不能调用 printf?为什么?
  4. 现场写:反转一个链表的 C 代码,写完讲边界条件。

二面:项目 + 现场调试(75 分钟)

  • 深挖了一个 RTOS 项目:任务调度、优先级反转怎么处理。
  • 给一段有 bug 的驱动代码,当场找 bug(缓冲区溢出 + 竞态条件)。
  • 问 I2C 波形:用示波器看的话,起停位、应答位长什么样。

主管面(30 分钟)

聊技术路线:偏驱动还是偏应用?有没有从 0 到 1 带项目的经历?

总结心得

  • C 语言三大关键字 + 内存对齐是嵌入式送分题,一定要答全。
  • 现场找 bug 比手写代码更常见,平时多读 Linux 内核驱动代码有奇效。
  • 中断上下文、原子操作这些概念要能说清楚"为什么"而不只是"是什么"。