嵌入式面试一般考察什么内容?一篇文章带你了解面试全流程
很多刚接触嵌入式开发的同学都有一个疑问:
嵌入式面试到底在考什么?
有的人疯狂刷算法题,结果面试官全程都在问STM32和通信协议;有的人背了大量八股文,结果项目一深挖就答不上来。
事实上,无论是实习、校招还是社招,大部分嵌入式岗位的面试内容都有比较固定的范围。
如果将嵌入式面试拆解,可以概括为以下几个部分:
- C语言基础
- 数据结构与算法
- MCU与硬件基础
- 通信协议
- RTOS操作系统
- Linux基础
- 项目经验
- 综合能力
掌握这些内容,就已经覆盖了绝大多数企业的考察范围。
一、C语言基础
C语言是嵌入式开发的核心语言,也是面试出现频率最高的部分。
很多公司不会直接问复杂项目,而是先通过几个基础问题判断候选人的编程功底。
常见考察内容:
指针
例如:
- 指针和数组的区别
- 二级指针的作用
- 函数指针的应用
内存管理
例如:
- malloc和free
- 内存泄漏
- 野指针
- 悬空指针
关键字
例如:
- const
- volatile
- static
- extern
结构体
例如:
- 内存对齐
- 字节填充
- 位域
宏定义
例如:
- #define与const区别
- 宏函数优缺点
对于嵌入式岗位来说,C语言往往占据整个技术面试的30%以上。
准备嵌入式面试八股文我推荐这个专栏,真的很全面,很深入:
https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
二、数据结构与算法
虽然嵌入式不像互联网那样重算法,但基础数据结构依然是高频考点。
常见内容:
线性表
- 数组
- 链表
栈
应用场景:
- 函数调用
- 表达式求值
队列
应用场景:
- 消息缓冲
- 任务通信
排序算法
常见考察:
- 冒泡排序
- 快速排序
- 插入排序
查找算法
例如:
- 二分查找
- 哈希表
面试官通常不会出特别复杂的算法题,但希望你理解时间复杂度和实际应用场景。
三、MCU与硬件基础
这是嵌入式区别于纯软件开发最重要的部分。
如果简历中出现STM32、GD32、ESP32等MCU项目,那么这一部分一定会被重点考察。
常见内容:
GPIO
例如:
- 输入输出模式
- 上拉下拉
- 推挽输出与开漏输出
中断
例如:
- 中断响应流程
- NVIC工作原理
- 中断优先级
定时器
例如:
- PWM原理
- 输入捕获
- 输出比较
DMA
例如:
- DMA的作用
- DMA与CPU的区别
时钟系统
例如:
- 外部晶振
- PLL
- 时钟树
很多面试官喜欢从寄存器角度继续追问,因此不仅要会用HAL库,更要理解底层原理。
四、通信协议
通信协议是嵌入式面试的核心内容之一。
几乎所有项目都会涉及设备间通信。
高频考点包括:
UART
考察内容:
- 波特率
- 数据格式
- 空闲中断
SPI
考察内容:
- 主从模式
- 时钟极性
- 时钟相位
I2C
考察内容:
- 起始信号
- 停止信号
- ACK机制
CAN
考察内容:
- 仲裁机制
- 标准帧
- 扩展帧
- Bus-Off
Ethernet
考察内容:
- MAC
- PHY
- TCP/IP
如果是物联网岗位,还会涉及:
- MQTT
- Modbus
- RS485
五、RTOS操作系统
近年来越来越多企业开始使用实时操作系统。
因此FreeRTOS已经成为校招面试高频内容。
重点内容包括:
任务管理
例如:
- 任务创建
- 任务删除
- 任务调度
时间管理
例如:
- Tick
- Delay
IPC机制
例如:
- 信号量
- 互斥锁
- 消息队列
- 事件组
内存管理
例如:
- Heap管理
- 动态内存分配
优先级反转
这是很多面试官喜欢深入追问的问题。
六、Linux基础
如果岗位涉及Linux嵌入式开发,这部分重要程度会明显提升。
常见考察:
Linux命令
例如:
- ls
- grep
- find
- top
文件系统
例如:
- 文件描述符
- inode
进程与线程
例如:
- fork
- exec
- pthread
网络编程
例如:
- Socket
- TCP
- UDP
驱动开发
例如:
- 字符设备驱动
- 平台驱动
- 设备树
对于Linux岗位来说,这部分甚至比MCU知识更重要。
七、项目经验深挖
很多同学认为项目只是简历上的展示内容。
实际上:
项目往往才是真正决定Offer的关键。
面试官通常会问:
项目架构
例如:
- 整体框架是什么?
- 软件如何分层?
模块设计
例如:
- 为什么这样设计?
- 有没有更好的方案?
问题定位
例如:
- 遇到过哪些Bug?
- 如何排查?
性能优化
例如:
- 如何降低CPU占用率?
- 如何减少内存使用?
如果一个项目你只是照着教程完成,很容易在这一环节暴露问题。
八、综合能力考察
除了技术能力之外,面试官还会关注:
学习能力
例如:
- 最近学习了什么技术?
- 如何学习新芯片?
解决问题能力
例如:
- 遇到Bug怎么办?
- 如何定位偶发故障?
工程思维
例如:
- 如何设计可维护的软件架构?
- 如何提高代码可复用性?
这些问题没有标准答案,但能体现候选人的成长潜力。
结语
对于嵌入式工程师而言,面试并不是单纯考察知识点背诵能力。
企业真正关注的是:
- 是否具备扎实的C语言基础
- 是否理解底层硬件原理
- 是否掌握常见通信协议
- 是否具备RTOS开发能力
- 是否能够独立分析和解决问题
- 是否真正参与过项目开发
如果按照下面的路线进行准备:
C语言 → 数据结构 → STM32 → 通信协议 → FreeRTOS → Linux → 项目深挖
基本已经覆盖了绝大多数嵌入式实习、校招以及初级社招岗位的面试要求。
面试的本质不是背题,而是证明你具备成为一名合格嵌入式工程师的能力。
点众科技工作强度 7人发布