春招拉开帷幕。 无论是初出茅庐的应届生,还是寻求突破的职场老兵,面对竞争日益激烈的嵌入式岗位,你是否做好了充足的准备?
嵌入式开发是一个对综合能力要求极高 的领域,既需要扎实的C语言功底,又需要对硬件底层的深刻理解,还要熟悉操作系统和各种通信协议。为了帮助大家在面试中脱颖而出,我们精心整理了这份面试题库。
本文不仅涵盖了经典的必考题 ,还融入了2026年行业关注的热点方向。建议收藏,反复研读,祝大家都能拿到心仪的Offer!
1. 进程和线程的区别?
进程是程序的一次执行实例,拥有独立的地址空间和系统资源;
线程是进程内的执行单元,多个线程共享所属进程的资源,但各自拥有独立的栈和寄存器状态。
区别:进程间隔离性强、开销大;线程轻量、通信高效,但需同步机制保障安全。
2. 什么是死锁?如何预防?
死锁是多个进程/线程互相等待对方释放资源。
预防:按固定顺序加锁、避免持有并等待、使用超时机制。
3. STM32的GPIO有哪几种工作模式?
输入(浮空/上拉/下拉)、输出(推挽/开漏)、复用功能、模拟模式。
4. volatile关键字作用?
告诉编译器该变量可能被外部(如硬件、中断)修改,禁止优化,每次必须从内存读取。
5. 堆和栈的区别?
栈由系统自动管理,速度快但容量小;
堆需手动分配(malloc/new),灵活但易泄漏、速度慢。
6. TCP和UDP区别?
TCP面向连接、可靠、有序;
UDP无连接、不可靠、低延迟,适用于音视频等实时场景。
7. 什么是三次握手?
Client发SYN → Server回SYN+ACK → Client发ACK,建立可靠连接,防止历史请求干扰。
8. I2C和SPI的区别?
I2C:两线(SDA/SCL)、半双工、多主多从、速度慢;SPI:四线(MOSI/MISO/SCLK/CS)、全双工、主从结构、速度快。
9. 为什么析构函数要声明为虚函数?
确保通过基类指针删除派生类对象时,能正确调用派生类析构函数,避免资源泄漏。
10. new 和 malloc 的区别?
new 是C++操作符,调用构造函数、类型安全;malloc 是C函数,只分配内存,返回void*。
11. 什么是看门狗?作用?
看门狗是硬件定时器,程序需定期"喂狗",否则超时复位,用于防止系统死锁。
12. RTOS的任务调度方式?
优先级调度(高优先执行)、时间片轮转(同优先级轮流执行),支持抢占。
13. Linux设备节点在哪?
在 /dev 目录下,如 /dev/ttyS0、/dev/mmcblk0。
14. 常量存储在哪个内存区?
字符串字面量等常量存放在只读数据段(常量区),程序结束由系统回收。
15. 硬链接和软链接区别?
硬链接共享inode,不能跨文件系统;
软链接是独立文件,指向路径,可跨文件系统。
16. 中断和异常的区别?
中断来自外部硬件(异步),异常由CPU内部错误或指令触发(同步)。
17. C程序编译四阶段?
预处理 → 编译 → 汇编 → 链接。
18. static的作用?
限制作用域(文件内)或延长生命周期(局部静态变量),类中表示共享成员。
19. 大小端是什么?网络用哪种?
大端:高位存低地址;
小端:低位存低地址。网络字节序为大端。
20.如何查看Linux系统性能?
用 top、htop、free -h、iostat、vmstat 等命令监控CPU、内存、IO等。
21.C/C++程序内存分布情况,常量所在的区
C/C++程序内存分为五区:栈(局部变量)、堆(动态分配)、全局/静态区(全局和static变量)、常量区(字符串字面量、const全局/静态变量,只读)、代码区(函数机器指令)。
其中常量(如 "hello"、const char* p = "..." 中的字符串)存储在常量区,程序结束时由系统释放。
22.linux查看系统性能命令
Linux中常用top(实时进程与CPU/内存)、htop(增强版top)、vmstat(虚拟内存统计)、iostat(磁盘I/O)、free -h(内存使用)、df -h(磁盘空间)、uptime(负载均值)等命令快速查看系统性能
23.linux7种文件设备类型,硬盘属于哪种设备?
Linux中文件类型有7种:普通文件(-)、目录(d)、符号链接(l)、字符设备(c)、块设备(b)、管道(p)、套接字(s)。
硬盘属于块设备(b),因其以固定大小的数据块为单位进行读写。
24.驱动设备节点保存在哪个目录?
Linux中驱动设备节点通常保存在 /dev 目录下,由内核或udev动态创建,用于用户空间与设备驱动交互。
25.介绍一下STM32 GPIO
STM32的GPIO(通用输入输出)引脚可配置为输入(浮空、上拉、下拉)、输出(推挽、开漏)、复用功能(如UART、I2C)或模拟模式,支持设置输出速度、上下拉电阻,并可通过寄存器或HAL库进行高效控制,是连接外设的基础接口。
26.什么是内存映射?MCU的地址空间通常包含哪些部分?
将Flash,SRAM,外设寄存器等映射到统一的线性地址空间。包含:代码区(Flash),数据区(SRAM),外设寄存器区,位带别名区,系统控制块等。
27.NVIC是什么?它的主要功能?
嵌套向量中断控制器。功能:管理所有中断的使能/禁用,优先级配置,中断挂起和响应。
28.FPU是什么?有什么优势?
浮点运算单元。优势:大幅提升单精度/双精度浮点数运算速度,降低功耗。
29.什么是位带(Bit-Banding)功能?它有什么用?
将特定内存区和外设区的每个位(bit)映射到别名区的一个字(word)。
通过读写别名区的字,就能实现原子性的位操作,无需"读-改-写"三步。
30.MPU在嵌入式系统中起什么作用?
内存保护单元。可为不同任务(在RTOS中)分配不同的内存访问权限(只读,只执行等),防止任务间非法内存访问,提升系统鲁棒性。
...
更多嵌入式学习资料:
