嵌入式面试准备
嵌入式 C、Linux、RTOS、STM32 面试题库和学习资源。
面试题库
按方向复习路线
C / C++ 基础(你当前 2 级,目标 3 级)
| 等级 |
能做什么 |
推荐资源 |
| 1-2 级 |
能写基本函数,指针理解有限 |
《C Primer Plus》前10章 + 面试基础50题 |
| 2-3 级 |
能写链表、结构体,理解指针和内存分配 |
《C和指针》 + huihut/interview C部分 |
| 3-4 级 |
能处理回调函数、函数指针、编译链接过程 |
《C专家编程》 + 阅读 Linux 内核代码片段 |
| 4-5 级 |
能分析段错误、栈溢出、字节对齐、缓存一致性 |
CSAPP + Linux 内核源码 |
操作系统基础(你当前 1 级,目标 2-3 级)
- 进程 vs 线程、上下文切换、调度算法
- 内存管理:虚拟内存、分页、分段、MMU
- 同步与互斥:信号量、互斥锁、条件变量、死锁
- 文件系统:VFS、inode、文件描述符
- 中断与异常、用户态 vs 内核态
- 推荐:CS-Notes 操作系统篇 + 《Linux 内核设计与实现》
计算机网络(你当前 1 级,目标 2 级)
- TCP 三次握手 / 四次挥手、状态机
- TCP 流量控制、拥塞控制(慢启动、拥塞避免、快速重传)
- UDP vs TCP 适用场景
- HTTP / HTTPS / DNS 基本流程
- Socket 编程模型(阻塞、非阻塞、多路复用 select/epoll)
- 推荐:CS-Notes 网络篇 + 《TCP/IP 详解 卷1》
嵌入式 Linux 面试高频
| 主题 |
关键考点 |
| Bootloader |
U-Boot 启动流程、设备树传递 |
| Linux 内核启动 |
内核解压、init 进程、initrd |
| 驱动模型 |
字符设备注册、file_operations、设备树匹配 |
| 内存管理 |
slab、kmalloc/vmalloc、DMA、cache 一致性 |
| 中断 |
上半部/下半部、tasklet、workqueue、线程化中断 |
| 调试 |
printk、kdump、kgdb、strace、perf |
| 交叉编译 |
工具链、Makefile 交叉编译、根文件系统构建 |
| RTOS vs Linux |
实时性、调度策略、优先级反转 |
通信协议面试
| 协议 |
应掌握内容 |
| UART |
波特率、起始/停止位、奇偶校验、硬件流控 RTS/CTS |
| I2C |
SCL/SDA、7位/10位地址、ACK/NACK、多主机仲裁、时钟拉伸 |
| SPI |
全双工、4线模式、片选、时钟极性(CPOL)/相位(CPHA) |
| CAN |
CAN 2.0 帧格式、仲裁机制、错误处理 |
| TCP/IP |
三次握手、四次挥手、滑动窗口、拥塞控制 |
推荐刷题平台
| 平台 |
用途 |
| LeetCode 热题 100 / 剑指 Offer |
算法面试基础(你计划刷最热200题) |
| 牛客网嵌入式面试面经 |
嵌入式真实面试题目汇总 |
| huihut/interview |
C/C++ 八股文速查 |
MCU/FreeRTOS 面试专项(2026 实习方向)
如果你已做完 ZET6 FreeRTOS 项目,以下是你面试 MCU 岗位最可能被问到的。
C 语言(嵌入式面试 80% 在这里刷人)
| 主题 |
考点 |
自检问题 |
| const |
const int/int const/const int* const 区别 |
写个函数参数用 const 保护传入数据 |
| volatile |
用于寄存器变量、中断共享变量 |
为什么中断里用的变量要加 volatile |
| static |
局部/全局/函数 static 的区别 |
static 局部变量存在哪个段 |
| 结构体对齐 |
#pragma pack, 内存对齐规则 |
sizeof(struct) 是多少,怎么算的 |
| 字节序 |
大端小端 |
写个 union 判断系统是大端还是小端 |
| 函数指针 |
回调函数、函数指针数组 |
用函数指针实现 switch-case 的替代 |
| 位操作 |
宏定义置位/清位/翻转 |
#define SET_BIT(reg, bit) 怎么写 |
| malloc |
嵌入式能不能用 |
为什么 FreeRTOS 有自己的 pvPortMalloc |
| 指针 vs 数组 |
sizeof 区别、传参区别 |
char a[] vs char *p, sizeof 各是多少 |
FreeRTOS(MCU 嵌入式岗必考)
| 主题 |
考点 |
| 任务状态机 |
Ready/Running/Blocked/Suspended 各自什么条件下切换 |
| 调度算法 |
抢占式什么时候触发、时间片怎么分配 |
| 优先级反转 |
什么是优先级反转?怎么解决(优先级继承协议) |
| 临界区 |
taskENTER_CRITICAL 做了什么(关中断)、对实时性有什么影响 |
| IPC 选型 |
队列 vs 信号量 vs 互斥锁 vs 事件组 vs 任务通知——各适合什么场景 |
| 任务通知 |
为什么任务通知比信号量更快(直接传递事件,不经过队列) |
| 堆栈估算 |
任务栈大小怎么确定、uxTaskGetStackHighWaterMark 怎么用 |
| 中断与任务通信 |
中断里怎么给任务发数据(xQueueSendFromISR、xSemaphoreGiveFromISR) |
STM32
| 主题 |
考点 |
| 中断优先级 |
NVIC 分组、抢占优先级 vs 子优先级、HAL 中断回调流程 |
| DMA |
传输模式(普通/循环/存储器到存储器)、DMA 中断 |
| 时钟树 |
HSI/HSE/PLL 的关系、SYSCLK/AHB/APB1/APB2 频率配置 |
| HAL vs LL |
HAL 重(抽象好移植)、LL 轻(直接寄存器、性能高),何时选哪个 |
| I2C/SPI/UART |
三者的区别、何时选哪个、有没有遇到过通信失败的问题 |
刷题资源
| 资源 |
说明 |
| huihut/interview |
C/C++ 八股速查 |
| 牛客网嵌入式面经 |
真实面试题目汇总 |
| LeetCode 热题 100 |
算法基础(嵌入式岗考得少,但大厂会考) |
2026-07-30 更新:新增 MCU/FreeRTOS 实习面试专项。