嵌入式秋招准备重点:一份可执行的复习清单
秋招不是“把书看完”,而是让面试官在 30–60 分钟内相信:你能独立Bring-up一块板子、能定位问题、能在约束下写出可靠代码。下面按优先级整理准备重点,并给出可落地的复习方式。
一、先搞清楚:秋招嵌入式到底考什么
常见岗位方向会分叉,但底层能力高度重叠:
MCU/裸机/RTOS | 嵌入式软件、单片机开发 | C语言、外设、中断/DMA、RTOS、调试 |
Linux嵌入式 | 嵌入式Linux、驱动开发 | C、Linux基础、驱动模型、设备树、内核常识 |
软硬结合 | 嵌入式系统、FPGA协作 | 协议、时序、原理图阅读能力、联调经验 |
准备策略:主投 1 个主方向 + 1 个备选方向,不要三条线同时浅尝辄止。简历和项目叙事也要跟着主方向走。
二、必须打牢的“硬通货”
1. C 语言(几乎每场必考)
重点不是语法背诵,而是:
- 指针、数组、结构体、内存布局(栈/堆/全局)
const/volatile/static的含义与使用场景- 位操作、宏、内联、对齐与
sizeof - 常见坑:野指针、越界、未初始化、重复释放、整数溢出
自测题方向:给定一段代码,问输出、问 UB、问如何改得更安全。
嵌入式大厂面试题,基础八股文资料合集整理:
https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
2. 计算机基础(决定你能不能把话说清楚)
- 数据结构与算法:链表、栈队列、排序查找;LeetCode 以“简单+中等”为主,嵌入式不必刷到竞赛水平,但要写得出来、讲得清复杂度。
- 计网(IoT/网关岗更重):TCP/UDP、三次握手、粘包、超时重传概念即可。
- 操作系统概念:进程/线程、调度、互斥锁、死锁、优先级反转——RTOS 和 Linux 都会用到同一套语言。
3. MCU 与外设(MCU 岗核心)
按“能画图、能写初始化顺序、能排错”来准备:
GPIO/时钟/复位 | 能说明上电后时钟树、外设使能顺序 |
中断/NVIC | 优先级、嵌套、ISR 里该做什么不该做什么 |
UART | 波特率计算、环形缓冲、printf 重定向 |
SPI/I2C | 模式、时序、多从机、常见芯片读写流程 |
Timer/PWM | 频率计算、输入捕获、输出比较 |
ADC/DAC | 采样、滤波、DMA 搬运 |
DMA | 内存↔外设、双缓冲、Cache 一致性(Cortex-M7 必考) |
Flash | 擦写粒度、磨损、OTA 基本概念 |
面试高频:中断 vs 轮询 vs DMA 怎么选?为什么 ISR 要短?HardFault 怎么查?
4. RTOS(FreeRTOS 最常见)
- 任务、就绪表、时间片、调度时机
- 信号量、互斥量、队列、事件组的使用场景
- 优先级反转、死锁、栈溢出检测
- 中断里能否调用
FromISRAPI
项目加分:能讲清楚“为什么用 RTOS、任务怎么划分、栈大小怎么估”。
5. Linux 与驱动(Linux 岗核心)
- 用户态:文件 IO、
select/poll/epoll、多线程、进程间通信概念 - 内核态:字符设备、platform 驱动、中断顶半部/底半部、内核锁
- 设备树:节点、属性、
compatible、与驱动匹配关系 - 调试:
dmesg、/proc、ftrace、逻辑分析仪/示波器联调经验
不必背完整内核源码,但要能从应用一路追到驱动再到硬件。
三、项目:秋招里最能拉开差距的部分
什么样的项目算“能打”
面试官更认这类项目:
- 有完整链路:需求 → 方案 → 实现 → 测试 → 问题复盘
- 能讲清 trade-off:为什么用 DMA、为什么选这个协议、为什么这样分任务
- 有踩坑故事:Cache 导致读错、SDRAM 时序不稳、LTDC 花屏、CAN 丢帧等——以及你怎么定位的
推荐项目类型(选 1–2 个做深)
- 基于 RTOS 的数据采集 + 上位机/云端上报
- 显示屏(LTDC/RGB 或 SPI屏)+ 触摸 + GUI(LVGL)
- 电机控制(FOC 可加分,但要真懂,别只跑通例程)
- OTA、Bootloader、双分区
- Linux 驱动:传感器/显示屏/定制外设
项目讲述模板(背熟结构,内容用自己的)
背景是什么 → 我负责哪块 → 架构图(3 层以内)→ 关键技术点 2–3 个 → 最难的 bug 1 个 → 结果指标(延迟、帧率、稳定性)→ 如果重做会怎么改
切忌:简历写“熟悉 XX”,面试却说不清寄存器/时序/线程模型。
四、简历与投递:别在筛简历阶段就出局
- 一页为主,项目 2–3 个,每个 3–5 条 bullet,写结果+技术,不要写“参与开发”。
- 技能栏只写能经得住追问的,宁可少写。
- 关键词对齐 JD:RTOS、Linux、驱动、STM32、协议、低功耗、CI 等。
- 开源/博客/示波器截图/性能数据,都是加分项,但别堆砌无关证书。
五、面试题型与应对
1. 基础问答
- C 语言、指针、内存、位操作
- 中断、DMA、Cache、MPU(Cortex-M7 高频)
- 通信协议:UART/SPI/I2C/CAN 区别与选型
2. 手写/白板代码
- 链表反转、环形队列、位操作、状态机
- 驱动里常见:寄存器读写封装、延时、CRC
3. 项目深挖
- “你这块如果换芯片/换屏参/换时钟,要改什么?”
- “最坏情况下内存/CPU 占用多少?”
4. 场景题
- 数据丢了怎么查?死机了怎么看 PC/LR?
- 两个任务抢同一资源怎么设计?
准备方法:每个项目准备 5 个“追问答案”,写在笔记里,面试前过一遍。
六、时间线建议(按秋招节奏倒推)
基础巩固 | 3–4 月 | C + 数据结构 + 一门 MCU 外设通练 |
项目打磨 | 5–6 月 | 1 个主项目做深,文档+演示 |
投递预热 | 7 月 | 简历定稿、提前批、模拟面试 |
正式秋招 | 8–10 月 | 笔试+技术面+HR,边面边补弱项 |
补录/春招备选 | 11 月后 | 针对挂掉的环节专项突破 |
每天建议:算法 1 题 + 基础复习 30 分钟 + 项目复盘 15 分钟,比周末突击更有效。
七、不同方向的“加分明细”
MCU/RTOS 向
- 能画内存 map、能讲 Boot 流程
- 熟悉一种 GUI(LVGL)或一种工业协议(Modbus/CANopen)
- 会用逻辑分析仪/示波器讲清一次通信时序
Linux/驱动向
- 能写一个简单的 char 驱动 + 用户态测试程序
- 懂设备树、中断、DMA、mmap
- 了解 Yocto/Buildroot 或交叉编译链(了解即可,深问再准备)
软硬结合向
- 能看懂原理图电源/时钟/复位
- 能解释 SDRAM/LTDC/QSPI 等高速外设的“为什么这样接线、为什么这样配时序”
八、常见翻车点
- 只会调库,不会原理:一问 Cache/中断优先级就卡壳。
- 项目堆砌:三个项目都只有“调通例程”的深度。
- 算法完全放弃:大厂笔试仍会卡人,简单题要稳。
- 不会讲调试:只会说“重新烧录就好了”。
- 薪资/城市/方向没想清楚:面试后期心态崩盘。
