职位题库

嵌入式开发工程师面试题库

面向嵌入式开发工程师相关面试,围绕C语言、嵌入式、中断、实时性、内存管理等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

18 道题目建议用时 54 分钟专项面试练习

全部题目 18 道题

01

请解释 volatile 在嵌入式 C 中解决什么问题、又不解决什么问题,并结合一次真实偶现问题说明你的排查思路。

考察候选人是否真正理解 volatile 的语义边界,能否把编译器优化、内存可见性与真实 bug 关联,而不是停留在背诵定义。
02

互斥量和二值信号量有什么区别?优先级反转如何形成、如何缓解?

考察候选人对 RTOS 同步原语选型与实时性问题的理解,能否把优先级反转与优先级继承机制讲清楚。
03

Linux 驱动 probe 失败时,你会按什么顺序排查?

考察候选人是否具备从启动日志出发、按设备树与驱动模型逐层缩小范围的系统级排障能力。
04

DMA 传输时 D-Cache 开启,如何保证数据一致性?

考察候选人是否理解 DMA 与 Cache 交互导致的偶发数据错误,并能给出正确的维护策略。
05

请解释volatile关键字的作用,哪些场景必须使用它,如果不使用可能会出现什么问题?

考察对volatile语义的理解,以及在实际嵌入式场景中避免编译器优化导致错误的意识。
06

请解释const int *p和int *const p的区别。

考察对const修饰指针的不同位置的语义理解。
07

请描述程序内存五大分区,并说明malloc、局部变量、全局初始化变量、字符串常量分别存放在哪个区?

考察对程序内存布局的理解,以及常见变量和动态内存的存储位置。
08

请解释进程与线程的区别,并说明僵尸进程的产生原因及回收手段。

考察操作系统基础概念,以及对僵尸进程问题的理解和处理能力。
09

请比较互斥锁、自旋锁、条件变量的区别及各自使用场景。

考察对同步机制的理解,以及在不同场景下选择合适同步方式的能力。
10

在 FreeRTOS 项目中,你如何确定任务栈大小?如何检测栈溢出?请结合具体现象说明。

考察候选人是否真正理解 RTOS 任务栈的分配与监控,能否从现象定位到栈溢出问题,而非仅会创建任务。
11

请描述一次你定位 HardFault 的过程,如何从现象一步步找到根本原因?

考察候选人是否具备底层调试能力,能否利用 CFSR、BFAR、调用栈、map 文件等工具定位硬件异常。
12

在嵌入式项目中,你如何理解 volatile 关键字?请举例说明哪些场景必须使用,哪些场景无效。

考察候选人对 C 语言底层语义的理解,能否结合硬件寄存器、中断、多任务等场景正确使用 volatile。
返回面试题库