嵌入式业务面常见高频问题

业务问题往往不会像八股文那样机械,更看重你的项目经历和解决问题的能力。

  1. 项目经历深挖你在项目中负责了哪些模块?碰到过什么难点?怎么解决的?如果再来一次,你会怎么优化? ✅ 建议:别只是说“我写了驱动/移植了系统”,而要结合实际问题,比如“遇到串口丢数据,我通过 DMA + 环形缓冲区解决,并减少了 CPU 占用”。
  2. 软硬结合问题如何调试一个外设不工作的问题?如果 MCU 频繁重启,你会如何排查? ✅ 面试官想看你是不是有“系统化思维”,最好能分层:硬件(供电/时钟/原理图)、驱动层(寄存器配置)、应用层(协议处理/任务优先级)。
  3. 团队与交付项目里怎么和硬件/测试/产品对接?你怎么保证代码质量和进度? ✅ 出彩点:说你用过 单元测试/代码走查/CI 等方法,能证明你在工程化上有经验,而不是“单兵作战”。

全网最全面的嵌入式八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

二、面试前的准备要点

  1. 过往项目总结:每个项目梳理出:背景—任务—你的职责—难点—解决方案—结果,并准备 2~3 个亮点。最好提前写成“故事”,避免当场想半天。
  2. 常见问题复盘:如何定位 bug?如何优化性能?如何做低功耗?面试时有逻辑地展开,不要回答成“想到哪说哪”。
  3. 模拟演练:找朋友帮忙提问,练习把技术问题讲清楚、讲明白、讲有条理。记住,业务面不考死记硬背,而是看你 能否把经验讲成价值。

三、不同岗位关注点区别

  • 研发岗(嵌入式软件/硬件)关注:技术深度、问题解决、代码/硬件功底。提问:驱动移植、系统调试、性能优化、多人协作。准备:复盘技术细节,准备典型“问题场景 + 解决方案”。
  • 产品岗关注:理解需求、把握优先级、与研发沟通。提问:你怎么理解用户需求?怎么平衡功能与开发周期?准备:用一个案例讲清楚“如何从需求到实现”。
  • 测试/验证岗关注:测试思路、覆盖率、如何发现边界问题。提问:如何设计测试用例?如何验证系统稳定性?准备:准备 1~2 个“发现重大 bug 的案例”,突出价值。

四、一个我的面试小经验(嵌入式研发)

我曾经在面试中被问到:👉“你在项目中最棘手的问题是什么?最后是怎么解决的?”

我分享的是:在一个 GNSS 定位模块 项目中,串口数据量大,导致 MCU 的 CPU 占用率过高、系统卡顿。

  • 我的思路:初步怀疑是数据接收效率低,验证发现使用中断接收导致频繁进入中断。改为 DMA + 双缓冲,结合环形队列实现无阻塞数据收发。通过 FreeRTOS 任务优先级优化,让数据处理和业务逻辑解耦。
  • 结果:CPU 占用率下降 30%,系统运行稳定。

回答完后我加了一句:👉“这个经验让我认识到,解决问题要从定位瓶颈开始,而不是一上来就改代码。”

#业务面应该做哪些准备#
全部评论

相关推荐

- 简单做完自我介绍后,上来直接问项目muduo,问问这个one loop per thread 的架构,以及重构前和重构后并发量提升了多少。我的回答就是多Reactor模式,多个线程,每个线程内部实现无锁编程。- 然后就问这个线程的共享变量是怎么做的,就给了一个实际的场景题,如果是一个很大的LRU缓存,每个线程都要去访问,怎么提高缓存命中率,然后我想不出来,感觉就是一个redis的单线程,我就说了可以进行LRU分块,每个线程访问固定的缓存,然后用一个特定的线程来进行缓存同步。- 反正中间交流得磕磕绊绊的,问的问题都有点偏场景题- 算法题struct LockInfo{uint64_t row_id;uint64_t owner_tx;std::vector<uint64_t> waiting_txs;};bool DetectDeadLock(std::vector<LockInfo> &lks){}row_id 为数据库中某个表项的主键, owner_tx代表持有该表项锁的事务, waitting_txs代表等待该主键表项的锁的事务填充这个函数,来检测死锁。写的时候脑子荡掉了,没有想到多个事务循环等待的死锁,只想到了两个事务。然后最后相当于求一个图是否有闭环,一时半会没写出来,用广度优先搜索对每个事务进行遍历,暴力求解。面试公司:成章数据;面试职位:C/C++;面试体验:没有压力,属于引导型,属于鼓励型,面试结束提了一些值得学习的地方;面试难度:对工程能力要求较高;面试结果:感觉没戏;
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务