嵌入式面试如何准备?重点考察内容全梳理
最全面的面试八股文专栏涵盖全部会考察到的知识点:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
一、基础算法与数据结构
基础编程能力是嵌入式岗位的核心。常见考点包括:
- 排序、查找(快速排序、二分查找)
- 字符串处理(逆序、匹配、转整数)
- 指针与数组操作(内存拷贝、字符串反转)
- 链表(反转、合并、环检测)
- 栈与队列(含循环队列)
- 位运算技巧(判断奇偶、交换值、统计1的个数)
建议多刷 LeetCode 中简单与中等难度的题目,掌握常见解题套路。
二、C语言基础
C 是嵌入式开发的基础语言,以下内容是高频考点:
- 指针与指针数组
- 函数指针、回调函数
const
、volatile
关键字- 宏定义、条件编译
- 内存分配(
malloc/free
)、内存对齐 sizeof
、strlen
、结构体填充- 编译过程与链接过程(头文件保护、静态库与动态库)
掌握实际代码写作,能解释概念并举例尤为重要。
三、STM32相关内容
针对裸机或 RTOS 开发,常考内容包括:
- GPIO、USART、ADC、PWM 等外设配置流程
- NVIC 中断配置与使用
- SysTick、定时器基本原理
- 使用 HAL 库与寄存器操作的区别
- I2C、SPI 通信协议实现
- 基于 FreeRTOS 的任务调度、信号量、队列使用
- Watchdog、低功耗设计基础
建议能结合手上项目,准确描述外设初始化及调试思路。
四、Linux嵌入式系统
有些岗位偏向 Linux 应用层或驱动层开发,常考内容如下:
- 进程与线程模型、进程通信(pipe、socket、共享内存等)
- 文件操作接口(
open/read/write/ioctl
) - Makefile、Shell 脚本基础
- 设备树基本结构及修改
- 常用调试工具(
gdb
、strace
、dmesg
) - 简单字符设备驱动编写与注册流程
- 多线程同步(mutex、semaphore、condition)
同时,也可能涉及 U-Boot、内核裁剪与交叉编译环境搭建等实操问题。
五、项目经验与软实力
项目是面试中的加分项,应能清晰描述以下几点:
- 项目背景与角色职责
- 系统架构与关键模块设计
- 使用了哪些协议/驱动/中间件
- 遇到的主要问题及解决方法
- 项目的优化点(功耗、响应速度、资源占用)
此外,还可能被问到代码风格、团队协作、Git 使用习惯等细节。