嵌入式软件 / 电子工程师 / 电工 面试题汇总
Q:volatile 关键字的作用是什么?相关知识点:Q:static 关键字在嵌入式中有哪些用法?Q:什么是大端(Big Endian)和小端(Little Endian)?如何判断?相关知识点:网络通信中需要 / 进行字节序转换。Q:中断服务函数(ISR)编写有哪些注意事项?Q:什么是内存对齐?为什么需要对齐?相关知识点: 取消对齐; (GCC)Q:FreeRTOS 中任务、队列、信号量的基本
第一部分:嵌入式软件工程师面试题
🔴 必问题目
1. C 语言基础
Q:volatile 关键字的作用是什么?
解析:告诉编译器该变量可能被外部因素(硬件、中断、多线程)修改,禁止编译器对其进行优化(如缓存到寄存器)。每次访问都必须从内存中读取。
相关知识点:
- 用于硬件寄存器映射:
volatile uint32_t *reg = (volatile uint32_t *)0x40000000; - 用于中断服务函数与主循环共享的标志变量
- 与
const可同时使用:const volatile(只读硬件寄存器)
Q:static 关键字在嵌入式中有哪些用法?
解析:
- 修饰局部变量:变量存储在静态区,函数退出后值保留
- 修饰全局变量/函数:限制作用域在本文件,防止命名冲突(模块化编程常用)
- 修饰类成员(C++):所有对象共享
Q:什么是大端(Big Endian)和小端(Little Endian)?如何判断?
解析:
- 大端:高字节存低地址(网络字节序)
- 小端:低字节存低地址(x86、ARM 默认小端)
// 判断方法
int check_endian() {
int x = 1;
return *(char *)&x; // 返回1为小端,返回0为大端
}
相关知识点:网络通信中需要 htonl()/ntohl() 进行字节序转换。
Q:中断服务函数(ISR)编写有哪些注意事项?
解析:
- 尽量短小,不做耗时操作
- 不能使用
printf(不可重入)- 共享变量必须加
volatile- 不能调用可能阻塞的函数(如
malloc)- 注意关中断/开中断保护临界区
Q:什么是内存对齐?为什么需要对齐?
解析:CPU 访问内存时,按对齐地址访问效率最高,部分架构(如 ARM Cortex-M0)不支持非对齐访问会触发 HardFault。
struct A {
char a; // 1字节
int b; // 4字节,实际偏移4(填充3字节)
char c; // 1字节,实际总大小12
};
// sizeof(A) = 12,不是6
相关知识点:#pragma pack(1) 取消对齐;__attribute__((packed)) (GCC)
2. RTOS / 操作系统
Q:FreeRTOS 中任务、队列、信号量的基本概念?
解析:
- 任务(Task):独立执行单元,有自己的栈空间,通过优先级调度
- 队列(Queue):任务间传递数据,线程安全,支持阻塞等待
- 信号量(Semaphore):
- 二值信号量:互斥/同步
- 计数信号量:资源计数
- 互斥量(Mutex):带优先级继承,防止优先级反转
Q:什么是优先级反转?如何解决?
解析:低优先级任务持有高优先级任务需要的资源,导致高优先级任务被阻塞,而中优先级任务却能运行。
解决方案:
- 优先级继承:低优先级任务临时提升到高优先级(FreeRTOS Mutex 自动实现)
- 优先级天花板:持有锁的任务直接提升到最高优先级
Q:任务间通信方式有哪些?
解析:
- 全局变量(需加 volatile + 临界区保护)
- 队列(Queue)—— 推荐,安全
- 信号量 / 事件标志组
- 邮箱(部分 RTOS)
- 共享内存 + 互斥锁
3. 微控制器 / 硬件接口
Q:SPI、I2C、UART 的区别?
| 特性 | UART | SPI | I2C |
|---|---|---|---|
| 线数 | 2(TX/RX) | 4(MOSI/MISO/CLK/CS) | 2(SDA/SCL) |
| 速度 | 低(~1Mbps) | 高(几十Mbps) | 中(400kbps~3.4Mbps) |
| 主从 | 点对点 | 一主多从(多CS) | 一主多从(地址区分) |
| 全双工 | 是 | 是 | 否(半双工) |
| 应用 | 调试/GPS/蓝牙 | Flash/显示屏 | 传感器/EEPROM |
Q:DMA 是什么?有什么优势?
解析:Direct Memory Access,直接内存访问。允许外设直接与内存交换数据,无需 CPU 参与每次传输,大幅降低 CPU 占用率。
应用场景:ADC 连续采样、UART 大数据收发、SPI 屏幕刷新
Q:看门狗(Watchdog)的作用和原理?
解析:硬件定时器,程序必须在规定时间内"喂狗"(复位计数器),否则触发系统复位。用于检测程序跑飞、死锁等异常。
分类:
- 独立看门狗(IWDG):由独立时钟驱动,更可靠
- 窗口看门狗(WWDG):必须在时间窗口内喂狗,防止过早喂狗
Q:ADC 采样中的常见问题?
解析:
- 采样率:需满足奈奎斯特定理(采样率 ≥ 2倍信号频率)
- 抗混叠滤波:采样前加低通滤波器
- 参考电压稳定性:影响精度
- 信号调理:放大、偏置、滤波
- 过采样:提高有效位数
4. 内存管理
Q:嵌入式系统中 RAM 的分区?
解析:
- .text:代码段(Flash)
- .rodata:只读数据(Flash)
- .data:已初始化全局/静态变量(RAM,从Flash复制)
- .bss:未初始化全局/静态变量(RAM,清零)
- 堆(Heap):动态分配(malloc)
- 栈(Stack):局部变量、函数调用
Q:嵌入式中为什么尽量避免动态内存分配(malloc/free)?
解析:
- 内存碎片化,长时间运行可能分配失败
- 分配时间不确定,影响实时性
- 堆溢出难以检测
- 嵌入式 RAM 有限
替代方案:静态内存池、固定大小内存块分配
🟡 常问题目
Q:如何调试嵌入式程序?
JTAG/SWD 调试器(J-Link/ST-Link)、串口打印、逻辑分析仪、示波器、LED 指示
Q:什么是 Bootloader?
上电后运行的小程序,负责初始化硬件、验证固件、跳转到应用程序。支持 OTA 升级的关键。
Q:如何实现低功耗设计?
关闭不用的外设时钟、使用睡眠/深度睡眠模式、降低主频、用中断唤醒代替轮询
Q:什么是位操作?常用技巧?
// 置位第n位
reg |= (1 << n);
// 清零第n位
reg &= ~(1 << n);
// 翻转第n位
reg ^= (1 << n);
// 读取第n位
bit = (reg >> n) & 1;
Q:const 和 #define 的区别?
const 有类型检查、有作用域、调试可见;#define 是文本替换,无类型,无作用域,预处理阶段处理。
第二部分:电子工程师(硬件)面试题
🔴 必问题目
1. 模拟电路
Q:运算放大器的虚短和虚断是什么?
解析:
- 虚短:理想运放两输入端电压相等(V+ = V-),但并非真正短路
- 虚断:理想运放输入端电流为零(输入阻抗无穷大)
应用:用于分析反相放大器、同相放大器、差分放大器等电路。
Q:反相放大器和同相放大器的增益公式?
解析:
- 反相放大器:
Av = -Rf/Rin(输出与输入反相)- 同相放大器:
Av = 1 + Rf/Rin(输出与输入同相)
Q:滤波器的种类和特点?
| 类型 | 特点 | 应用 |
|---|---|---|
| 低通 | 通低频,截高频 | 抗混叠、去噪 |
| 高通 | 通高频,截低频 | 去直流偏置 |
| 带通 | 通特定频段 | 选频 |
| 带阻 | 截特定频段 | 陷波(50Hz工频干扰) |
Q:什么是 RC 充放电时间常数?
解析:
τ = RC,充电到 63.2% 或放电到 36.8% 所需时间。
充电到 99% 约需 5τ。
应用:滤波电路设计、延时电路、上电复位电路
Q:三极管的三种工作状态?
解析:
- 截止区:Vbe < 0.7V,Ic ≈ 0,相当于断开的开关
- 放大区:Ic = β × Ib,线性放大
- 饱和区:Vce ≈ 0.2V,相当于闭合的开关
嵌入式常用:用三极管做开关驱动继电器、LED、蜂鸣器
2. 数字电路
Q:建立时间(Setup Time)和保持时间(Hold Time)是什么?
解析:
- 建立时间:时钟上升沿前,数据必须稳定的最短时间
- 保持时间:时钟上升沿后,数据必须继续保持稳定的最短时间
违反这两个时序约束会导致触发器进入亚稳态。
Q:什么是亚稳态?如何处理?
解析:触发器在建立/保持时间不满足时,输出不确定(既不是0也不是1),需要一段时间才能稳定。
处理方法:
- 跨时钟域信号使用两级触发器同步(双寄存器同步)
- 使用异步 FIFO 处理跨时钟域数据
Q:上拉电阻和下拉电阻的作用?
解析:
- 上拉:将悬空引脚拉到高电平,防止不确定状态;I2C 总线必须上拉
- 下拉:将悬空引脚拉到低电平
- 阻值选择:太小耗电大,太大上升沿慢(I2C 常用 4.7kΩ)
Q:去耦电容的作用和选型?
解析:滤除电源上的高频噪声,为芯片提供瞬态电流。
选型原则:
- 每个 IC 电源引脚旁放 100nF 陶瓷电容(高频)
- 板级放 10~100μF 电解电容(低频储能)
- 尽量靠近引脚放置,走线要短
3. PCB 设计
Q:PCB 布局布线的基本原则?
解析:
- 数字地和模拟地分开,单点接地
- 高频信号线短而直,避免直角(用45°或圆弧)
- 差分线等长等距
- 电源线加宽(1A 约需 1mm 线宽,参考具体铜厚)
- 晶振靠近芯片,下方不走信号线
- 去耦电容靠近电源引脚
Q:阻抗匹配的意义?
解析:高速信号传输时,若源阻抗、传输线阻抗、负载阻抗不匹配,会产生反射,导致信号完整性问题(振铃、过冲)。
常见:USB、以太网、射频电路需要 50Ω 或 100Ω 差分阻抗控制。
🟡 常问题目
Q:ESD 防护器件有哪些?
TVS 二极管(瞬态抑制)、压敏电阻(MOV)、肖特基二极管、ESD 保护阵列
Q:如何测量电路中的电流?
串联采样电阻(分流器)+ 差分放大器;或使用霍尔电流传感器(非接触)
Q:开关电源和线性电源的区别?
开关电源:效率高(80~95%),体积小,有开关噪声;线性电源:噪声低,效率低(发热大),适合模拟电路
Q:什么是共模干扰和差模干扰?
共模:两根线上相对地的相同干扰,用共模电感抑制;差模:两根线之间的干扰,用差模电感/电容抑制
Q:如何选择 MOSFET?
关注:Vds(耐压)、Id(电流)、Rds(on)(导通电阻)、Vgs(th)(驱动电压)、开关速度
第三部分:电工面试题
🔴 必问题目
1. 安全规范
Q:电工作业的基本安全规定?
解析:
- 停电、验电、挂牌(“禁止合闸,有人工作”)、装设接地线
- 低压作业:单人操作需有人监护
- 高压作业:必须两人,一人操作一人监护
- 安全距离:10kV 设备不停电时,人体与带电体距离 ≥ 0.7m
- 使用绝缘工具,穿绝缘鞋
Q:触电急救的正确方法?
解析:
- 立即切断电源(不能直接拉人)
- 用绝缘物(木棍、干布)使触电者脱离电源
- 判断意识和呼吸
- 无意识无呼吸:立即进行 CPR(胸外按压 30次 + 人工呼吸 2次)
- 拨打 120
Q:三相四线制和三相五线制的区别?
解析:
- 三相四线制(TN-C):三根相线 + 一根 PEN 线(中性线和保护线合一),老旧系统
- 三相五线制(TN-S):三根相线 + 一根 N 线(中性线)+ 一根 PE 线(保护地线),现代标准,安全性更高
Q:漏电保护器(RCD)的工作原理?
解析:检测相线和中性线电流之差(正常时为零),当差值超过动作电流(通常 30mA)时,在 0.1s 内跳闸。
注意:
- 漏电保护器不能防止相线与相线之间的触电
- 不能替代过流保护(需配合断路器使用)
Q:电动机的正反转控制原理?
解析:交换三相电源中任意两相的接线,即可改变旋转磁场方向,实现电机反转。
控制电路:使用两个接触器(KM1 正转、KM2 反转),必须加互锁(电气互锁 + 机械互锁),防止两个接触器同时吸合造成短路。
Q:变压器的工作原理?
解析:基于电磁感应原理。一次侧交流电产生交变磁通,通过铁芯耦合到二次侧,感应出电压。
变压比:U1/U2 = N1/N2(匝数比)
电流比:I1/I2 = N2/N1(电流与匝数成反比)
2. 电气设备
Q:断路器(空气开关)的选型原则?
解析:
- 额定电流 ≥ 负载电流 × 1.25(留余量)
- 额定电压 ≥ 线路电压
- 分断能力 ≥ 短路电流
- 照明回路:C 型(C10、C16);电机回路:D 型(耐受启动冲击电流)
Q:接地的种类和作用?
解析:
- 工作接地:变压器中性点接地,保证系统正常运行
- 保护接地(PE):设备外壳接地,防止漏电触电
- 重复接地:TN-C 系统中 PEN 线多点接地,提高安全性
- 防雷接地:引导雷电流入地
Q:功率因数是什么?如何提高?
解析:
cosφ = P/S,有功功率与视在功率之比。感性负载(电机、变压器)功率因数低。
提高方法:并联电容器组进行无功补偿(就地补偿或集中补偿)
Q:电缆的选型依据?
解析:
- 按载流量选截面(查手册,考虑敷设方式、环境温度)
- 按电压降校验(长距离线路)
- 按短路热稳定校验(大电流系统)
- 常用:铜芯 1A/mm²(保守估算),铝芯 0.7A/mm²
🟡 常问题目
Q:什么是电气图纸中的主回路和控制回路?
主回路:大电流通路(电源→断路器→接触器→电机);控制回路:小电流控制信号(按钮→继电器→接触器线圈)
Q:PLC 的工作原理?
循环扫描:输入采样→程序执行→输出刷新,周期通常 1~100ms
Q:变频器的作用?
通过改变电源频率调节电机转速,实现软启动、节能、调速
Q:什么是星形(Y)接法和三角形(△)接法?
Y 接:相电压 = 线电压/√3,适合轻载启动;△ 接:相电压 = 线电压,适合重载运行。Y-△ 降压启动可将启动电流降低到直接启动的 1/3
Q:如何判断三相电机好坏?
用万用表测三相绕组电阻(应相等且不为零不为无穷);用兆欧表测绝缘电阻(对地 ≥ 0.5MΩ)
附录:面试通用建议
项目经验回答框架(STAR 法则)
- Situation:项目背景
- Task:你的任务
- Action:你做了什么
- Result:结果如何(量化)
常见加分点
- 熟悉 Git 版本管理
- 了解代码规范(MISRA C)
- 有实际调试经验(示波器、逻辑分析仪)
- 了解 EMC/EMI 基础知识
- 有相关证书(电工证、注册电气工程师等)
反问面试官的好问题
- 团队目前在做什么项目?
- 使用什么开发工具和流程?
- 新人入职后的培训安排?
文档生成时间:2026-03-22
涵盖方向:嵌入式软件工程师 / 硬件电子工程师 / 电工
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐
所有评论(0)