联发科嵌入式一面 面经
联发科嵌入式一面偏向底层理解 + 系统思维 + 追问能力,问题通常从基础切入,但会不断深入到实现机制、设计权衡以及工程场景,重点看是否真正理解“为什么”。
二、面试题目
- static关键字在不同作用域下的本质区别?编译期和链接期分别如何处理?
- volatile的作用边界是什么?为什么它不能保证原子性?通常在哪些场景必须使用?
- malloc的内存分配机制(如brk/mmap)?如何避免内存碎片?
- 栈和堆的增长方式?函数调用时栈帧结构是怎样的?
- 结构体内存对齐的规则?如何手动控制对齐?对性能的影响是什么?
- 指针越界为什么危险?在MMU存在和不存在时有何区别?
- 进程和线程在Linux中的本质区别(task_struct角度)?
- 上下文切换具体保存了哪些内容?为什么代价高?
- 互斥锁、自旋锁、信号量的实现原理及适用场景?
- 死锁如何检测?实际工程中如何避免?
- select / poll / epoll底层实现区别?epoll为什么更高效?
- 虚拟内存到物理内存的映射过程?TLB的作用是什么?
- cache一致性问题是如何产生的?MESI协议大致原理?
- 中断处理流程(从硬件触发到ISR执行)?为什么要有上半部和下半部?
- SPI和I2C在硬件实现上的本质区别?各自适用场景?
- Bootloader启动流程(从上电到内核加载)?
- 字符设备驱动的基本结构?read/write调用路径?
- 在项目中如何定位一个“偶现”的系统卡死问题?请给出完整思路
嵌入式八股文专栏(全网最全面的嵌入式八股文专栏,包含大厂面试题):https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
三、总结
整体面试不在于题目多难,而在于是否能从一个问题不断深入讲清原理。能讲到数据结构、系统调用、硬件行为这一层,基本就能拉开差距。
四、面试准备方法
1. 建立“知识纵深”而不是只记概念每个知识点至少准备三层:
- 是什么(定义)
- 为什么(原理)
- 怎么用(场景 + trade-off)
2. 重点打通三条主线
- C语言 → 内存模型 → 编译/链接
- 操作系统 → 调度 → 同步机制 → IO模型
- 嵌入式 → 驱动 → 硬件接口 → 系统启动
3. 项目准备按“面试官视角”重构至少准备清楚:
- 架构设计(为什么这样分层)
- 核心难点(如何解决)
- 性能/稳定性优化(有没有量化结果)
4. 强化“追问能力”训练练习方式:
- 自问自答:每个问题连续追问3层
- 例如:epoll → 为什么快 → 红黑树/回调 → 内核态机制
5. 模拟真实表达场景
- 每题控制在1~2分钟说清核心
- 少背诵,多“推导式表达”
- 避免只给结论,要讲过程
