嵌入式校招指南【完整学习路线】【2_转行概述】

    目录

    【专栏一】嵌入式校招指南

    作者机械硕士,从零开始自学嵌入式软件,21届秋招进入国内芯片大厂。

    从自身转行经历来看,网上嵌入式学习路线的资料少之又少,大多千篇一律且复制粘贴。

    而嵌入式入行门槛高,技能树要求多,学习难度非常大,没有有效的方法指导,很容易迷失方向,错过校招。

    在此专栏分享我的校招从零开始转行经验,听我给你娓娓道来~

    专栏链接 https://www.nowcoder.com/creation/manager/columnDetail/MWZkkj

    1.专栏大纲&写在前面

    2.转行概述

    3.前期准备

    4.自学教材推荐_基础知识

    5.自学教材推荐_笔试准备

    6.开发板&项目

    7.简历

    8.行业&公司

    9.城市&岗位

    10.消费&工业电子类公司

    未完待续……

    【专栏二】嵌入式校招_面试经验大全

    嵌入式软件校招的常见问题,应付校招面试的速效救心丸,你值得拥有!

    嵌入式的知识太多太杂,不知道面试经常问哪些? 书上说的知识点太抽象,没有一定的基础很难理解?

    别怕,本专栏用通俗的语言和比喻,为你讲清楚!

    包含C语言、计算机组成原理、操作系统、数据结构与算法及计算机网络等,详见大纲。

    1.【C语言】【1_变量】https://www.nowcoder.com/discuss/491773863525679104

    2.【C语言】【2_关键字】https://www.nowcoder.com/discuss/497562309628276736

    3.【C语言】【3_数据结构&位运算】https://www.nowcoder.com/discuss/505894349847224320

    ——————————————————————————————

    二、转行情况概述

    我是在20年6月决定转行。比较幸运的是,当时导师对我们甚好,平时没有什么打杂的事情,对于我们学习其他东西也是持鼓励的态度,这是很关键的,不然我不会有这么多时间来自己学习。感谢导师!!!

    另一个幸运的地方,是当时实验室有一位师兄在单片机方面颇有造诣,因此在转行的前期,我的一些疑惑能够得到解答,这个也是非常重要的。感谢师兄!!!

    (PS:下文所述时间线,仅供估算学习时间参考,不完全是小羽学习时所用时间)

    1.C语言入门

    • 19.6.15~19.6.30

    起初师兄建议首先开始学习C语言。大概是在六月中旬吧,我在学校的二手书店购买了谭浩强的教材,然而花了一个星期依然不知所云,有点怀疑人生。

    后面在B站看到了某知名up主的C语言教程,他那诙谐又通俗易懂的课程,才算是把C语言学明白了一点。但是在学到指针的时候依然感到很吃力很难理解,于是果断放弃继续学习,留待日后再学。

    2.51单片机

    • 19.7.1~19.8.1

    接下来,直接上手51单片机的学习。看的视频是B站最火的郭天祥-十天学会单片机,这门课确实很好,将51单片机主要的内容讲得很明白。由于对于单片机之前从来没有接触过,第一次点灯、按键和显示,都让我很懵逼。

    因此虽然视频说十天即可学会,但我对其中不懂的地方反反复复地看,差不多用了一个月吧。学完以后,发现自己对这方面还是非常感兴趣的,有想要继续学下去的动力,这时候有一点点相信自己的决定了,觉得也不是想象得那么难(图样图森破~)。

    3. C语言基础

    • 19.8.1~19.8.20

    这期间也有在网上找一些资料,尝试了解一些嵌入式软件这一块的信息。但是很可惜,网上的信息又乱又杂,对当时的我帮助实在有限,不过终究还是在繁杂的信息中看到了几个关键词:C语言、数电等。

    就这样,在B站上找了一份点击量超高的C语言教程学习。认认真真地学完指针以后的内容后,进一步加深了对C语言的理解,总算能够自己动手写一点代码了,成就感满满。

    4.数字电路入门

    • 19.8.20~19.9.1

    接着,在慕课上面选了一门报名人数较多的数电课程,跟着大概学了一遍,对于不懂的地方果断跳过。学完数电终于大致地明白了各种逻辑电路的原理,理解了之前51单片机中的时钟到底是什么意思。

    虽然学到的东西不是很多,但是对我来说收获却非常大,弥补了一大块空白。

    5.STM32单片机学习

    • 19.9.1~19.11.1

    此时时间已经来到了19年8月底,师兄告诉我学完51后可以开始STM32的学习了。在经过一番比较后购买了野火的STM32F429开发板。第一次看到这么精致的开发板,还是非常激动的~在论坛上下载完资料后,就开始了学习之路。

    STM32的代码和51单片机相比,复杂程度不是一个级别。从点亮第一个灯到按键中断再到定时器,这些在51单片机中出现过的操作,突然之间不明白他们的意思了。不过还好配套的书中对于这些写得非常详细,反复地看最后还是很有收获的。当然对于其中百思不得其解的地方,我还是选择性地略过。

    就这样,跟着视频边看边学边操作,痛苦的两个月就过去了。尽管对于学过的很多的东西还是迷迷糊糊,但是我内心深处清醒地知道,时间不多,不能在耗在这里了,要尽快开始下一阶段的学习,就这样结束了STM32的学习。

    6.项目定稿与资料搜集

    • 19.11.1~19.11.7

    学完STM32之后,已经到19年11月了,我决定自己动手做一个项目,以便巩固学过的内容,加深理解。当时考虑了很久,最后决定从课题组的研究方向入手,选取一个能够结合嵌入式的项目。

    我们当时研究的是机械中的电化学加工,恰逢师兄们在做的项目中多次提到电导率的测量工作较难进行,因此我决定着手做一个测量电解液中电导率数值的项目。在网上搜集了很多资料后,找到一个较为类似的项目,里面有包含硬件设计和软件设计的大致框架,但是具体细节方面又有所不同,这样刚好可以给我一个方向又不至于完全照抄。

    7.备战期末考试与六级

    19.11.7~19.12.31

    刚搜集完资料,就赶上了期中考试和六级。于是接下来的一个多月,直到六级考试完都没有碰过嵌入式这一块。

    8.STM32项目——硬件

    • 20.1.1~20.2.1

    转眼间,已经到了20年。因为之前确定了具体的项目内容,接下来便从硬件设计开始。为了能够自己动手设计硬件电路图,花了半个月的时间学习了简单的硬件设计,从零开始原理图的绘制以及LayOut。

    学习完以后,就开始根据参考项目来设计(借鉴)自己项目的硬件,这其中的痛苦一言难尽~虽然两个项目大体上差不多,但是具体实现起来还是有不少细节地方不一样。因为自己的硬件基础太过薄弱,因此为了使最后的硬件能够成功设计出来,很多地方做了妥协,基本上和参考项目一致,最后整个硬件奇奇怪怪,很多预先想的功能都没有实现。。。

    等到硬件电路图成功定稿以后,差不多就到年底了,收拾收拾,就带个笔记本回家过年了,台式机就留在实验室。

    然而此时的我还不知道,一场引发世界危机数年之久的疫情,已然席卷全国!不过回过头来看,这场疫情,于我个人而言,恰恰是弯道超车的机会。

    9.C语言强化

    • 20.3.1~20.4.15

    在家过年的时候,疫情愈演愈烈,一度连家门都不能出,此时学校也紧急发了暂时不开学的通知。所幸回家的时候带了笔记本回家,一同带回家的还有一本C语言书籍,而它也将为我打开C语言的大门,带领我走进嵌入式软件的世界。

    过完年,在家待了一个星期左右,我便意识到不能再无所事事了,于是开始学习C语言。开始打开这本C语言书籍的时候,我直接被它将近700页的厚度吓到了,想到要看完这么厚的书,心里还是有点打鼓。在一番思想斗争后,终究还是咬着牙开始了学习。

    这本C语言书籍,我是下定决心要好好学的,所以每一章节我都认真仔细地啃一遍,大部分代码实例都尽量在电脑上亲自动手实践。对于课后习题,同类型的题目我选做一半,做完以后对照参考答案修改,并做到完全理解。

    这里着重说一句,课后习题往往是最耗费时间的,很难坚持做下去,经常直接跳过看下一章。。一时跳过一时爽,一直跳过白学习。当然,坚持完成课后习题的收获也是非常惊人的,学完这本书,C语言基础阶段的知识基本上我已经掌握地比较深了,应付校招面试足够了,即使在工作一年后的今天,依然完全够用,不会有C语言方面的担忧。

    C语言的学习从3月初开始,学完后已经基本上到了4月中旬,而我也从家回到校外的出租屋,继续学习。

    10.STM32项目——软件&调试

    • 20.4.15~20.5.15

    此时疫情虽然得到一定程度的控制,但是整体情况依旧很严峻,只敢定期出去购买生活必需品,其余时间就待在屋子里学习。此后我利用半个月的时间,把电导率测量项目的软件部分完成得七七八八,主要代码都是板子自带的库代码,我只是针对项目所用到的几个外设部分,从网上搜集了一些轮子,然后再组装起来。

    然而,最难的不是写代码,而是让代码跑通。虽然大体上的功能代码都实现了,然而实际调试的时候,光是代码编译不出错就花了两天时间,对于我一个没有软件编写的经验的小白来说,真的是痛苦又快乐。编译通过以后,就是烧录后观察功能是否实现,然后翻视频翻书,复习该模块内容再修改代码,如此这般,反反复复。

    这一阶段一共花了将近一个礼拜,虽然依旧痛苦,但是整体上来说,整个项目的框架以及各个主要功能模块的实现都已经非常熟悉了。接下来就是根据计算公式以及现有已知的案例,来不断修正最终电导率测量算法。这个过程比较枯燥无聊,纯粹就是工作量的事,没什么收获。

    最后一个过程,就是UI的设计。为了在屏幕上更好地实时显示测量数据,在没有UI框架的情况下,手动排版了一个简陋的界面。

    对项目资料做简单的保存,这样这个项目大体上就宣告完成了这也意味着我从一个完全的嵌入式小白,进阶到一个入门级选手,对简单嵌入式开发过程的硬件、软件及调试过程,都有了一定的经验,同时对STM32单片机有了更深的理解,收获满满~

    而此时,时间已经来到了20年的5月中旬。

    11.计算机组成原理

    • 20.5.15~20.5.20

    项目的事情告一段落,然而对于接下来该做什么我却没什么主意,继续学习还是找一个实习。还好我在网上浏览经验帖的时候,关注了一个粉丝非常多的公众号,号主是个很乐意分享自己经验的大哥,告知我要根据校招的要求来准备相关基础知识,这样才能拿到心仪的offer。

    随后我便确定了接下来的学习路线,首先学习计算机组成原理,根据网上的经验帖这属于是基础功课,于是我购买了一本入门篇的书籍来学习。这本书从最基本的电路开始讲解,相当于手把手讲解。虽然很浅显,但是对于我这样的小白来说确实相当有效。

    有点后悔没有在学习STM32之前看,这样学的过程应该会顺利一些。不过此时看也不算太晚,对后续的学习确实很有帮助之后又简单回顾了一遍STM32的架构部分,大体上算是对单片机的组成原理有了一个初步的认识了。

    12.操作系统&计算机网络

    • 20.5.20~20.6.10

    想要成为合格的嵌入式工程师,操作系统是绝对的核心课程。而网络也是基本的技能点之一。

    接下来的日子,两本书籍轮流看,上午学习操作系统,下午学习计算机网络,晚上继续看看牛客等网站上面的经验帖。我就像是一个干瘪的海绵,渴望学习每一个知识,一点一点加强自己对于嵌入式的理解。每时每刻都在加深对嵌入式这个方向的理解~~

    这段时间过得非常充实,各种新奇的概念知识点学得不亦乐乎,不知不觉大半个月便过去了,而我也算是初步入了操作系统和计算机网络的门。

    13.Linux内核

    • 20.6.10~20.7.1

    学完了操作系统的理论性知识,接下来就需要学习Linux系统咯。正所谓“开谈不说Linux,学尽OS也枉然”(不是)。Linux在嵌入式设备领域,绝对是一家独大的OS,因此我们要想应聘嵌入式软件岗位,必然绕不开Linux系统。

    然而在一开始的时候,我们不必去学那些Linux大部头书籍,那样很容易迷失在大量的晦涩概念中,丧失了信心。因此一开始我们可以从Linux类的入门书籍来学习Linux,主打的就是先有一个大概的概念。

    同时不可避免要学习Linux开发环境的使用,这方面可以在B站上找,学习一些常用的Linux命令,不至于面对Linux系统的使用一脸懵。不用学习太深,主要是理解Linux下命令行的操作习惯和常见的命令即可。

    至此,对Linux系统的内在原理和使用方法,都有了一个初步的理解,我们就可以开始下一步啦~

    14.数据结构与算法

    • 20.7.1~20.8.1

    不知不觉中,时间已经来到了20年暑期,距离秋招开始只有两个月时间,此时我的内心慌得一批。但是没办法,饭要一口一口吃,书要一本一本学。

    看着自己的计划表,基础知识这一块,就只剩下数据结构与算法这块硬骨头了。同样的,数据结构先从入门数据看起,简单了解了数据结构的概念。再去B站看相关的视频教程,跟着做了一些在线题目巩固。最后再阅读经典书籍,认认真真地学习各种数据结构,这样基本算是入了技术结构的门。

    算法这一块的话,就学习了一些常用的算法,比如排序算法、二分查找法和求最大子列和等。其余更复杂的,嵌入式软件并不会用到,为了节省时间就没有去学习了。就这样,前后花了一个月左右的时间吧,勉强完成了数据结构与算法这一块的初步学习。

    这也意味着,直到20年七月底,转行所需要的基础知识部分,我大体上已经全部完成了~接下来要做的,就是有针对性地根据校招笔试的要求来大量地刷题以及准备面试咯~

    15.刷题

    • 20.8.1~20.9.1

    从这个时间点开始,就正式进入了校招最后的冲刺阶段,每个点时间都非常重要。那个时候我经常住在实验室,刷题到深夜,困了就睡,醒来继续刷题。

    说到嵌入式软件的校招面试攻略,那么有一本书就不得不提了,它就是《剑指offer》!这本书讲解了一些面试常见的问题以及嵌入式相关常考的笔试题,跟着书边看边练,算是初步了解了刷题到底是一个什么样的过程。

    接下来就是真正的刷题了,不过在这之前,还有一件事要做,那就是学习C++。因为C语言很多功能函数都要自己造轮子,对于时间有限的笔试来说,真的是会让人崩溃的,因此需要学习一门面向对象的语言。如果之前有基础的话,其实python挺好的。但是由于我是零基础转行,所以我选择学习与C语言最相近的C++。

    可以直接在B站上找一些比较热门的教程来看,学会一些简单的用法拿来刷题就可以了

    学完C++以后,首先把牛客网上面的《剑指offer》题目,通过在线编程的方式全部过一遍。遇到不会的地方就看一下书本,然后再合上书自己编写代码。刷完剑指offer,基本上一些常见的笔试题就已经可以应付了。

    最后我们最好还是刷一下常见大厂的机试题。刷题过程中主要练习自己实现输入代码,然后大概刷个百来题就好了,基本上就熟悉了套路,可以应付大部分的笔试。

    16.面试准备

    本节具体细节,见后续专栏面试准备文章

  • 20.8.20~20.9.21
    • 整理常见问题成册
    • 制作简历
    • 整理项目还有在刷题的过程中,我也同步开始

    17.收到心仪offer,停止校招

    22年9月21日,收到来自目前公司的offer。

    对公司很满意,行业很满意,薪水也很满意,果断接受offer。

    零基础自学转行嵌入式之路到此就告一段落了。

    总结:

    个人优点:沟通能力强,善于站在面试官角度准备面试,基础扎实,思路清晰

    缺点:缺少Linux项目经验,非科班出身,无实习经历

    【觉得有用的小伙伴们可以订阅一下专栏,后续还有更多文章哦~ https://www.nowcoder.com/creation/manager/columnDetail/MWZkkj😀 】

欢迎评论区一起交流~

#嵌入式##校招##面试#
嵌入式校招指南 文章被收录于专栏

作者机械硕士,从零开始自学嵌入式软件,21届秋招进入国内芯片大厂。 从自身转行经历来看,网上嵌入式学习路线的资料少之又少,大多千篇一律且复制粘贴。 而嵌入式入行门槛高,技能树要求多,学习难度非常大,没有有效的方法指导,很容易迷失方向,错过校招。 在此专栏分享我的校招从零开始转行经验,请我喝杯奶茶,听我给你娓娓道来~ 平均每周至少一篇,三个月内完结。

全部评论
4 回复 分享
发布于 2023-03-19 23:44 广东
支持!
1 回复 分享
发布于 2023-03-19 23:57 四川
嵌入式该怎么找项目啊
点赞 回复 分享
发布于 2023-03-21 18:00 天津
硬件有相关的八股文吗
点赞 回复 分享
发布于 2023-03-21 18:00 重庆
【觉得有用的小伙伴们可以订阅一下专栏,后续还有更多文章哦~ https://www.nowcoder.com/creation/manager/columnDetail/MWZkkj😀 】 欢迎大家点赞、收藏、评论~支持一波~
点赞 回复 分享
发布于 2023-03-23 08:31 广东
厉害了,好详细
点赞 回复 分享
发布于 2023-03-23 08:32 广东
收藏了很有帮助
点赞 回复 分享
发布于 2023-03-24 22:16 山东
🐴住了,冲冲冲
点赞 回复 分享
发布于 2023-03-24 22:27 湖南
牛牛牛
点赞 回复 分享
发布于 2023-03-24 23:40 广东
😍😍😍
点赞 回复 分享
发布于 2023-03-25 12:22 广东
博主,你会用arm吗
点赞 回复 分享
发布于 2023-03-25 19:10 江西
正在研究所里替导师挣钱的我,羡慕了
点赞 回复 分享
发布于 2023-03-29 11:32 北京
请问一下模电知识需要学习吗
点赞 回复 分享
发布于 01-22 14:19 辽宁

相关推荐

09-23 16:21
武汉大学 C++
点赞 评论 收藏
分享
44 199 评论
分享
牛客网
牛客企业服务