联想嵌入式软件开发一面 面经
最近整理了一次 联想嵌入式软件开发岗位的一面面试问题。整体感觉是:面试更偏向 基础扎实程度 + 对嵌入式系统的理解深度,很多问题看起来很基础,但如果深入问下去,其实比较考察底层理解。
一面整体节奏通常是:
- 简单自我介绍
- 项目介绍
- 基础技术问题
- 根据项目延伸提问
下面整理了一些比较有代表性的题目,仅供准备面试时参考。
一面技术问题
- volatile 关键字在嵌入式开发中的作用是什么?在哪些场景必须使用?
- const、static、extern 这几个关键字分别有什么作用?在嵌入式开发中常见的使用场景是什么?
- 栈(stack)和堆(heap)有什么区别?在嵌入式系统中为什么通常不推荐频繁使用动态内存?
- 结构体内存对齐的原理是什么?如果关闭内存对齐会带来什么影响?
- 什么是中断?中断处理函数设计时需要注意哪些问题?
- 中断和轮询各自的优缺点是什么?在什么情况下更适合使用中断?
- 什么是临界区?在嵌入式系统中如何保护临界区?
- 如果系统中出现竞态条件(Race Condition),一般有哪些解决方法?
- UART、SPI、I2C 三种通信方式有什么区别?各自适合什么应用场景?
- CAN 总线通信的基本特点是什么?为什么在汽车电子中使用非常广泛?
- 什么是 CAN FD?相比传统 CAN 有哪些改进?
- 在嵌入式系统中,如果任务优先级设计不合理可能会出现什么问题?
- 什么是优先级反转(Priority Inversion)?一般有哪些解决方案?
- 如果嵌入式系统出现偶发死机,你会如何排查问题?
八股文准备方法
在准备嵌入式面试时,很多人会整理所谓的“八股文”,但如果只是单纯记答案,往往很难应对深入追问。比较有效的方法通常有以下几种。
第一,按知识模块整理。将常见面试知识划分为几个核心模块,例如:
- C语言基础
- 嵌入式系统基础
- 操作系统(RTOS)
- 通信协议
- 系统调试与问题定位
每个模块整理 10~20 个核心问题,形成自己的知识框架。
第二,结合项目经验理解问题。很多面试官在问完基础问题后,往往会追问:“在你的项目中有没有用到?”因此在复习时,可以尝试把知识点和自己的项目经验联系起来。
第三,建立自己的知识笔记。将常见问题整理成一份文档或笔记,每个问题形成一个简短的知识点总结,定期复习,可以快速巩固基础。
第四,多进行模拟表达。面试不仅考察知识,还考察表达能力。可以尝试自己讲一遍问题的思路,让回答更加清晰、有逻辑。
嵌入式八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
(专栏包括各类基础八股文以及大厂面试题等内容)
嵌入式面试常考的20个八股文问题
下面整理了一些嵌入式面试中出现频率比较高的经典问题:
volatile的作用是什么?const在嵌入式开发中的使用场景有哪些?static关键字有哪些作用?- 指针和数组有什么区别?
sizeof和strlen的区别是什么?- 结构体内存对齐为什么存在?
- 栈和堆有什么区别?
- 什么是内存泄漏?
- 什么是中断?
- 中断处理函数为什么要尽量简短?
- 什么是临界区?
- 什么是竞态条件?
- 什么是死锁?
- 什么是优先级反转?
- UART、SPI、I2C 的区别是什么?
- CAN 总线的基本特点是什么?
- 什么是 CAN FD?
- 看门狗(Watchdog)的作用是什么?
- Bootloader 的作用是什么?
- 嵌入式系统出现死机时如何定位问题?

查看17道真题和解析