嵌入式面试常考八股文汇总
嵌入式岗位面试中,除了项目经历,面试官也很喜欢围绕基础知识、单片机原理、RTOS、通信协议、Bootloader、C语言底层细节等内容展开提问。
下面给大家整理了 40 个嵌入式面试高频题目,适合用来查漏补缺、系统复习。
一、C语言与基础知识
volatile关键字的作用是什么?哪些场景必须使用?const和#define的区别是什么?- 指针和数组的区别是什么?
malloc、calloc、realloc的区别是什么?- 结构体内存对齐的原理是什么?为什么要进行内存对齐?
- 大端模式和小端模式有什么区别?如何判断当前平台的字节序?
static关键字在局部变量、全局变量、函数中分别有什么作用?- 什么是野指针?什么是内存泄漏?如何避免?
- 函数指针的作用是什么?在嵌入式中有哪些应用场景?
extern的作用是什么?
更加全面的嵌入式面试八股文和大厂面试题都整理在专栏了:
https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
二、STM32 / MCU 基础
- STM32 上电后的启动流程是怎样的?
- STM32 的启动模式有哪些?Boot0 / Boot1 有什么作用?
- GPIO 的工作模式有哪些?推挽输出和开漏输出有什么区别?
- 中断的执行流程是怎样的?中断服务函数里一般要注意什么?
- NVIC 的作用是什么?中断优先级是怎么管理的?
- 定时器有哪些常见用途?基本定时器、通用定时器、高级定时器有什么区别?
- PWM 的原理是什么?如何通过 PWM 控制电机速度?
- ADC 的采样原理是什么?如何提高采样稳定性?
- DMA 的作用是什么?什么场景下适合使用 DMA?
- 看门狗分为哪几种?独立看门狗和窗口看门狗有什么区别?
三、RTOS 实时操作系统
- 什么是 RTOS?它和裸机开发的区别是什么?
- RT-Thread 和 FreeRTOS 的任务调度机制是怎样的?
- 任务、线程、进程三者有什么区别?
- 什么是临界区?如何避免临界资源冲突?
- 信号量和互斥锁有什么区别?
- 消息队列的作用是什么?适用于哪些场景?
- 事件组和消息队列有什么区别?
- 为什么会发生任务死锁?如何避免?
- 任务堆栈溢出通常有哪些表现?如何排查?
- 什么是优先级反转?如何解决优先级反转问题?
四、通信协议
- UART、RS232、RS485 三者有什么区别?
- IIC 和 SPI 的区别是什么?各自适用于什么场景?
- Modbus RTU 协议的基本格式是怎样的?
- Modbus 中保持寄存器、输入寄存器、线圈、离散输入有什么区别?
- 为什么 Modbus 通信中会出现超时、CRC 校验错误、收发异常?
- TCP 和 UDP 的区别是什么?
- MQTT 协议的特点是什么?为什么物联网项目常用 MQTT?
- USB 通信的基本原理是什么?
- CAN 总线有什么特点?和 RS485 相比有什么区别?
- Bootloader 和 OTA 升级的基本实现思路是什么?
结尾总结
以上这些题目基本覆盖了嵌入式面试中的高频考点,尤其是 C语言基础、STM32 外设、RTOS、通信协议 和 Bootloader/OTA,几乎都是面试中的重点内容。

