
嵌入式这个方向每年都有大量人涌进来也有大量人卡在“学完了但不知道去哪找工作”这一步。我带了不下二十个新人也帮朋友内推过不少简历发现一个很普遍的现象很多人把嵌入式等同于“会点C语言、跑过几个STM32例程”然后拿着这样的简历去投结果石沉大海就开始怀疑是不是行业不行了。其实不是行业不行是找工作的方式从一开始就跑偏了。嵌入式不是一个岗位它是一大类岗位的统称里面至少能分出驱动、应用、系统、硬件、测试、算法移植等好几个方向每个方向对能力的要求、面试的侧重点、甚至招聘的渠道都不一样。你拿一份“什么都沾一点”的简历去投所有岗位大概率是哪个都不匹配。这篇内容我想把嵌入式找工作这件事拆开讲从方向选择、简历怎么写、项目怎么准备、面试怎么过、渠道怎么找这几个角度把我自己踩过的坑和帮别人改简历时总结的经验都倒出来适合刚入行、准备跳槽、或者还在学校里不知道往哪使劲的朋友参考。1. 先搞清楚嵌入式岗位到底分几类很多人找工作的第一步就错了不是去写简历而是应该先把招聘软件打开把“嵌入式”这个关键词搜出来的岗位从头到尾翻一遍看看这些岗位的职位描述到底在说什么。你会发现同样是叫嵌入式工程师有的要求你懂Linux内核驱动有的要求你会画原理图有的要求你熟悉AUTOSAR有的要求你做过音频算法移植。这些岗位之间的技能重叠度可能只有百分之三十。1.1 驱动与BSP方向这个方向的核心工作是让硬件能跑起来、让操作系统能识别硬件。具体来说就是写各种外设驱动比如I2C、SPI、UART、USB、以太网、LCD、触摸屏这些。你得看得懂芯片手册知道寄存器怎么配知道中断怎么处理知道DMA怎么用。Linux下还要懂设备树、platform总线、字符设备框架这些概念。这个方向的门槛相对高因为需要你同时懂硬件时序和软件框架但一旦入门岗位需求量大且薪资天花板不低。我认识做BSP的朋友工作五六年之后基本都在带团队或者做系统架构了。面试这个方向面试官一定会问你中断处理的上半部和下半部有什么区别会问你设备树里compatible属性是怎么匹配驱动的会问你如果I2C通信失败你会怎么排查。这些问题不是背八股能糊弄过去的必须真的调过板子、真的用示波器抓过波形才能答得上来。1.2 应用开发方向应用开发是在操作系统之上写业务逻辑比如用Qt写界面、用C写通信协议、用Python写测试脚本。这个方向对底层硬件的要求没那么高但对编程能力、代码架构能力、调试能力要求很高。你得会多线程编程得懂进程间通信得知道怎么用gdb调core dump得会看内存泄漏。很多从计算机专业转过来的人会选这个方向因为编程基础好上手快。这个方向的岗位数量其实是最多的因为任何嵌入式产品都需要应用层软件。但竞争也最激烈因为门槛相对低培训班出来的人大多也投这个方向。要在面试中脱颖而出你得有拿得出手的项目比如一个完整的带界面、带通信、带数据存储的应用而且你得能讲清楚架构为什么这么设计。1.3 系统与集成方向这个方向介于驱动和应用之间主要负责系统裁剪、根文件系统制作、启动流程优化、OTA升级方案、系统性能调优这些。你得懂uboot、kernel、rootfs三者的关系得会配置buildroot或者yocto得知道怎么用nfs挂载根文件系统来加速开发调试。这个方向的人往往是一个团队里最懂整个系统的人出了问题大家第一个找他。我个人的经验是如果你刚入行不知道选哪个方向系统集成方向是一个很好的切入点因为它能让你快速了解整个系统的全貌之后再往驱动或应用深入都有基础。而且这个方向的面试题往往比较务实比如问你系统启动卡住了怎么排查问你根文件系统挂载失败可能有哪些原因这些都是实际工作中天天遇到的问题。1.4 硬件与工装测试方向硬件方向就是画板子、选型、调试电路需要你会用Altium Designer或者Cadence懂信号完整性会看datasheet选器件。工装测试方向则是设计生产测试工装、写测试脚本、做自动化测试。这两个方向在汽车电子、消费电子、工业控制领域需求很大。特别是汽车嵌入式因为功能安全的要求对测试和验证的重视程度远超其他行业。这里要提一句很多人觉得硬件方向薪资低其实这是误解。资深的硬件工程师非常稀缺尤其是能做高速电路设计、能做EMC整改的人薪资一点不比软件低。而且硬件方向的经验积累是线性的越老越吃香不像纯应用软件那样容易被新技术冲击。2. 简历上写什么项目才能让面试官想约你简历是找工作的第一关而嵌入式简历最核心的部分就是项目经历。我看过太多简历项目描述写的是“使用STM32实现了温湿度采集并显示在LCD上”这种描述放在十年前可能还行现在基本等于没写。面试官想看到的是你在项目中解决了什么具体问题用了什么技术方案为什么这么选。2.1 项目描述的黄金公式我总结了一个写项目描述的公式背景加方案加难点加结果。背景是一句话说明这个项目是做什么的方案是你用了什么技术栈和架构难点是你遇到了什么问题以及怎么解决的结果是最终达到了什么效果。其中难点和解决方案是面试官最关心的因为这才是体现你能力的地方。举个例子不要写“使用I2C读取传感器数据”而要写“传感器在高温环境下I2C通信偶发失败通过示波器抓取波形发现时序裕量不足调整上拉电阻阻值并降低通信速率后问题解决连续运行72小时无异常”。后者能让面试官立刻判断出你真的动手调过而且有排查问题的思路。2.2 项目数量的取舍简历上放几个项目合适我的建议是两到三个深度项目再加一到两个广度项目。深度项目是你真正从头到尾参与、能讲清楚每个细节的广度项目是让你展示技术栈宽度的。如果你只有一个项目那就把这一个项目挖深把里面涉及的每一个技术点都吃透。面试官不怕你项目少怕的是你项目多但每个都说不清楚。我帮人改简历时经常遇到一种情况就是项目列了五六个但每个都只有两三行描述问哪个都答不深。这种简历反而减分因为面试官会觉得你只是跟着教程跑了一遍没有自己的思考。宁可把两个项目写透也不要堆十个流水账。2.3 关键词的合理嵌入招聘方筛选简历很多时候是靠关键词匹配的所以你的简历里要自然地出现目标岗位要求的技术词。比如你投Linux驱动岗位简历里就应该出现设备树、字符设备、platform驱动、中断、DMA这些词。你投应用岗位就应该出现多线程、socket、Qt、设计模式这些词。但注意是自然嵌入不要为了堆关键词而写一堆自己都不懂的东西面试时被追问就露馅了。还有一个技巧是把关键词放在项目描述的具体语境里而不是单独列一个技能清单。比如不要只写“熟悉Linux”而要写“在Linux下基于V4L2框架开发摄像头采集程序实现了MJPEG格式的实时编码与网络传输”。这样既有关键词又有场景可信度高得多。3. 面试嵌入式岗位时那些绕不开的技术问题嵌入式的面试有一个特点就是理论知识和实操经验各占一半。面试官会问你一些基础概念但一定会追问你在实际项目中是怎么用的。纯背八股文能过一面但二面技术面基本会挂。我整理了几类高频问题以及面试官真正想听到的答案方向。3.1 C语言与底层基础C语言是嵌入式的吃饭家伙面试必问。但问法不是考你语法而是考你对内存模型的理解。比如指针和数组的区别很多人能背出定义但面试官会接着问“函数参数传数组和传指针有什么区别”“数组名取地址和数组名本身有什么区别”这些就需要你真的理解编译后的内存布局。还有几个高频问题volatile关键字的作用是什么什么情况下必须用static修饰全局变量和局部变量分别是什么效果堆和栈的区别栈溢出一般是什么原因字节对齐是什么为什么要对齐。这些问题看起来基础但能答得让面试官满意的人不多。我的建议是每个问题都准备一个实际项目中的例子比如“我在调试一个通信协议时发现结构体大小和预期不符后来发现是编译器做了字节对齐加上packed属性后解决”这样回答比干巴巴的概念解释有说服力得多。3.2 操作系统与并发如果你投的是Linux方向操作系统的问题会占很大比重。进程和线程的区别是必问的但面试官想听的不是“进程是资源分配单位线程是调度单位”这种教科书答案而是你在什么场景下选择用进程、什么场景下用线程。比如你可以说“需要隔离性就用进程需要共享数据方便就用线程但线程共享数据要加锁锁的粒度太大会影响性能”。进程间通信的方式也要熟悉管道、消息队列、共享内存、信号量、socket各自的特点和适用场景。共享内存为什么是最快的因为不需要内核拷贝。但共享内存需要配合同步机制使用否则会有竞态。这些点能讲清楚面试官会觉得你确实用过。还有一个高频问题是死锁四个必要条件、怎么预防、怎么排查。你可以结合项目讲比如“我在一个多线程采集系统里遇到过死锁用gdb attach上去看线程栈发现两个线程互相等对方的锁后来统一了加锁顺序解决”。3.3 硬件相关与调试工具即使是软件岗位嵌入式面试也会问一些硬件相关的问题因为你的软件最终是要跑在硬件上的。常见的问题包括上拉电阻和下拉电阻的作用是什么I2C和SPI的区别各自适合什么场景中断和轮询的区别什么时候用中断什么时候用轮询看门狗的作用和工作原理。调试工具的使用也是重点。你会不会用示波器、逻辑分析仪、万用表会不会用gdb、strace、perf、valgrind会不会看原理图定位问题。我面试别人的时候如果候选人说会用逻辑分析仪抓I2C时序我基本会给他加分因为这说明他真的调过硬件不是只写上层代码。3.4 项目追问的应对策略技术问题问完之后面试官一定会挑你简历上的一个项目深入追问。追问的套路一般是这个项目的整体架构是什么你负责哪部分遇到了什么困难怎么解决的如果重新做你会怎么改进。最后一个问题特别关键很多人答不上来说明他只是执行者没有反思和总结。我的建议是面试前把你简历上每个项目都过一遍自己问自己这些问题并且准备好答案。特别是“如果重新做会怎么改进”这个问题你可以从架构层面、性能层面、可维护性层面分别说。比如“当时为了赶进度把业务逻辑和通信协议耦合在一起了如果重做我会抽象出协议层用回调或者消息队列解耦这样换协议的时候不用动业务代码”。4. 找工作的渠道和时机比你想的重要很多人找工作就是打开招聘软件搜关键词然后投投了几十份没回应就焦虑。其实嵌入式岗位的招聘渠道和互联网岗位很不一样用对渠道能事半功倍。4.1 招聘平台的使用技巧主流的招聘平台当然要用但用法有讲究。首先关键词不要只搜“嵌入式”要搜“嵌入式驱动”“嵌入式应用”“BSP”“固件”“单片机”“Linux开发”这些细分词覆盖的岗位会多很多。其次筛选条件里把薪资范围设成你期望的上限再加百分之二十因为很多岗位的薪资是面议的你设太低会漏掉好机会。投递时间也有讲究。周一到周三上午投的简历回复率最高因为HR一般这时候在处理简历。周五下午投的基本会被压到下周一容易被淹没。还有一个小技巧是如果某个岗位挂了很久还在招大概率是要求高或者薪资低投的时候要有心理准备。4.2 内推和社区渠道嵌入式圈子其实不大很多岗位在公开渠道挂出来之前就已经通过内推消化掉一部分了。所以如果你有认识的人在目标公司一定要走内推。内推的好处不只是简历能被看到更重要的是你能提前知道这个岗位的真实情况比如团队氛围、加班强度、技术栈新旧。技术社区也是找工作的好渠道。你在GitHub上有开源项目在技术论坛上回答过问题在博客上写过技术文章这些都可能被同行看到然后主动联系你。我现在的几个合作机会都是通过技术社区认识的。所以平时养成写技术笔记的习惯不只是为了找工作也是为了建立自己的技术品牌。4.3 校招和社招的节奏差异校招的时间窗口很固定秋招一般在毕业前一年的八九月份春招在三四月份。嵌入式岗位的校招笔试一般考C语言、数据结构、操作系统、计算机网络这些基础课再加上一些嵌入式特有的内容比如中断、通信协议。准备校招的话刷题是必要的但不要只刷题项目经历和动手能力在校招面试中同样重要。社招则是一年四季都有但金三银四和金九银十这两个时间段岗位最多。社招更看重你之前的工作内容和目标岗位的匹配度所以跳槽的时候尽量沿着一个方向深耕不要频繁换方向。我见过有人三年换了三个方向驱动做半年、应用做半年、测试做半年结果社招的时候哪个方向都不够深入很难拿到好offer。5. 不同背景的人该怎么规划自己的路线嵌入式找工作的策略和你的背景强相关。应届生、培训班出来的、从其他行业转过来的各自的优劣势不一样打法也应该不一样。5.1 应届生的打法应届生最大的优势是有校招通道很多公司愿意培养白纸一样的新人。但劣势是项目经验少很多人只有课程设计级别的项目。我的建议是如果你还在学校一定要想办法参与一个真实的项目哪怕是帮老师做课题、参加竞赛、或者自己做一个完整的开源项目。蓝桥杯嵌入式这类竞赛虽然含金量不算特别高但至少能证明你动手写过代码。校招面试官对应届生的技术深度要求不会太高但会看重你的学习能力和基础。所以C语言、数据结构、操作系统这些基础课一定要扎实。项目方面哪怕是一个小项目只要你能讲清楚设计思路和遇到的问题就比空泛地说“熟悉嵌入式”强得多。5.2 转行者的打法从其他行业转到嵌入式的人越来越多有从纯软件转的有从硬件转的也有从完全不相关的行业转的。转行者的劣势是没有相关工作经验简历容易被筛掉。但优势是往往有之前行业的积累可以找交叉领域的岗位。比如你之前是做Java后端的那你可以投嵌入式应用开发岗位强调你的编程能力和架构能力同时补一下Linux系统和C语言。你之前是做硬件的那可以投驱动或者BSP岗位强调你对硬件的理解同时补一下操作系统和驱动框架。关键是找到你之前经验和目标岗位的交集而不是完全抛弃过去从零开始。5.3 在职提升的打法如果你已经在做嵌入式相关的工作但想跳槽到更好的平台那策略又不一样。这时候你已经有工作经验了面试官会重点看你之前做过什么、解决过什么级别的问题。所以跳槽前最好能在当前岗位上主动争取一些有挑战性的任务比如主导一个模块的设计、优化一个性能瓶颈、引入一个新的技术方案。同时要持续学习嵌入式领域技术更新不算快但Linux内核、RTOS、AI边缘计算这些方向一直在演进。你可以利用业余时间研究一个开源项目比如把RT-Thread或者Zephyr的某个模块吃透这不仅能提升技术面试时也是很好的谈资。6. 那些没人明说但很重要的细节最后这部分我想聊一些技术之外的东西但这些细节往往决定了你找工作的成败。6.1 简历的排版和命名简历不要用花哨的模板简洁清晰最重要。一页纸最好最多两页。文件名不要叫“简历.pdf”要叫“姓名-岗位-工作年限.pdf”方便HR归档和查找。邮件投递的时候正文不要空着简单写几句你的匹配点和期望这是基本的礼貌也能增加被打开的概率。还有一个小细节是简历里的电话号码和邮箱一定要写对我遇到过候选人简历上邮箱少写一个字母结果面试通知发过去被退信机会就这么没了。投递前自己给自己发一封邮件测试一下。6.2 面试中的沟通姿态技术面试不是考试是交流。遇到不会的问题不要慌可以坦诚说“这个点我了解得不深但我的理解是……”然后说出你知道的部分。面试官更看重你的思考过程而不是标准答案。遇到你熟悉的问题也不要滔滔不绝先给出核心结论面试官感兴趣会继续追问你再展开。提问环节也很重要。面试官问你“有什么想问的”不要说“没有”。可以问团队的技术栈、项目的挑战、新人培养机制这些。这不仅是了解公司的机会也能体现你对这份工作的重视。6.3 薪资谈判的底线思维谈薪资之前一定要做功课了解目标城市和目标岗位的薪资范围。可以用招聘软件上的薪资数据做参考也可以问同行朋友。谈的时候不要先报数字可以先问对方的预算范围。如果对方坚持让你先说你可以给一个区间下限是你可接受的底线上限比你期望的高百分之二十左右。除了月薪还要关注年终奖、股票、补贴、加班费这些。有些公司月薪看起来不高但年终奖给得多整体收入反而更高。另外要问清楚试用期薪资是不是打折很多公司试用期只给百分之八十这个要提前算清楚。嵌入式找工作这件事说到底就是把自己的能力和岗位的需求匹配上。能力不够就去补匹配不上就换方向渠道不对就换渠道。没有谁是一开始就顺风顺水的我当年也是投了几十份简历才拿到第一个offer。关键是不要用战术上的勤奋掩盖战略上的懒惰先想清楚自己要什么再动手。