嵌入式软件开发找不到实习咋办?
很多同学找嵌入式实习,投了几十份简历没回应,第一反应是:是不是嵌入式岗位太少了?
说实话,岗位确实没有前几年那么好拿,但更常见的问题不是“完全没机会”,而是简历和能力没有让面试官相信:你来了以后能上手干一点真实工作。
结论先放前面:找不到实习,不要先疯狂海投,先把自己从“学过嵌入式”改造成“能证明自己做过嵌入式开发”。
一、先判断你卡在哪一层
嵌入式实习通常卡在三类问题:
第一类,技术栈太散。
简历上写 C、C++、STM32、FreeRTOS、Linux、CAN、SPI、I2C、TCP/IP,但每个都只停在“看过教程”。面试官追问一个中断、DMA、任务调度、指针越界,就答不深。
第二类,项目太像课程实验。
点灯、串口打印、OLED 显示、温湿度采集不是不能写,但如果没有“为什么这么设计、遇到什么问题、怎么调试定位、怎么优化”,它很难支撑实习面试。
第三类,投递方式太被动。
只在招聘软件上一键投递,不改简历,不看 JD,不找内推,不复盘已投岗位,最后变成“投了很多,但每一份都不精准”。
二、先选一个主方向,不要什么都补
嵌入式实习大致可以分几条线:
MCU 应用开发:
重点是 C 语言、STM32/其他 MCU、GPIO、UART、SPI、I2C、CAN、ADC、DMA、中断、定时器、FreeRTOS。
嵌入式 Linux 应用:
重点是 Linux 基础、进程线程、Socket、文件 IO、串口、交叉编译、Makefile/CMake、基本调试。
驱动/BSP 方向:
重点是寄存器、设备树、字符设备驱动、中断、platform 驱动、I2C/SPI 驱动框架、内核编译。
如果你现在没有实习,建议先别三个方向一起冲。选一个最容易做出项目闭环的方向,比如 MCU + FreeRTOS + 通信协议,或者 Linux C + Socket + 串口网关。
准备嵌入式面试八股文我推荐这个专栏,真的很全面,很深入:
https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
三、补一个能讲 10 分钟的项目
不要再堆“做了一个智能小车/环境监测系统”这种标题。面试官更关心你负责了什么。
一个合格的嵌入式实习项目,至少要能讲清楚:
系统整体架构是什么;
用了哪些外设和通信协议;
数据从哪里来,到哪里去;
中断、DMA、任务、队列有没有实际使用;
遇到过什么 bug,怎么定位;
有没有考虑异常情况,比如断线、丢包、缓冲区满、任务阻塞;
你写的代码和网上 demo 有什么区别。
比如项目可以这样包装:
“基于 STM32 + FreeRTOS 的多传感器采集与 CAN/UART 通信系统”
这个项目比“温湿度采集系统”强,因为它能展开任务划分、队列通信、协议封包、串口 DMA、CAN 收发、中断处理、数据缓存、异常恢复。
四、简历不要写成课程表
很多嵌入式简历最大的问题是:技能很多,但没有证据。
不要只写:
熟悉 C 语言、STM32、FreeRTOS、I2C、SPI、CAN。
可以改成:
使用 STM32 完成 UART DMA 接收、CAN 报文收发、I2C 传感器采集;基于 FreeRTOS 将采集、解析、通信拆分为多个任务,通过队列传递数据,并处理串口粘包、缓冲区溢出等问题。
这两句话的差距很大。前者像自评,后者像经历。
五、找实习时别只盯“大厂嵌入式”
如果你现在一份实习都没有,第一目标不是一步到位进大厂,而是拿到第一段真实开发经历。
可以投这些岗位:
嵌入式软件实习生;
单片机开发实习生;
Linux C 开发实习生;
测试开发/硬件测试里的嵌入式脚本岗位;
车载、机器人、工业控制、物联网公司的软件实习;
小公司 MCU 项目维护岗位。
第一段实习的价值是把你从“学生项目”带到“真实工程”。有了真实 bug、真实需求、真实协作,后面再跳会容易很多。
六、没有实习,也要造“准实习经历”
如果暂时拿不到实习,就用 4 到 6 周做一个像样的工程项目。
建议节奏:
第 1 周:补 C 语言、指针、结构体、volatile、内存、位操作。
第 2 周:补 MCU 外设,重点 UART、定时器、中断、DMA、CAN/I2C/SPI。
第 3 周:引入 FreeRTOS,做任务、队列、信号量、定时器。
第 4 周:做协议和上位机/网络通信,形成完整数据链路。
第 5 周:补调试记录,整理 bug、优化点、测试方法。
第 6 周:重写简历,开始定向投递和模拟面试。
项目不怕小,怕没有工程味。
七、面试前要准备这些问题
- C 语言中
static、volatile、const分别有什么用? - 指针越界和野指针怎么排查?
- 中断里为什么不能做太耗时的事?
- UART DMA 接收不定长数据怎么处理?
- SPI、I2C、UART、CAN 的区别是什么?
- CAN 仲裁机制是什么?
- FreeRTOS 任务调度的基本原理是什么?
- 队列、信号量、互斥锁分别适合什么场景?
- 任务栈溢出怎么排查?
- 嵌入式项目里如何定位偶发死机?
- Linux 下进程和线程有什么区别?
- Socket TCP 和 UDP 的区别是什么?
- Makefile 的基本规则是什么?
- 你项目里最难的 bug 是什么?
- 你的项目哪些代码是自己写的?
- 如果串口丢包,你会从哪些方向排查?
- 如果系统实时性不够,你怎么优化?
- 如果设备掉线,你的软件怎么恢复?
- 简历上的 FreeRTOS 你用到了哪些机制?
- 你为什么想做嵌入式软件?
找不到实习不是终局,但它是一个提醒:你需要把“我学过”变成“我做过、调过、解释得清楚”。嵌入式面试很现实,代码、项目、调试经验、底层理解,哪怕每一项都不完美,只要能形成闭环,就比堆一堆空泛技能强得多。

查看12道真题和解析