嵌入式面试高频题汇编(星球版)
本文把星球中散落的面试问答帖按主题归拢。每题给出考点与答题要点,详细作答见来源笔记。
一、RTOS 类
RTOS 是星球面试内容的最大题库。刘子奇结合学员面试真题整理过一份 11 问清单(结合了我们学员面试,总结了RTOS面试时常见问题:,刘子奇),要点:
- 为什么用 RTOS:实时性(抢占保证关键事件响应)、多任务并发、现成的内核资源、模块化可维护、生态中间件。
- 调度策略:抢占式调度 + 同优先级时间片轮转。
- 任务四状态:运行/就绪/阻塞/删除。
- SysTick:RTOS 的心跳,提供时基、驱动调度、支撑时间片轮转。
- 任务切换:PendSV 触发 → 现场入栈 → 更新 TCB 栈顶指针 → 调度器找最高优先级 → 出栈恢复 → 跳转执行。
- 信号量 vs 互斥锁:信号量用于同步(无优先级继承,可能优先级翻转);互斥锁用于临界区互斥(有优先级继承)。
- 中断中使用 RTOS API:必须用 FromISR 后缀函数、不可阻塞、ISR 要短、必要时手动触发 yield、注意中断优先级阈值。
- 三大实战案例:栈溢出(栈溢出钩子 + 高水位查询 uxTaskGetStackHighWaterMark)、优先级翻转(信号量换互斥锁)、死锁(规范加锁顺序 + 超时)。
追问 RT-Thread 这类开源生态"为什么还要自己分层"时的满分思路:用 OSAL 消除 OS 绑定、用"注册器+适配器+工厂"把编译期耦合变成运行时链接、为低功耗/OTA/日志自检预留统一系统位面,并给出可量化的落地案例(面试官问:RT-Thread 这些开源框架本来就把底层做得挺好,Jack)。
二、C 语言与编译器类
- int8 表示范围:-128~127;-1 是 0b11111111,-128 是 0b10000000;强赋 128 会回绕成 -128(嵌入式里面常考且必须回答正确的问题(一)int8的表示,Jack)。
- volatile 三连问(写寄存器要不要加、中断标志位要不要加、能否替代线程同步):从编译器优化讲起——volatile 只保证每次读写都是真实访问、不被合并省略;不保证原子性、不能当锁、不禁止其他优化。环形缓冲区只给索引/计数加 volatile,不给大数组加(在嵌入式开发里,几乎是一个“老生常谈”的关键字,刘子奇)。
- 基础概念题:全局静态变量=仅文件内部作用域(1. 什么是全局静态变量);UML=可视化系统设计的标准建模语言(3. UML代表什么?)。
- tick 计数溢出:无符号回绕配合取模运算天然正确;严格场合用 64 位计数器(老师,这样写能避免溢出问题? pf_get_tick_count归零不就不准,Jack)。
三、体系结构与底层类
年薪 50w 档位的三个深挖题(年薪50w➕面试经常会被问到的,Jack):
1. 从外设(UART)→ 中断控制器 → CPU 的完整中断处理流程;中断无法触发时如何排查。
2. 一条指令从取指到执行,CPU/总线/存储的全链路行为(有无 MMU/Cache、Flash/SRAM/DDR 差异)。
3. 锁的实现原理。
配套小题:哈佛架构(I-bus/D-bus 分离取指取数,快)vs 冯诺依曼架构(代码数据同总线,PC 机典型)(冯诺依曼和哈佛架构区别: 哈,Jack);ARM 传参:前 4 个参数走寄存器 r0-r3,超出走栈(ARM架构传参方式: 常规压,Jack)。
四、开发流程与量产类
- 敏捷 vs 瀑布:敏捷把需求按优先级最小化拆解、逐段交付快速响应变化;瀑布严格顺序、里程碑明确、适合需求稳定的长周期项目。加分点:把"市场"讲进去——小厂品牌价值低、试错成本低,靠敏捷快速抢占市场;大厂玩不起砸牌子(敏捷开发和瀑布开发的区别:各自的优势是什么:,Jack;瀑布适用场景另见 为什么瀑布开发周期长,反馈少还适用于大项目)。
- 量产行话:想法/POC → 需求冻结 → 原型机 → EVT/DVT/PVT → Pilot Run → 量产发布(MP)。"这些行话一说,就知道你干过量产项目"(在我们的产品开发过程中,尤其是对于所有工程师来说,Jack)。
五、项目与架构类
- 驱动调试用例评审:不合格用例的典型=没有错误处理、内存泄漏、共享资源没加锁(老师,今天有遇到面试问:你在驱动调试过程中有哪些用例是不合格的?你怎么处理,Jack)。
- 讲自己的架构:桥接模式 + 结构体/函数指针解耦,业务与实现分离;编译期挂载改运行时挂载;资源内聚到线程随生命周期管理;换 OS/换芯片走 adapter;APP 与 BSP 走 IPC;按段链接为差分升级打基础(Q: 你们具有什么样的架构设计,Jack)。
- 为什么学架构能加分:所有工程师都讨厌杂乱无章,代码分层清楚、说话有条理,好感度非常大(老师我的想法是:我把架构这里学完 然后用到自己的项目里,面试的时候跟面试官吹一吹,Jack)。
- 芯片厂面试侧重:芯片启动原理、外设驱动,以及"复现客户问题、冷静分析"的问题解决能力(进入芯片厂,面试时主要考查芯片,Jack)。
六、面试策略类
- 遇到不会的:千万不能不懂装懂——瞎说的工程师对团队的伤害是菜鸟的成倍(面试中遇到不会的怎么办? 千,Jack)。
- 追求超纲回答:多数人能答到 80 分;能把问题往下再挖一层、展示深度理解,才是面试官心里的 100 分(这个问题,面试官问时,如果只回答第一句话,已经是80分水平,Jack)。
- 金三银四高频作战:一天七八个面试是常态,每场都要记录"面试官怎么问 + 我怎么答",回去复盘(现在金三银四高峰期,面试比较多,一天约七八个面试比较正常,Jack)。
- 题目资源:星球分享过 C/C++ 与嵌入式高频题 PDF 合集(:资源分享 嵌入式软件面试题,立芯嵌入式)。
来源笔记
- 结合了我们学员面试,总结了RTOS面试时常见问题:(刘子奇)
- 面试官问:RT-Thread 这些开源框架本来就把底层做得挺好(Jack)
- 嵌入式里面常考且必须回答正确的问题(一)int8的表示(Jack)
- 在嵌入式开发里,几乎是一个“老生常谈”的关键字(刘子奇)
-
- 什么是全局静态变量(。)
-
- UML代表什么?(。)
- 老师,这样写能避免溢出问题? pf_get_tick_count归零不就不准(Jack)
- 年薪50w➕面试经常会被问到的(Jack)
- 冯诺依曼和哈佛架构区别: 哈(Jack)
- ARM架构传参方式: 常规压(Jack)
- 敏捷开发和瀑布开发的区别:各自的优势是什么:(Jack)
- 为什么瀑布开发周期长,反馈少还适用于大项目(Jack)
- 在我们的产品开发过程中,尤其是对于所有工程师来说(Jack)
- 老师,今天有遇到面试问:你在驱动调试过程中有哪些用例是不合格的?你怎么处理(Jack)
- Q: 你们具有什么样的架构设计(Jack)
- 老师我的想法是:我把架构这里学完 然后用到自己的项目里,面试的时候跟面试官吹一吹(Jack)
- 进入芯片厂,面试时主要考查芯片(Jack)
- 面试中遇到不会的怎么办? 千(Jack)
- 这个问题,面试官问时,如果只回答第一句话,已经是80分水平(Jack)
- 现在金三银四高峰期,面试比较多,一天约七八个面试比较正常(Jack)
- :资源分享 嵌入式软件面试题(立芯嵌入式)