双非菜鸡迟到的秋招汇总
前言
简单自我介绍。某双非二本,大学一直在学校实验室待着,有几个相关竞赛的国家级奖项,STM32和C语言用得比较熟。但项目全是裸机开发,FreeRTOS只在面试前系统学了点理论,没去移植实践过;Linux更惨,就知道几个指令,其他基本不会,还是秋招开始后才花几天临时补的。
写这帖的目的也简单,就是回馈牛客。秋招这两个多月,牛客上各位大佬的笔经面经给了我很大帮助,所以总结一下自己的秋招经历,希望能帮到更多人。也顺便给大家鼓鼓劲——我这种双非二本虽然没拿到华为、大疆那种顶级offer,但也能拿到几家还可以的大公司offer,那你们努力一下也行。
这里再简单提几句考研和就业。拿我自己举例:大学期间在实验室待得比较久,有相关竞赛国奖,项目经验相对丰富。这种情况下如果考研没上岸,我就只能春招,而春招机会比秋招少、竞争更大,大概率拿不到比直接秋招更好的offer。而我对自己考研上岸把握并不大。综合分析风险之后,我选择了直接秋招,最后也拿到了比较满意的offer。
大家可以用类似的思路理性分析自己该考研还是直接就业。
秋招准备
秋招不光是技术能力和综合能力的考量,还是信息获取能力的考验——越早获得招聘信息越占便宜。所以要多关注各高校就业指导中心公众号、想加入的公司的招聘公众号、牛客、加几个招聘交流群。
就业指导中心公众号最好关注你期望工作城市的高校。因为像西安一些公司只在西安高校公众号有推送,广东那边可能就没有。公司自己的招聘公众号一般是第一手信息,有心仪公司一定要提前关注。
为什么及时获取信息这么重要?
一、早了解早投递。越早投越早进笔试面试流程,比较占便宜——越往后岗位需求越少,面试要求反而会高一点,通过率更低。
二、提前批一定要把握。有的公司提前批直接不用笔试,而且有些公司提前批挂了不影响正式批,相当于多一次机会。
技术准备
一提到嵌入式岗位,大家第一反应一般是Linux,可见Linux的重要性。但如果你跟我一样大学只做过单片机项目、没碰过Linux,时间还来得及的话,建议花几个月做一个Linux项目,对笔面试帮助很大。
如果你看到这篇帖的时候已经是7月份了,那应该没足够时间系统学Linux+做项目了。我就属于后者,意识到Linux重要性的时候已经没法及时补救。但也别灰心——招嵌入式单片机的岗位还不少,只是不会Linux会限制找工作的选择空间。
C语言
不管是嵌入式单片机还是嵌入式Linux,C都是必考。可以说C是嵌入式软件工程师吃饭的家伙,重要性不用多说。这部分随着不断复习熟练度会越来越高,最重要的就是多看多练。
C对嵌入式来说基本要完全掌握并熟练使用,列一下笔面试比较重要的知识点:
- 运算符优先级
- 输入输出操作
- 原码、反码、补码
- 预处理
- 关键字
- 堆栈
- 数组
- 指针
- 函数
- 字符串
- 结构体、联合体
- 内存分配
主要就这几个大方向。输入输出必须熟练,笔试编程题几乎必用,可以通过刷算法题来熟悉。关键字都要了解,static、volatile、extern、sizeof是高频。堆栈和指针都是重中之重,必须全面完整地学。大题往往考算法、数据结构以及对字符串的一系列操作。
C++有时间也最好学一下——封装、继承、多态那套。这块我自己不太懂,时间原因没多学。但笔试里经常碰到C++代码选择题,完全看不懂只能蒙挺吃亏的,所以推荐其他内容复习完还有时间的话学一学C++。
单片机
主要针对你项目里常用的芯片,一般大部分人以STM32为主。我就针对STM32说说:
- GPIO
- 中断
- 定时器
- 通信接口
里面最常被问到的就是中断和通信接口。其中通信接口主要就是IIC、SPI、UART。
数据结构与算法
数据结构
对嵌入式软件岗位来说,数据结构相对没有互联网招聘那么重要,但也是必考。可以选择性学习,时间有限不用全学,当然时间充足建议都学——顶级大厂这块是相对重点。
不冲顶级大厂的话,主要学数组、链表、队列、堆栈就可以。二叉树这种我整个秋招几乎没被问到过,可能华为这种公司会考。
算法
建议去leetcode或者牛客刷一下题,起码刷个20道简单题,熟悉做题方法、输入输出、字符串操作这些。笔试基本都会考两道大题,刷个20题加上平时积累就问题不大。想进华为那种就要刷中等甚至困难——华为笔试就是三道算法大题,这个看个人取舍。也可以在牛客上看看你想投的公司笔试侧重点在哪。
网络
考得比较少,有的公司问、有的不问。如果是涂鸦智能这样的物联网公司肯定问。这部分要有基础知识,项目里用过的协议要了解清楚,而且要能讲为什么选这个协议而不是另一个。我之前在一个物联网项目里用过MQTT,就单独学了这部分。如果项目没涉及网络,掌握一点基础就行——即使不理解也死记硬背下来,但还是建议在理解基础上记,不然面试官稍微深入问一点就答不出来。
最经典的两个问题:
- TCP和UDP的区别
- 三次握手四次挥手
这俩理解了,去面非网络领域的公司基本没问题。这部分内容少,就不展开了。
操作系统
操作系统的基础是肯定要会的。哪怕你像我这样大学只用过单片机、没在上面跑过uCOS或FreeRTOS之类的实时操作系统,也强烈建议学一下——因为哪怕投嵌入式单片机岗,往往也要求会RTOS。建议学一下FreeRTOS或者RT-Thread,有时间最好在项目里实践一下,时间不够就把基础理论系统学一下。
其次是Linux。哪怕投嵌入式单片机岗,嵌入式在广义上还是默认以Linux为主,所以Linux基础也要会,有些公司笔试会涉及。这块主要是理解理论——知道线程进程、几个基础指令,最好能在ubuntu上写段代码gcc编译一下。会这些基本能让你在笔试阶段不那么吃亏,但只会这些不足以支撑你找一个纯Linux岗。
这里多说一句,因为我自己在这块踩过坑——
我Linux就是秋招开始后才花几天临时补的,那几天心态有点崩,知识又多又杂,看书慢、看视频抓不住重点。后来换了思路:不按系统学,按"面试官会问什么"倒着学。
我找了牛客上一个嵌入式面经专栏《嵌入式软件工程师面试完全指南》,按里面Linux那几篇过了一遍——线程进程、几个核心指令、gcc编译、内存空间布局……专栏是按"面试官会怎么问 + 你该怎么答 + 坑在哪"的逻辑写的,速成期间这种倒推式比正向铺开学高效得多。
不是说看完就能冲纯Linux岗,我自己最后也没敢投。但应付单片机岗里那些Linux题是绰绰有余的。
文章里提到的那个面经专栏链接放这:
https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
32篇 12w字,C / 操作系统 / RTOS / Linux驱动 / 通信协议 / 硬件基础这几块都覆盖了。我前面说的那些方向,里面都有细化。
我自己秋招用过,回馈牛客顺手挂一下。也祝你拿offer。

华为HUAWEI工作强度 1383人发布