数字逻辑基础
数字电路面试不仅考察逻辑门的使用,更关注时序分析和状态机设计。
1. 时序分析
建立时间(Setup Time)和保持时间(Hold Time)是理解数字系统稳定性的关键。面试官常问:如果建立时间违例,可以通过什么方法修复?(答案通常包括降低时钟频率、优化组合逻辑路径等)。
2. FSM状态机
摩尔型(Moore)与米利型(Mealy)状态机的区别是什么?请描述一个检测序列“1011”的状态机设计思路。在FPGA开发中,三段式状态机写法为何被推崇?
3. 跨时钟域处理
当信号在不同频率或相位的时钟域之间传输时,如何处理亚稳态?同步器(两级触发器)的工作原理是什么?异步FIFO的设计要点有哪些?
嵌入式软件技能树
嵌入式软件工程师的面试通常涵盖C语言底层特性、操作系统原理及驱动开发。
1. C语言陷阱
volatile关键字的作用是什么?static关键字在函数内部和全局变量中的区别?指针与数组的差异?内存泄漏如何检测与预防?
2. RTOS原理
任务调度的算法有哪些(RR, FIFO, Priority)?什么是优先级反转?如何解决优先级反转问题(优先级继承机制)?信号量与互斥量的区别?
3. 驱动开发
中断处理的上半部与下半部区别?中断屏蔽与关中断的区别?设备树(Device Tree)的作用及编写规范?
MCU硬件接口详解
硬件接口是连接软件与物理世界的桥梁,面试中常结合实际芯片 datasheet 提问。
1. 常用总线协议
I2C与SPI的区别?I2C的上拉电阻如何选择?SPI的四线制(MOSI, MISO, SCK, CS)时序是怎样的?UART的波特率计算及奇偶校验作用?
2. 传感器接口
I2S音频接口协议原理?CAN总线在汽车行业中的应用及仲裁机制?USB 2.0与USB 3.0的物理层差异?