第一部分:嵌入式软件工程师面试题

🔴 必问题目

1. C 语言基础

Q:volatile 关键字的作用是什么?

解析:告诉编译器该变量可能被外部因素(硬件、中断、多线程)修改,禁止编译器对其进行优化(如缓存到寄存器)。每次访问都必须从内存中读取。

相关知识点:

  • 用于硬件寄存器映射:volatile uint32_t *reg = (volatile uint32_t *)0x40000000;
  • 用于中断服务函数与主循环共享的标志变量
  • const 可同时使用:const volatile(只读硬件寄存器)

Q:static 关键字在嵌入式中有哪些用法?

解析:

  1. 修饰局部变量:变量存储在静态区,函数退出后值保留
  2. 修饰全局变量/函数:限制作用域在本文件,防止命名冲突(模块化编程常用)
  3. 修饰类成员(C++):所有对象共享

Q:什么是大端(Big Endian)和小端(Little Endian)?如何判断?

解析:

  • 大端:高字节存低地址(网络字节序)
  • 小端:低字节存低地址(x86、ARM 默认小端)
// 判断方法
int check_endian() {
    int x = 1;
    return *(char *)&x; // 返回1为小端,返回0为大端
}

相关知识点:网络通信中需要 htonl()/ntohl() 进行字节序转换。


Q:中断服务函数(ISR)编写有哪些注意事项?

解析:

  1. 尽量短小,不做耗时操作
  2. 不能使用 printf(不可重入)
  3. 共享变量必须加 volatile
  4. 不能调用可能阻塞的函数(如 malloc
  5. 注意关中断/开中断保护临界区

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:任务间通信方式有哪些?

解析:

  1. 全局变量(需加 volatile + 临界区保护)
  2. 队列(Queue)—— 推荐,安全
  3. 信号量 / 事件标志组
  4. 邮箱(部分 RTOS)
  5. 共享内存 + 互斥锁

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)?

解析:

  1. 内存碎片化,长时间运行可能分配失败
  2. 分配时间不确定,影响实时性
  3. 堆溢出难以检测
  4. 嵌入式 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 布局布线的基本原则?

解析:

  1. 数字地和模拟地分开,单点接地
  2. 高频信号线短而直,避免直角(用45°或圆弧)
  3. 差分线等长等距
  4. 电源线加宽(1A 约需 1mm 线宽,参考具体铜厚)
  5. 晶振靠近芯片,下方不走信号线
  6. 去耦电容靠近电源引脚

Q:阻抗匹配的意义?

解析:高速信号传输时,若源阻抗、传输线阻抗、负载阻抗不匹配,会产生反射,导致信号完整性问题(振铃、过冲)。

常见:USB、以太网、射频电路需要 50Ω 或 100Ω 差分阻抗控制。


🟡 常问题目

Q:ESD 防护器件有哪些?

TVS 二极管(瞬态抑制)、压敏电阻(MOV)、肖特基二极管、ESD 保护阵列

Q:如何测量电路中的电流?

串联采样电阻(分流器)+ 差分放大器;或使用霍尔电流传感器(非接触)

Q:开关电源和线性电源的区别?

开关电源:效率高(80~95%),体积小,有开关噪声;线性电源:噪声低,效率低(发热大),适合模拟电路

Q:什么是共模干扰和差模干扰?

共模:两根线上相对地的相同干扰,用共模电感抑制;差模:两根线之间的干扰,用差模电感/电容抑制

Q:如何选择 MOSFET?

关注:Vds(耐压)、Id(电流)、Rds(on)(导通电阻)、Vgs(th)(驱动电压)、开关速度


第三部分:电工面试题

🔴 必问题目

1. 安全规范

Q:电工作业的基本安全规定?

解析:

  1. 停电、验电、挂牌(“禁止合闸,有人工作”)、装设接地线
  2. 低压作业:单人操作需有人监护
  3. 高压作业:必须两人,一人操作一人监护
  4. 安全距离:10kV 设备不停电时,人体与带电体距离 ≥ 0.7m
  5. 使用绝缘工具,穿绝缘鞋

Q:触电急救的正确方法?

解析:

  1. 立即切断电源(不能直接拉人)
  2. 用绝缘物(木棍、干布)使触电者脱离电源
  3. 判断意识和呼吸
  4. 无意识无呼吸:立即进行 CPR(胸外按压 30次 + 人工呼吸 2次)
  5. 拨打 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. 额定电流 ≥ 负载电流 × 1.25(留余量)
  2. 额定电压 ≥ 线路电压
  3. 分断能力 ≥ 短路电流
  4. 照明回路:C 型(C10、C16);电机回路:D 型(耐受启动冲击电流)

Q:接地的种类和作用?

解析:

  • 工作接地:变压器中性点接地,保证系统正常运行
  • 保护接地(PE):设备外壳接地,防止漏电触电
  • 重复接地:TN-C 系统中 PEN 线多点接地,提高安全性
  • 防雷接地:引导雷电流入地

Q:功率因数是什么?如何提高?

解析:cosφ = P/S,有功功率与视在功率之比。感性负载(电机、变压器)功率因数低。

提高方法:并联电容器组进行无功补偿(就地补偿或集中补偿)


Q:电缆的选型依据?

解析:

  1. 按载流量选截面(查手册,考虑敷设方式、环境温度)
  2. 按电压降校验(长距离线路)
  3. 按短路热稳定校验(大电流系统)
  4. 常用:铜芯 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
涵盖方向:嵌入式软件工程师 / 硬件电子工程师 / 电工

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐