嵌入式面试宝典

目录

一、C语言篇(2道)

二、C++篇(2道)

三、网络编程篇(2道)

四、进程篇(2道)

五、底层篇(2道)

六、系统移植篇(2道)

七、通信协议篇(2道)

为什么这份资料值得你拥有?

如何获取完整PDF?

资料样例


有人说嵌入式面试就是背题,但我说:用对方法,你也能从"背诵者"变成"面试主导者"

大家好,我是Penguin老师。

过去这段时间,我整理了一份 《嵌入式软件工程师面试宝典》 ,涵盖 7大技术篇章 + 人事面技巧 ,总共 100+ 高频题 ,每个题目都配有 "死答案(原理)""例子答案(项目场景)",让你不仅知道"是什么",更能讲清楚"怎么用"。

今天,我从每个章节中挑出 部分最经典、最常考 的题目,免费分享给大家(团队持续更新中)。如果你觉得有用,文末有完整PDF的获取方式。


一、C语言篇(2道)

1. volatile 关键字的作用是什么?

👉 死答案 :防止编译器优化,每次从内存读取。常用于硬件寄存器、中断共享变量、多线程标志。

👉 例子答案 :我做串口驱动时,状态寄存器没加 volatile,结果读到的永远是旧值,加了之后每次真正去硬件拿,问题解决。

2. static 在函数内和文件内有什么区别?

👉 死答案 :函数内是静态局部变量(生命周期全局,作用域不变);文件内是内部链接(仅本文件可见)。

👉 例子答案 :我写状态机时,用函数内 static 变量保存状态,不用全局变量污染命名空间。文件级 static 函数就像公司内部秘密,外部看不到。

完整C语言篇共x题,涵盖指针、内存对齐、堆栈、位运算等。


二、C++篇(2道)

1. 虚函数是如何实现多态的?

👉 死答案 :虚函数表(vtable) + 虚函数指针(vptr),运行时动态绑定。

👉 例子答案 :我写驱动框架,基类 Device 有虚函数 read(),温度、压力传感器各自实现,上层用基类指针调用,自动执行正确代码。

2. 智能指针 unique_ptrshared_ptr 的区别?

👉 死答案 :独占所有权 vs 引用计数。循环引用用 weak_ptr

👉 例子答案 :在Linux设备驱动里,我用 unique_ptr 管理缓冲区,离开作用域自动释放,省心。shared_ptr 用于多个对象共享配置资源。

完整C++篇包含多态、智能指针、STL选择、移动语义等高频考点。


三、网络编程篇(2道)

1. selectpollepoll 的区别?

👉 死答案 :select 有1024限制+轮询;poll 无数量限制但仍轮询;epoll 事件驱动,高并发首选。

👉 例子答案:我做的聊天服务器,几千人在线,用 epoll 轻松应付;如果只监控几十个连接且要跨平台,用 select 更省事。

2. 阻塞与非阻塞 socket 的区别?如何配合使用?

👉 死答案 :阻塞会等待;非阻塞返回 EAGAIN。常用 fcntl 设置 O_NONBLOCK,再配合 epoll

👉 例子答案:我把 socket 设成非阻塞,加入 epoll,主循环能边处理业务边等数据,不会被一个慢连接卡死。

完整网络编程篇涵盖TCP/UDP、三次握手、四次挥手、粘包、心跳。


四、进程篇(2道)

1. 僵尸进程和孤儿进程是什么?如何避免僵尸?

👉 死答案 :僵尸是子进程先结束,父进程未 wait;孤儿是父进程先结束,被 init 收养。避免僵尸:父进程 wait 或处理 SIGCHLD

👉 例子答案 :我写的服务器忘了回收子进程,用 ps 看到一堆 <defunct>,后来加了 SIGCHLD 信号处理就好了。

2. 共享内存为什么是最高效的IPC?

👉 死答案 :无内核拷贝,直接读写物理内存。需配合信号量同步。

👉 例子答案:两个进程需要交换海量视频数据,用共享内存零拷贝,延迟极低。简单小数据用管道就够了。

完整进程篇包含fork/exec、守护进程、死锁等。


五、底层篇(2道)

1. 中断服务函数(ISR)有哪些注意事项?

👉 死答案 :短小快速,不可阻塞(不能调用 printfmalloc、信号量等),只做标记和简单数据搬运。

👉 例子答案:我以前在 ISR 里打印日志,导致中断延迟过长,系统卡死。现在只清标志位、放数据到队列,唤醒任务去处理。

2. 什么是看门狗?独立看门狗和窗口看门狗的区别?

👉 死答案 :独立看门狗(IWDG)有独立时钟,时间窗口宽;窗口看门狗(WWDG)有上下限,检测程序执行顺序。

👉 例子答案:主循环里喂独立看门狗,防止死机;窗口看门狗用来保护关键时序代码段,喂早了或晚了都会复位。

完整底层篇覆盖GPIO、DMA、时钟树、PWM、低功耗模式、缓存一致性等。


六、系统移植篇(2道)

1. 设备树(Device Tree)的作用?

👉 死答案 :硬件资源描述文件,使内核与板卡解耦。描述寄存器地址、中断、时钟、引脚等。

👉 例子答案:我移植新板子时,串口不工作,检查设备树发现引脚写错了,改对就正常。加传感器只需添加节点,不用重编内核。

2. Linux 内核模块的 Makefile 如何编写?

👉 死答案 :使用 obj-m,调用内核构建系统 -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

👉 例子答案 :写驱动程序时,Makefile 就这几行,调试时 insmod 加载,不用反复烧写镜像,效率高。

完整系统移植篇包括启动流程、U-Boot、根文件系统、交叉编译等。


七、通信协议篇(2道)

1. I2C 和 SPI 的主要区别及选型依据?

👉 死答案 :I2C 两根线、多从机、速度慢;SPI 四根线、全双工、速度快。选型:省引脚用I2C,要高速用SPI。

👉 例子答案:温湿度传感器用 I2C,省引脚;LCD 屏幕用 SPI,刷新快。调试时 I2C 要检查上拉电阻,SPI 要注意时钟极性。(极性相位分别对应空闲时电平状态以及奇偶边验采样)

2. CAN 总线为什么适合汽车/工业?

👉 死答案 :差分信号抗干扰、多主竞争、非破坏性仲裁、错误检测和自动重传。

👉 例子答案:车载项目中,多个 ECU 通过 CAN 通信,即便电机干扰大,数据依然可靠。ID 低的报文优先,保证了关键帧的实时性。

完整通信协议篇涵盖UART、Modbus、单总线、USB等。


为什么这份资料值得你拥有?

不是死记硬背的答案 :每个题目都给出 原理(死答案) + 真实项目举例(例子答案)

覆盖大厂考点 :200+ 经典题,从 C 语言到系统移植,从网络到人事面,全方位无死角。

实战导向 :每个例子都来自真实开发场景,面试时可以直接"讲故事"。

掌握主动权技巧 :教你把不熟的问题引导到自己擅长的领域(资料内含专门章节)。

人事面全套话术:离职原因、薪资谈判、职业规划等高频问题应答策略。

复制代码
💡 哪怕是基础差或记性不好的同学,也能轻松上手:我们把每个知识点都浓缩成“一句话死答案 + 一个生活比喻场景”,就像背公式一样简单。比如“堆和栈的区别”用“食堂托盘 vs 租仓库”;“死锁”用“两个人过独木桥”。再菜鸟也能快速形成肌肉记忆,面试时脱口而出。

如何获取完整PDF?

点赞+关注+评论(嵌入式面试宝典):

  • 简历模板(嵌入式专用)
  • 高频追问扩展库(持续更新)
  • 一对一答疑(模拟面试)

资料样例

资料片段1
资料片段2
资料片段3
资料片段4
资料片段5


最后送你一句话:

面试不是考试,而是一场对话。你能"铺网络"到什么程度,决定了你能拿到什么级别的Offer。

祝秋招/春招/求职顺利,我们Offer见!

------ Penguin老师

相关推荐
星瞳科技OpenMV1 小时前
国家级高新技术企业星瞳科技,定义嵌入式机器视觉行业新标杆
人工智能·嵌入式·图像识别·机器视觉·openmv·星瞳科技·星瞳科技openmv
卖芒果的潇洒农民1 小时前
NVMe 2.3协议学习
学习
小糖学代码2 小时前
LLM系列:2.pytorch入门:9.神经网络的学习
人工智能·python·深度学习·神经网络·学习·机器学习
Hello_Embed2 小时前
【无标题】
网络·笔记·网络协议·tcp/ip·嵌入式
小陈phd2 小时前
多模态大模型学习笔记(三十八)——传统OCR技术机制:从DBNet到CRNN:吃透传统OCR两阶段范式的底层逻辑
笔记·学习·ocr
迷途之人不知返2 小时前
List的模拟实现
数据结构·c++·学习·list
HalvmånEver2 小时前
MySQL的内置函数
linux·数据库·学习·mysql
兜兜工作室2 小时前
兜兜消消单词|04.29 每日单词|glove
学习
zhangrelay2 小时前
三分钟云课实践速通--工程制图基础-3D--FreeCAD
笔记·学习·3d