万字长文说嵌入式:一个嵌入式软件开发工程师的自白
扫描二维码
随时随地手机看文章
整理自贴吧电子信息工程,ID:玄妙漪澜,内容有删改,编辑:付斌
本人本科非985/211,工作地点广州,现职业为linux C软件开发工程师,但我的工作背景相对广泛,干过硬件测试工程师,嵌入式软件开发工程师,电子信息工程毕业。接下来我会说几个挺大家都关注的问题:(偏向于大学生,仅供参考)
电子信息工程的就业方向
其实这个问题应该从电子信息工程这个专业是什么来分析,你们可能会去百度然后得到一堆不实用的官方言论,说下我的认识:
从字面上分析 电子 ,有硬件、弱电、非电力能源强电类、信息、软件甚至编程,所以这个专业的就业方向可谓是广泛到漫无边际,各行各业都能涉及到。
专业对口的职业硬件上有电子设计工程师、硬件工程师,半软硬的有嵌入式硬件工程师、单片机开发工程师、嵌入式软件开发工程师,纯软件甚至已经不能算是百分之百对口,但同样可以有,而且大概率主要偏向于计算机专业系,比较正统的有C/C++软件工程师、linux系统开发工程师,稍微擦边的有java开发、安卓开发工程师,学个html5做个前端开发工程师,学几门脚本php、Python等等都没问题,而且我的身边大把这样的人,我说的还只是研发方向,不包括测试类。
其实就业这个东西,你得再从行业和公司去分析——行业即是你的这些技术本领最后都应用在什么方面上,比如通信、网络、医疗电子、汽车、智能制造、物联网智能家居、外包公司、系统运维等;公司指的是你最后选择去的公司情况,大小规模以及技术力量。为什么要特别指出这些东西呢因为涉及到就业中大家最关注的点——就业工资高不高。
就业工资,其实取决于很多方面,但最重要的肯定是和你自身的能力有关,能力越高,能拿到的也就越高。这里所指的能力包括一切硬实力,甚至学校的知名度也算一方面。
另外,与所在的公司盈利情况、发展情况及所在的地域也有关,本人位于广东,对其他地方没有太大了解,广州深圳了解的更深一些。对于刚毕业可能参差不齐,我认为广州深圳研发类转正后是不会低于5K的,当然,如果从高处想的话,高的可以无限的想象,工资高的人大有人在,不过这取决于自己的心有多高。
虽然工资永远是我们追求的核心,但也不要过于好高骛远,一毕业就想蛇吞大象,对于毕业生,一般公司给一般群体都是1w以下的,其实你刚毕业能拿到7k+就可以安然自得了,已是高于平均水平。另外还有些公司是包吃住的,可能刚入学的人不会有考虑这个因素,实际上,开给你的工资和你每个月能存到的钱那不是一回事,如果包吃住6000,那可要比你那7000啥都没有划算多了。
如果你在广州深圳找不到一份工资高于5k的工作,那说明你学的还不到家,这个跟学校和学历关系不大。因为技术类这行就是靠实力说话,笔试面试下来,人家公司不会冤枉你,所以别问我什么我是大专的是不是就拿不到这个数。
另外,当你报了这个专业或者你在选专业的时候优先从工资就业这一点开始考虑,那么你是不明智的。术业有专攻,三百六十行,行行出状元。无论是建筑、金融还是管理,只要学的好,本领过硬,都可以混的好,一句话,还是靠自己。
再者,有很多人听说很多身边的朋友这个专业工资待遇什么的出来还不错就选过来了,其实,这个专业对等的行业不是个混吃等死的行业,你的工资通过跳槽会升的非常快,一年破万是普遍情况,稳定下来以后基本工资都只会停在15k到20k,再涨很难,这时就要看公司了,有很多公司有项目奖,年终分工,股份等等,这个对于干了好几年的老员工才是拿大头的地方。如果涨不上去,你就只能转行转型了,而且这里有一个硬道理,你工资越高,代表你能力越大,能力越大,你的责任越大,你要扛的事就越多,压力很大,总监级别的心态不好头发掉光是肯定的。
所以,从选专业的角度来说兴趣是关键,当然很多调剂过来或者已经稀里糊涂报进来的人就没办法。如果想以技术类作为看家本领只能好好学,平心而论,技术的路属于“稳”的路,换句话说,如果你有一颗不满足于现状喜欢搞事情,年轻力壮意气风发一心想赚大钱做马云的那种,那请你放弃本专业别浪费时间马上开始考虑其他发展道路。因为技术类的工作就要坐得住、有兴趣,靠着你对本业坚持不懈地探索。一步一步来,你才有可能走的更远。我不会因为我是业内人士就很推崇本业,找到自己的道路,明白自己想要什么,才是真的,特别是大学生,最好在大二就有自己的方向,这样,你有充足的时间做一切准备,比如换行!
求职方法和行业大背景
因为我是专业对口的,所以我就从对口的角度,说下我们专业学的啥以及怎么学。有很多人在问专业难度,以及哪些课需要读好认真学等,其实这些需要看你的心有多大,才能决定你要走多远。
另外,电子信息的专业难度只要智商没问题其实一般都学的来,男女都一样,至少学到就业水平是没问题的,所以别问我什么对女生是不是不友好,女生是不是学不来,我只能说那是因为很多女生最后没兴趣没坚持下来。对于女生来讲,这确实是一条孤独之道,学的人不多,学成的人更不多,但我觉得是个人思想和学习环境导致的,大环境下女生都不喜欢这个,所以想走远可能会难。但现在女程序员也已越来越多,“谁说女子不如男”?
如果你想搞科研,有什么高端大气上档次的理想,那本专业就很难。对于任何工科类的专业,肯定是智商高和有毅力的人最后能走的远,所以也没有必要去比较,优秀的人大有人在。学的东西很泛,开的课程情况看学校,主要的课程还是偏硬件类、模电、数电、电路,好的学校会开通信原理、计算机网络、单片机、c语言这些、专业课很多,我就不一一列举了,反正我大学的课是排的满满的,一般来说你有一两门学的精基本就能吃饭了。
这个专业应该怎么学,有哪些出路决定于毕业后想从事哪种工作,此处暂且先不讨论技术外的出路。大一大家都比较迷茫和青涩,估计不明不白所以也没什么决心,对未来有各种憧憬和期待,野心勃勃,各种搞活动搞事情。到了大三才明白过来,一事无成,才又回头扬言搞技术!接下来就是学不会、难入门、坚持不下来的状态……崩溃、懊悔、迷茫……其实,这是大部分本专业学生的现状。
我建议花一年时间,即大一就去闯去荡、去搞事情,最后确定你是不是想稳下来搞技术。大二开始认真学习,坚持下来你到大三就会很强了,没错,已经强到可以找初级工作的地步。如此,便可早入行,到大四大家一起找工作的时候就会比别人起点高一些。当然如果你在大一就一心一意就想搞技术那就更不用说了。
那么这个专业具体怎么学?我接下来的建议只适用于普通想找工作出路的人,对于胸怀鸿鹄之志的请忽略。其实一般的课程你只要过得去就行了,有的人问什么高数物理很难啊用不用学好啊,其实我大二开始混饭吃(本人是相对特殊的大学生,比较早工作),到现在好几年了都没用过高数和物理。但并不建议完全舍弃高数和物理,因为其他科目都与高数物理息息相关,虽然工作上用到的机会并不多,实在无力回天的话,即使不太精通也无妨。
有人问C语言用不用学好?这决定于你从业的工种,目前,我的工作偏软件,吃饭的家伙就是C语言。可以跟自信的跟你讲,精通c语言很重要,不是熟悉,不是了解,就是精通。那么如果不喜欢软件,你是一个硬件工程师或者单片机工程师,那么c语言就用得偏少,那么只要会语法、会编程就可以了。虽然单片机工程师也玩C语言,但相对用的比较浅薄,就是用来控制硬件,主题还是硬件,所以就相对不那么重要。
其实很多男生一开始对本专业有兴趣都是因为硬件,确实动手焊焊东西,看到作品还是蛮有成就感的。有些小项目,智能寻迹小车,看看小车在跑啊或者搞个光立方灯闪啊闪的,看着特别好玩,确实比较吸引男生,这些以前本人都玩过深有体会。但是大部分人其实入门之后后面放弃了硬件搞软件去了。
究其原因有两方面:第一是硬件确实很难,存在瓶颈,入门容易,也很好玩,大部分人只要会焊个东西,会画个板,造一辆会跑会叫的小车就算是入门了。但是真正从业的时候会发现以前都是玩玩具。工业级的产品都要求过硬的质量,要经得起风霜的考验,要经得起人为的摧残,也就是说实际上除了功能之外的东西,还得做很多措施保护,除了这个,单单就产品的功能也有严格的要求——精确到每个电阻、每个电流和电压,要有过硬的理论基础、电路分析、模电、数电、电磁波原理,可能还需要物理。画板要考虑干扰、emc、信号完整性、纹波等,没错,听起来是不是很难,所以其实一般的应届生都不具备一定的经验和水平,书也读的不够扎实,所以很难做到这些,工作中就经常犯错,压力很大,局限性很大,会发生很多你不可理解的事情,就会做着做着发现,啊,不是应该是这样的电流这样的功能吗,怎么没反应或者不是这样的!?然后连查问题都不知道怎么查,然后抛给大佬。
由此引申出第二个原因,因为你一毕业能力不够,其实很难,很少人能达到工作需求,所以企业一般不会开给你高工资,而且还要教你,还要容错,所以刚毕业普遍看起来硬件工程师工资比软件的低,因为软件很多人在校期间就能学好,甚至达到社会工程师水平,所以工资自然就高了,三五年后谁也说不好,硬件确实是个需要积累的东西。所以对于有志于此的人,我还是鼓励学硬件,别老看个待遇,而且硬件工程师比较稳,一般公司想动你都得想一想,毕竟是社会稀缺资源。
怎么学习硬件?大部分课程过得去就成,但是,你最好把电路、模电、数电都读精通。对于已经到了大三下学期然后突然想搞技术的人,其实纯硬件对你来说有点接近关门了,除非你很有毅力,因为这时候你没时间补基本功,后面要想玩好电容、电感、运算放大器、二极管、三极管、mos管很有难度,而且这些理论课程偏枯燥。此外,对于已经在大二铺设好了理论的人,大三就要开启你的魔鬼积累之路,多呆实验室,找老师,找师兄指导,尽你所能做作品去吧,可以找几本电子设计类的书籍或者网上的论坛照着搭,尽量多地积累小电路模型,尽可能多地熟悉一些集成芯片,比如LDO之类的,特别推荐思维好的同学学习开关电源,很考硬件功底,如果你能自己搭出合格的拓扑较为复杂开关电源,那么你的纯硬件已经过关,可以考虑实习了,然后这个时候要学画板,layout那些,熟悉altium designer,俗称AD,但是其实大企业用的不多,多数是allegro,CAD。很多公司画板的工程师是女生,而且其实女生会更有优势。大学期间尽量多参加比赛,电子设计大赛和各种杯,瑞萨杯,飞思卡尔杯等等等,有没有获奖都行,这些就是你的经历,你的简历,写的就是这些你做过的项目,大小都行,写的就是你参加过什么比赛,有获奖更会在你面试的时候加上不少分。然后,还是要尽量早点实习,学校的环境和公司的差距还是很大,出来一趟你会发现强的不是一星半点。对于纯硬件设计工程师,言尽于此。
单片机开发工程师和嵌入式开发工程师
说起电子专业最对口的就是这两样了,因为纯硬件还有一个叫应用电子技术的或者是什么电子科学与技术,但是这两个职业,绝对是首选考虑电子信息工程的。
很多不了解行业的人说起嵌入式,他们就会说,“啊,我知道,就是搞单片机嘛。”甚至,连我们本专业同班同学百分之五六十的人都是这么认为,然后我内心就如火山在奔腾,有一种想拍人的冲动。
其实从广义上的来说,单片机确实算是嵌入式的,特别是能跑系统的单片机,像stm32和高级一点的凌阳单片机。但是狭义上的单片机,就是泛指这一类不跑操作系统的单片机,也就是我们常说的MCU、stm32虽然可以跑系统,但是大家都是裸机开发,基本不会给它上系统,所以单片机开发工程师干的,用的芯片平台,也就是stm32这个级别的了,而嵌入式搞什么呢?嵌入式写全叫嵌入式系统,需要往芯片上植入高级系统,一般是Linux,高级的就是安卓,windows都有,玩的芯片平台都是arm9以上的芯片家族,什么飞思卡尔啊,TI的芯片啊,中国自己做的有华为海思啊,安凯啊,这类叫SoC,片上系统。
其实还有一些比较特殊的芯片平台,前几年也挺火的,比如FPGA,这个平台的编程语言不是c,是VHDL,做并发处理,速度快,主要做仪器仪表,高精密那种。刚毕业的时候有一个师兄专门学的是这个,后面放弃了改学安卓去了,然后后来比较冷门,反正我毕业之后就没再听过做这个的工程师。不过我在毕业找工作那会去面过海格集团旗下的海华电子,他们好像是用这个的,海事电子,航海仪器啊,还有军用野战电源,不过后面面试没成功,从此也就与FPGA再无交集。
个人认为能搞嵌入式硬件开发的都能完美胜任单片机开发,所以嵌入式硬件开发的市场价值实际上也要比单片机开发工程师要高级的多,其实你在招聘网站上看到的单片机开发工程师一般都是门槛比较低的,真正招高级的单片机开发都会打上“嵌入式开发”的标签。
比如我最近面的cvte,这是个行业内很出名的公司。可能有人关心面试的过程,但这里不讨论,以后有时间写写,反正他当时招的嵌入式,但是其实是搞单片机开发,虽然本人最后很幸运拿到了offer,但没有去。回过头来说下嵌入式硬件,实际上就是嵌入式驱动开发工程师,这是嵌入式业界内难度最高的一个工种之一,没错,嵌入式业界很广泛,实际上嵌入式开发囊括的内容很多,由底层往上,就是嵌入式驱动开发工程师,大家都在说装驱动。
那么驱动是个什么玩意?所谓的驱动,简单理解就是控制硬件的那部分程序,这部分程序在单片机上直接用C语言写就行了,只要你步骤对,没配错,一般都ok,但在SoC上需要套上linux内核的框架,需要考虑系统性能,数据处理,相对的要难上不少。所以驱动工程师就不止要会硬件,懂硬件的原理和控制方法,还对软件能力有很高的要求,而现在软硬兼修的工程师少之又少,身价很高,凌驾于纯软件之上,所以前面有人说我们专业啥都要会一些,这其实是一件值得庆幸和称道的事。
实际上刚毕业的学生基本没有办法做驱动开发工程师,只能从其他领域入手,慢慢向底层过度,有一定工作经验后才会被认可为合格的驱动开发工程师。嵌入式除了驱动开发,还有系统开发,系统架构工程师,这个也是高难度职业,一般都是公司的总监级别人物,所以,刚毕业的新同学其实百分之八九十都是搞linux应用开发,即是在已经有系统的基础上开发程序,就好像你在windows上开发软件,在安卓系统上开发app是一个道理的,也就是大部分嵌入式软件工程师的工作,也就是编程,用c/c++写软件,和一般软件工程师其实也没两样,只是你需要懂很多系统层面上的东西,多进程多线程编程,数据保护,数据结构,你还需要懂网络编程,可能需要了解各种协议,还有就是嵌入式软件工程师比一般的软件工程师能更多地接触到硬件层面上的东西。
话说到这,应该没有人再以为嵌入式软件开发是搞单片机了,实际上加了一个操作系统,就完全不是那么一回事了。那么软件工程师就该有软件工程师的样子,本人没进行过其他种类的软件开发,不知道java、安卓、H5那些是怎样的,但嵌入式搞的软件,绝对不是之前在学校从头搞的一个小程序,每个公司都会有自己对应产品的代码仓库。而嵌入式产品的代码,规模都很庞大,成千上万个C文件和各种其他文件,有很多公司校招面试会问你敲代码的代码量之类的,就是这个原因。所以没有哪个人搞嵌入式是从第一行开始敲代码的,嵌入式工作的大主题就是移植和加功能,在“祖传代码”的基础上搞事情。所以很少有嵌入式的项目是一个人搞定的,一般都是一组好几个一起做一个东西,好几年、好几代程序员积累下来的玩意,最终堆叠成了公司的产品。
为了总结,稍微提及一下嵌入式的基本架构,嵌入式产品一般都包括bootloader(uboot)、linux内核、文件系统以及居住在文件系统里的各个应用程序。对于嵌入式来说,移植和可裁剪是一个很重要的主题和特点。
说说单片机
大概总结一下嵌入式开发工程师的工作内容,做底层驱动的人的工作大致是几样:1.搭系统,裁剪和移植内核 2.编写外部设备驱动 3.驱动移植 4.数据处理,为上层做应用的人提供接口和参数 5.做技术文档,而做上层应用的人的工作则是:1.根据产品功能设计和搭建产品的软件框架 2.移植或编写应用程序,调用底层接口实现功能 3.根据产品需求加模块,加功能改功能等等 4.界面操作,会涉及到QT开发或者是GUI,一些集成图形库等等。
另外,一个公司做上层跟做底层的工程师比例是8:2,因为驱动这种东西一旦做好,就不需要再去修改功能和更新迭代,相对稳定,所以公司不会需要难么多人去开发和维护驱动,而只需要高薪聘请少部分人。
有些公司对你的工作会有一个明确的定位,会给你定主要负责的项目和功能,有些公司则不会,就是有什么开发需要,根据能力以及你过往的经验来决定你在新项目里的位置,所以学的好的人,上下层不脱节,软硬件不分家。这样,有些公司会根据你的兴趣和方向给你分配和工作,其实对于有工作经验的嵌入式求职者,一般技术面时会问你的规划和发展方向。
很多人其实一开始对这个专业感兴趣都是因为看过一些单片机的项目觉得有趣,学了一阵子,然后后面又听说嵌入式工资待遇很好,就转学嵌入式。
其实这里有个误区就是还是觉得嵌入式是搞类似单片机的东西,以为一入门就能搞驱动,搞创造,当年我一开始也是这么想的。但是要开始学那会师兄问我,你知道嵌入式是干嘛的吗?你知道嵌入式怎么学好吗?你知道嵌入式学出来能干嘛吗?我一脸懵。
第一个问题楼上说的很清楚了,接下来讲第二个问题,因为我是正儿八经的嵌入式工程师从业,所以这块我了解的多,就多说一些。其实学嵌入式的话基本就是先从单片机开发工程师的路线来,一般来说,学校是会开设单片机一类的课程的,但这里有两个弊端,一是单片机课程开的时间问题,很多学校都是大三才开课,那个时候黄花菜都凉了,二是不少学校教单片机死扣微机原理,甚至还用汇编教,教学还跟实际脱离,不动手。建议是这样的,大一或者大二找浅显易懂的单片机书籍去读,推荐郭天祥写的那本书,然后买一块开发板去玩,这个东西,会玩上瘾的,不骗你。
当你点一点流水灯,搞一搞串口通信,再弄一块液晶显示屏1602刷点什么图案,会获得很大的成就感,反正我是这样的。而且单片机这个东西的入门很简单,你只要有点微薄的c语言基础就行了,不需要懂什么微机原理和汇编语言这些古董!我的同学大一就在玩了,那时都没有c语言的课程。实际上,我只花了一个月就学完了51单片机,我觉得一个月算长了,因为如果一两个月下来你没学的七七八八,说明你对这个东西没兴趣,或者真的不适合搞技术,至少不是很适合单片机或者嵌入式,可以考虑想下其他道路了。单片机说白了就是学引脚,配寄存器,当你学会51单片机之后其实你就可以玩很多单片机的小项目了,花点小钱买点材料找些去搭一搭,会获得一种造物主的喜悦感,至于项目,大把是,书籍,或者网上找很多。简单的有那些小车,光立方,计算器,交通灯……还有需要涉及到一些简单的传感器,比如什么红外对管啊,超声波测距啊,霍尔元件啊。其实51单片机没多少资源可用,算是比较初级的芯片,后续可以考虑变种的八位单片机,比如stm8,stc,中颖,瑞萨那些,引脚复用关系更复杂,资源更丰富一些,可以涉及到adc,i2c,spi这些东西,需要配置寄存器,配时钟,配中断,或者有库函数可以给你学习和调用,这些网上的论坛也一大堆,然后作为进阶,最后学习stm32,算是一个典型而且被广泛使用的高级单片机,已经可以初步跑系统,诸如ucos一类的小型系统,功能也是应有尽有,把stm32玩熟的话基本就能吃饭的了。至于stm32的学习资料非常多,教学视频什么的都有,而且玩stm32的人非常多,你不会是孤独的,遇到有什么问题解决不了,上网一搜一堆答案。
单片机的基本说完了,反正你最终的目标是掌握全部的外设,熟悉UART、SPI、I2C、USB总线,有很多人用过,但是都是一知半解,把这些真正搞懂很重要,因为面试的时候面试官最喜欢让你说一下这些东西怎么配,这些东西的过程,或者对比下这几个玩意,厉害一点的就问你这些东西出了问题该怎么查,思路有哪些,答不出来你就再见。
单片机没多少内容,所以各位少年基础打好,别太自信,有多少同学不知道UART分为好几种类型,比如RS232和和RS485两种不同的协议。然后最后厉害点的再玩下触摸屏和dma等等高级的操作,然后做几个作品就可以准备出道了,单片机作品不低于5个,最好有十个左右,复杂度高的至少要有一个,什么叫复杂度高呢,就是用上我上面说的总线两种以上加上些吊炸天的外设,比如电机,flash,摄像头,屏幕等等,OK,单片机的我就言尽于此了,如果你想往嵌入式的驱动工程师方向发展,也得这么玩,但是不用玩的贼溜。接下来我来说说嵌入式怎么玩,应该很多人关心这个问题,因为嵌入式的学习对于毕业生非常不友好,而且条件非常有限,可以说你在学校很难有条件掌握。
首先第一点,其实很多学校的电子信息工程都没有开设嵌入式的课程,有些学校可能开设了嵌入式的课程,但其实教的是stm32,比如我的学校就是这样,我是二本a的学校,但当时我们学院根本就没有会嵌入式的老师,可笑到就连带我的指导老师都叫我放弃学嵌入式去搞php(因为当时大热门),说什么工资高,还说什么linux连他都学不会我学去干什么。,我有我学的理由,这里暂时不讨论,后面有时间写写。反正事实证明我就是嵌入式开发出道了,最后啪啪打了老师的脸,毕业设计那会我用嵌入式做了个东西,在座的老师都不会,给了个全班最高分。当然啦,对于那些学校好,有开设真正嵌入式课程的同学,你们要懂得珍惜,因为带你学嵌入式的老师和师兄就是你最宝贵的资源,是你道路上的一盏明灯。
其实linux也没有那么难,我的导师会那么说的问题在于我要说的第二点,在我看来,嵌入式就目前来说没有系统完善的学习资料,因为嵌入式这个东西涉及的面太广,根据各行各业的不同,会涉及到硬件、软件、网络、操作系统等,所以书籍要么就是讲的很泛,软件硬件都讲一些,我记得韦东山写的有一本灰色的书就是这样,啥都涉及一点,但很多没讲明白,而且点太多,记不住,看完云里雾里的,还有好几本书讲嵌入式的也这样。
其实嵌入式的详细资料大部分都是分开的,很零散,软件吧,比如单单讲linux的,就有好几本,什么unix环境高级编程,unix网络编程,深入理解linux内核,Linux设备驱动开发,每本都是你高数书上下两册加起来那么厚,想看完够你喝一壶的。再者硬件吧,其实压根就没有必要,因为我们开发所用的芯片一般都会有芯片使用手册,供应商写的很全面详细,比如华为海思有一款芯片就写了九百多页,包括三星的s5pv210和TI的数字信号处理芯片,都有详细的数据手册,还都是英文的,我记得我们上DSP那会,用的课本就是芯片手册直译过来的。手册上什么都有,开发商还附带给你提供软件支持包,都有这么权威的东西了,还有谁去出书呢。所以嵌入式的学习资料要么不全面,要么零散学不完,对于初学者极不友好,就此又刷刷刷打压一大片同学放弃。
第三点,嵌入式的demo很难找,我想学嵌入式,那我总该找个嵌入式产品的代码来看看吧,对不起,这是个很难的事情。我上面说过了,嵌入式的代码大部分都是超大规模工程,那是企业雇了好几代程序员花了好多钱积累下来的东西,是一个企业的命脉,那是商业机密来的,怎么可能随随便便就给你找到呢?其实就算你是本公司的员工,在没得到公司认可之前也是看不到全部的代码的,公司一般都会有代码版本管理工具,比如git、accurev,一开始不会把全部代码权限开放给你,对于核心的代码,都编译成静态库或者动态库,在最后编译固件的时候链接进去就行了,你压根看不到源码。上面有人说想把C学精通,其实找一份嵌入式的代码去磨一磨就行了,但是很难找,网上只能找到一些嵌入式产品的“零件”,比如各种glib库,协议库,各种驱动源码,但是很多同学没概念,不懂找,于是GG。综上所述,这三座大山压死了一大片来学嵌入式的人。
说说驱动
驱动实际上就是裸机开发的原理再套上Linux的框架,实际上,大部分,或者说常用的驱动,都是那些总线,UART,SPI,I2C,CAN,USB等最是常用,所以学裸机或者学单片机的时候,一定要把这些总线的工作原理搞清楚,实际上外设有很多种,但很多时候SoC跟外设交互的渠道就是通过总线来实现的,所以驱动实际上最难的那部分就是要调通总线,举个例子,比如现在有个触摸屏或者电源管理芯片要做驱动,然后用的是I2C,那么你的第一步肯定是写个驱动,调通I2C,能用I2C读取到触摸屏控制器或者电源管理芯片里的寄存器的值,然后才是对它们进行配置,至于配置,实际上也是基于总线去配。如果硬件原理你已经懂了,那么,最重要的,实际上就是学习Linux底下的框架,也就是驱动模型。
驱动模型有很多种,包括字符设备模型,网络设备块设备,混合设备,平台驱动模型等等,实际上也就是Linux底下的一个框架,就是说人家linux已经帮你设计好了,你只要调用linux下现成的函数接口一步一步来就行,往框架里面注册东西,填回调,填参数,这里又说到了两个东西,“注册”和“回调”,没实际去做过嵌入式工作的人可能很难理解好这两个东西,所以学了半天都不知道驱动在搞什么,回调,是大规模的代码工程里最常见的东西之一,特别是一个东西好几个人做的时候,比如A在做一个控灯的项目,有界面啥的一整套都全,然后在这里面A只会调上层的界面,但他不会调流水灯,而B他知道怎么控制流水灯,但他又不做上层,那么他就搞了一大堆功能函数,比如开灯,关灯,每个功能封成一个函数,然后A设计了一个结构体,里头设计好了开灯关灯函数的接口形式,即结构体里提供了一个函数指针,而B只负责用他做的那些功能函数给这些指针赋值,这样A虽然不会调灯,但他知道那个结构体里有控灯的函数,他要控灯时直接调那个函数指针就行了,在这个过程里那些“函数指针”以及指向的函数就是回调,然后B所做的事情就叫“注册回调”。
可能我这么说还不清楚,那从驱动的实例来看,好,就说字符设备,比如串口,你做好驱动并且成功装进去linux之后,在/dev目录下会有设备名xxx,这个xxx是你做驱动的时候填进去的,当你用系统调用open,linux就会初始化串口,你调用read的时候就会就会读串口,write的时候就会通过串口发数据,但是设计linux的人比你早生那么多年,他哪知道你调这些鬼东西的时候你要收发串口。但,他就是知道,你open的时候,我就调驱动里某某结构体a的某个成员a.open,read的时候就调另一个成员a.read,a.open和a.read都是个函数指针,他不知道这个函数指针后来人都拿他来干嘛,但他就是知道你调open的时候要执行a.open这个函数的功能,至于这个功能是啥,我不管,那是后面写驱动的人干的,这个就是回调的作用。
注册,即是你往linux设计者提供的结构体里填东西,包括回调,包括上面说的串口的名字,即填进去给linux知道,这个过程就叫注册,注册还有一个深层次的含义,实际上你把结构体填好后,linux会把这些设备的结构体全部串成链表,统一管理,linux调用驱动里的回调实际上是个很复杂的过程,这里就不展开说了,有兴趣的人再去自己研究。好,回到上面说的驱动模型,写驱动就是上面B同学干的事,你做好一大堆功能函数,然后填结构体,注册设备,注册驱动,注册匹配函数,注册处理函数等等,当然啦,简单说就是这样,这只是个概貌,论细节还是能很复杂的。
回调还有一种好处,就是移植性好,非常符合嵌入式的主题,因为你在这个平台注册的是这个回调,换个平台,寄存器什么的都变了,好,我只需要换一下我注册的回调就行了,我驱动的总框架不用变啊,这个,就是我们经常说的驱动移植了,简单理解就是如此,当然,实际上没有这么好做。至于那些注册什么的,内核那边会有相对应的结构体和注册接口,linux内核基于各种外设,其实都有处理这些东西的现成的框架核心,比如I2C核心,usb核心,linux input子系统等等,实际上做驱动的除了这些,还需要了解很多内核的东西,内核的工作队列,内核线程,内核休眠唤醒,除了硬件中断注册还有tasklet软中断等等,因为我这篇不是技术贴,目的旨在说明方向,所以就不在这里讨论,只要你学嵌入式驱动,就会涉及到我上面讲的东西。实际上很多东西你在学校学不到,书本也讲的很片面,分不清侧重点,所以还是要找实例,或者直接去工作中实战,如果你们已经学完了驱动的基础理论,那可以去github或者哪里找几个驱动去看看,比如wifi驱动,触摸屏驱动等等,虽然我打包票你们一定看不懂就是了,因为即使理论学的再好,这些驱动都是要对应上芯片手册,开发文档,并且具有一定行业知识才能用,不然你甚至都不知道人家写的变量是什么意思,比如wifi驱动你肯定还要懂802.11无线网络的,至少要知道wifi的行业知识,ap,sta代表的啥意思,人家变量写个adapt_obj,你也不知道是啥。当然,如果你在学校就不必顾虑那么多啦,应届生不用懂这些,学了基础理论,会点皮毛就能去找工作了。
嵌入式工程师出路之我之见
学嵌入式的主要有两个专业的人,一个就是我们电子信息工程,另一个是计算机,我们一般从下往上学,人家计算机的从上往下学,但是相信我,其实我们专业好一点,因为你学过硬件要过度软件,相对简单,但是你要是纯软没接触过硬件,那么你想迈这个坎可就难了。我说这话还有另一个意思,就是你学嵌入式也可以不必懂硬件只会软件,因为应用面广一点,社会上招的基本都是嵌入式软件开发工程师。
以下这些都只是我的个人想法。首先,那些学校有开设相应的嵌入式系统的课程的同志,请抱紧你们学校的大腿,跟老师搞好关系,老师活了那么多年比你我经验丰富,肯定会指导你怎么学,我说的不是课上认真听讲,而是课后赶紧去拜师,一般大学的老师都会拥有自己的实验室带带学生一类的,没有的话课余带带学生在老师那也是小菜一碟,而且有积累的学校,你肯定有很多强大的师兄师姐,有很多前辈可以抱大腿,师兄师姐很热心,人很好,会无条件帮你的,再不然,你说不定有学霸同学也在学这个,和他一道组个队,一起荡起双桨,他肯定有属于他的资源,不然不会冒然学这个,学嵌入式有风险,分分钟学不成的玩意。而且你在学嵌入式的过程中会遇到很多离奇的问题,很多很多,肯定会有,没有人带着很容易进坑,很容易放弃。还有一个好处,就好像一个人考研没办法成功,两个人可以,因为你需要有一个群体,有一个坚持下去的动力和目标,有一个互相鼓励的伙伴……也有可能你们一起进坑死了。
如果你跟我一样是孤儿,然后有一颗想要坚持下去的心,那唯一的出路就是尽快走出学校,前面我说过了,我们学院没有相应的资源,我有师兄学这个,但是很少,我只认得三个,可能你们会觉得我写这么多看起来很强大很厉害离你们很遥远脱离实际一类的,但,其实我就是大三才开始学习的嵌入式,没错,在我开始学的时候,那三师兄里的俩已经实习去了,见不着面,聊不着,还有一个师兄学成在工作的,但是他不懂嵌入式硬件,他搞的主要是QT,界面开发,所以我是真真正正的孤儿,所以要有信心,连我这种**渣渣都可以,哈哈哈哈。好,回到正题,我们的目标是出去工作,那么嵌入式达到出去工作的条件是怎样的呢?基本的理论你一定要会,项目你一定要有。但是人家企业也不是**,都知道搞嵌入式的应届生都是渣渣,因为你想真正会只有去企业里学公司的嵌入式代码,所以公司来学校招人,对应届生的要求不会特别高,但,也是很难,所有嵌入式的招聘,基本离不开笔试,企业会关注你的项目经验,但是你做的东西在他们看来是玩具,能用来体现你大学的刻苦用功以及对知识的掌握度,但不保险,他们还要考你的基础,考你的智商,所以百分之九十九会有笔试题,本人面过很多企业,但是只有cvte和海格比较奇葩,没有笔试题,但不是不用,而且比较变态,会直接把笔试题难度的问题在面试过程问出来,看你的反应。所以基础打好很重要,笔试的话基本就是C语言的题还有linux的东西,多进程多线程,考你的编程能力,考你书读的扎不扎实,有兴趣,对自己C语言能力自信的吧友可以百度些笔试题做一做就知道自己几斤几两了,反正你对指针和链表一定要绝对熟悉。
学嵌入式的第一要务不是之前我说的那么多的硬件能力,而是你的C语言功底,所以如果你学了一阵子单片机而且具有一定功底然后想转嵌入式,那么非常好,你只要花点时间再补下C语言,如果你觉得你已经学完了,那么上网百度些C语言的小项目做上几个,没问题的话你可以开始刷C语言的笔试题了,这些网上都找得到。有很多学校教的都是谭浩强版本的C语言,这里我推荐下华章教育出的那本C语言,那是创造C这门语言的作者写的,薄薄的,但有难度,适合进阶,如果你觉得智商很强大不够玩,好你买一下华章教育同系列的另一本书,数据结构,看看头发能不能掉光,当然,这些不是必要条件,只是说你有能力有兴趣有时间想训练。嗯,这个就是统一回复之前以及以后想问我怎么提高C语言能力的同学了
先说说有关Linux的,说实在的,大多数人在大学期间没办法把这个学的多好,至少,本专业的相比于计算机系的算是输在了起跑线,看看你学校够不够好,有没有操作系统这门课,非一流学校的电子信息工程是不会有的。那么你就只能靠自学,如果你大一大二然后很想搞技术,并已经确立了从嵌入式或者linux的方向出头,那么你很有时间,你可以买买我上面说的那些巨厚的书去研读一下,讲的很好很全面,以前双十一的时候当当打半折,本人我买了十几斤。
如果你大三大四,那么你最好是找一些资料先全面地了解下概貌,包括linux是个什么东西,包括什么部分,系统调用,多进程,多线程编程,其实也就是一系列linux的posix接口,说的通俗一点就是人家Linux给了你一大堆函数,你去学下这些函数怎么用,跟学安卓那些一样一样的。特别是信号,信号量,管道,消息队列,socket这些进程间通信的理论,还要自己编一编程序去用一用,线程互斥,线程同步,线程池这些等等,找一些讲嵌入式的书就会有讲,或者找些视频资料去看,比如国嵌的,韦东山的,鸟叔的,但是这些全部都要钱,几百块还是要出的,我之前是看的国嵌,买了它讲嵌入式的全套资料,五百多块,客观地评价,他讲的还行,就是顺序不对,先讲的硬件,再讲linux,然后它驱动那块讲的也不太行,初学者看完应该是分不清重点的,反正我看完都没明白嵌入式能干嘛,企业的嵌入式怎么开发,以及嵌入式能做什么,一脸懵逼,但是看看还是不错的,因为我觉得都这样。其实关于这部分我也比较无奈,韦东山的书我也观摩了,还看了好几本其他的书,但还是没弄懂前面那三个关键性问题。前面说了我学嵌入式的道路是孤独的,虽然我看完一知半解,但后面迅速就业弥补了,至于为啥我为啥能迅速就业,是另一个故事,后面再讨论。我的师兄有看鸟叔和韦东山的,我的同事有看书自习的,所以我觉得虽然懵懵懂懂,但有个概貌就OK的。
Linux的理论和编程简单其实也挺简单的,就是靠背就成了,没有其它花花肠子。想搭架构和设计程序以及代码严谨性等,那还是得去看企业的代码,还是得啃那些厚厚的书。还是大概说说嵌入式的开发环境吧,这个学嵌入式一定会学到,但我可以说说公司里都用的啥。你要有个虚拟机,装的可以是vmware或者virtual box,前面比较耗电脑内存,相对较卡,但界面友好,工具齐全。有了虚拟机你要装Linux,Ubuntu,debian,红帽都行,但红帽偏向于网络运维方面,从业这么久,大部分搞嵌入式的都用Ubuntu。然后你要熟悉linux的指令和shell脚本语言,这个不用我说了,必备的,一般在企业里开发都会需要你配好几个东西,samba、tftp、ssh、git。
电脑装上Xshell或者secureCRT,用来看设备串口控制台,与设备交互。看代码用的工具是source insight,看脚本一般用的notepad++,还有文本比较工具。然后关于代码编译,呵呵,嵌入式不是单片机,不会有keil啊IAR啊这些集成开发环境的,也就是说你自己写的代码你要自己写Makefile去编译,也有很多用cmake的,Makefile的语言你不用很熟,会简单的就行,像企业编译那么大规模的Makefile不会叫你写的,你也写不出来,但是有时加个模块什么的需要改动,所以你还是要会一些基本的。还有要熟悉编译选项,-l,-L,-I(大写i)等等。我说这些如果你还没学嵌入式,可能看不懂,但是如果学过一些再来看就会很清晰了。我不是培训机构,不可能教那么庞大的东西,我写这个也只是说一些道理、经验,给迷茫的人指个方向罢了。
行业大背景和求职方向
学嵌入式和硬件门槛很高,嵌入式门槛最高,需要你懂N种东西,然后硬件入门容易,学好最难,那为啥不找个纯软件去学?学个java,学个php,或者当个安卓开发工程师,ios开发工程师多好。先不说我为啥最后选择了嵌入式,我的故事我后面会讲,这里不讨论。我刚刚提出的东西确实是个问题,而且是个已经导致了社会现象的问题,就拿我们班来说吧,窥一斑可知全豹,我一个二本a线学校,专业两个班,每个班约五十人,全专业就我一个人是搞嵌入式的,嗯,还有两个硬件工程师,一个单片机开发工程师(其实这个人也是嵌入式的,不过后来给南方集团忽悠去搞mcu了,就是我前面说的打的嵌入式的标签实际上搞单片机),专业对口率百分之四,哈哈哈,所以说如果你们最后调剂啊,或者觉得选错专业啊,没关系,因为你选专业只是决定了你的大学四年以及多了选择可以从业本专业的东西而且会比较有优势而已,你如果不打算搞本专业的东西,完全不是问题,活生生的样本,如果你担心是不是转行就不行了没优势,那我告诉你,你要相信自己,虽然专业对口率百分之四,但是毕业一年大家目前的平均待遇是7k+。嗯,虽然不对口,但是搞技术的还是很多的,我们班有一半以上,学的都是纯软件方向,java开发工程师啊,安卓开发工程师啊,php开发工程师啊,ios开发工程师啊,游戏开发啊。杂七杂八的也很多,比如维达纸巾搞销售啊,在广州银行数钱啊,或者去阿拉伯带团队做跨国贸易,或者黄埔船厂造船,只有你想不到,没有不可能。
其实还有各种各样有趣的,比如还有去西藏支援的,还有去联通维护光纤电缆现场技术支持一类的,当村官的也有,女生我们班七个,有去搞游戏策划的,有去搞html5开发的,有去电信的,有自己在做微商的。我觉得我们班不是个个例,我们学校也不会是个个例,应该各大高校这种情况很普遍,不信去问一下你们师兄师姐。你可能会问我为啥会知道这么多,因为我呢,其实不是你们想的那样,别看我前面说的头头是道会的东西很多一副技术宅工科男的样子,实际上,我是个很outgoing的人,看我能吹这么多就知道了,我的交际能力和人脉资源其实好的很,不想搞技术也完全没问题。
现实其实很残酷,很多人最后选择了不搞技术,很多人选择搞技术,但是却是纯软件的方向,因为确实社会是这样的,学习难度是纯硬件>嵌入式>纯软件,收入却是反过来的,吃力不讨好的东西很多人不会去干,特别是那些本身没有情怀没有能力的人。
说实话,硬件我们班虽然只有两个,但是有一个确实学的很可以,工资水平在水线以上,还有一个就很不行了,而且就我所干的公司里,硬件工程师的工资确实比软件同比稍低一些。我前面分析过原因了,我那个水线以上的同学就是最好的证明,当然啦,硬件确实有难度,但只要你有兴趣,有心认真学,我觉得都是一样的,那些做不到的只不过不感兴趣了中途放弃掉,要不就是压根没有好好学习。
世界上只有两种人,一种是成功的,还有一种是没坚持到成功的。那么说说嵌入式的,嵌入式的其实也是有很多硬件成分在里面,门槛还高,我前面已经分析过了,嵌入式在学校学不好,在学校学的再好,出来也是菜鸡,这一点企业也是知道的,所以嵌入式是个低起点的职业,就是一开始普遍工资不高,很多企业看重的是你的学习能力,所以嵌入式必然有笔试,而且招进去之后企业还得花很长时间培训你,用工作锻炼你,这个过程真的很长,一个毕业生要成长为一个对企业真正有作用的成熟工,至少要花三到六个月不等的时间,但是嵌入式听说很多人说做嵌入式待遇很好啦,很吃香啦,而且你去各大招聘网站上查啦,嵌入式都是五位数起叫的,招五位数以下的还少呢,咦,这又是啥回事嘞。原因嘛,也很显而易见啦,因为学的人本身少,学的人里最后还有学不成找不到工作的,所以社会上成熟的嵌入式工程师是数量有限的,那么根据市场原理,物以稀为贵,所以当你成长为一个成熟的嵌入式工程师的时候,就会发现待遇蹭蹭地涨。
其实很多学嵌入式的人都知道这个行情,包括招嵌入式的企业更是知道,所以他们都知道花时间和精力把你培养会时你就直接跑了,那我还给你那么高工资干嘛,反正你是短时工嘛,虽然一般你进企业后每年都会有调薪,但是其实涨幅不会太大,也就是五百一千这样,所以肯定不如跳槽来的快。基于这样的行情,除非公司真觉得你是个人才,在你要走时才会提出比较高的待遇留你,而一开始都是开低待遇的,5~6k左右,不会再怎么高了,当然我说的都是一般企业啦,你要是跟我说什么华为啊,cvte啊,那我没法跟你解释,反正只要你进的去这么牛逼的企业自然是天有多高,手有多骚,能拿多少拿多少。有人说你不是拿了cvte的offer吗,我不是校招拿的,我是工作一年后确实有实力了才做得到,如果你是在学校校招嵌入式就给cvte招走了,那你确实是大神
我最后没选择硬件,还有选择嵌入式,都没有考虑过工资待遇这个问题,这点要先澄清一下,因为我算不上穷,有自己的追求,而且虽然以上说待遇会有差别,有高有低,但实际上刚毕业除去个别优秀的人,其他人待遇就算有差别也不会太多,也就一两千,算不得啥,如果你要说工资收入代表了你的能力,那么其实这个也不算太准,特别是刚毕业那会,但是你再过个三五年回头看看你那帮同学,虽然说出来特别中二,但三十年河东,三十年河西,莫欺少年穷。
选择行业的时候一定不要优先从待遇这些去考虑,先问问你自己喜欢什么,如果有人说我就喜欢赚钱啊,那你应该去做生意,经商搞贸易,创业,而不是选择去搞技术,本人我有个高中同学,大学不一个学校,他学校也是一般,搞国际贸易的,说起来也算是销售,毕业一年,有车,他的收入单每个月扣掉的税就快赶上我之前的工资了,另外他不是富二代,没关系,也是靠自己。如果你本身对技术有兴趣,那也应该遵从本心,而不必执着于太多待遇方面的,因为差别都不太大。技术路相对生活会比较枯燥,如果你本身不喜欢这一行,那就是个煎熬。
而且一分钱一分货,你拿的工资越高,你要承担的责任越重,要干的活也越多,公司可能会把很多很难的任务给你做,然后又赶时间,压力会特别大,不是开玩笑的,所以高工资也常常意味着高压高强度,上面有人问这行是不是青春饭,我认为是的,因为搞技术就是靠智商,而且上班挺多公司还是挺累的,你工资高不可能拿钱不干活,所以也是变相“搬砖”,只不过别人付出的是体力,你付出的是脑力,本人我体验过不停加班天天九点十点,一个月只休息两天的工作节奏,我相信那不会是你想经历的,当然,也不是全部的都这么累,我现在的公司就还好,至少目前是的。
所以后面工资如果拿的高,有可能工作任务,压力等等会对身心造成打击,我以前公司的总监,年过三十然后脾气暴躁怪异,至今未娶,多多少少和工作有点关系。而人一旦上了年纪,脑力下降,身体各方面能力下降,扛这些,确实有可能熬不住,所以青春饭一说也非空穴来风。当然啦,这些也很看公司的,所以进一个好公司比你拿高工资更重要。
其实我说了那么多嵌入式的,这些特征也同样适用于硬件,不过更极端而已,纯硬件起点更低,然后需要积累的时间更长,一般可能两到三年左右才出真知,不过这些都有一个特征,就是特别稳,后面我会再说下这点。先分析下天下大势,其实每隔几年,都会有某些技术突然火起来了,然后霸占市场,待遇高,需求量大,从前几年看是这样,物联网概念刚起来的时候,嵌入式和FPGA火了一把,互联网起来的时候,安卓应用开发和ios应用开发又火了一把,大数据时代来的时候,java,php又是大火,本人毕业在2017年那时候就是java和安卓应用开发很热门,很多人都在学,那时候小程序的概念一来,html5前端开发也火起来了。但是从17年开始,ios应用开发已经处于比较低迷了,前几年学ios的多,市场比较饱和,后面市场需求量减少,对工程师的能力要求也就相应高了,于是很多人找不到工作,现在这个现状在18年也同样适用于安卓和java。对于那些还没有技术定型和没有喜好方向的人,是要提起嗅觉,敏锐察觉并做出正确选择的。
当然,只要技术功底过硬,不需要考虑这些东西,但是对于那些技术学着玩,准备进去it业混吃等死的人,是要这么考虑的,我相信贴吧里肯定有这种人,还不少。这两年因为AI,机器视觉和5G又火起来一个python,这个是可以考虑的技术之一。今年火的概念有哪些呢,AI,5G,云计算,大数据,区块链。嵌入式跟头三个都能扯得上关系,时代的发展方向只要是向着智能化和自动化的主题去发展的,那么嵌入式就不会落伍,而且嵌入式所牵扯的技术甚广,你只要学的好,身子稍微一偏,就能换到其他行去了,就比如我现在严格来讲就不算是搞嵌入式开发,只是我会的linux和软件开发这一块,再加上网络方面的知识,刚好够我加入另一个新行业,5G和网络虚拟化。其实还有一种嵌入式学的是docker容器那些,那么又可以往虚拟化和云计算这块去靠。
上面我这么一说,还会有人觉得自己的专业是“学的杂而不精”吗?其实错的人在自己而不是专业,如果你最后学艺不精,那么一事难成,而学的好,万般通吃,包括现在嵌入式硬件方向,安卓驱动工程师也是严重市场稀缺,没错,虽然我一直在说linux系统,但其实嵌入式用的最广的不是嵌入linux,而是安卓哟,那些市场上装了安卓系统的数字电视,那些地铁口给你买票还能扫码付款的售票机,那些银行里给你自助服务自助办卡办理业务的机器,都是嵌入了安卓系统的嵌入式产品,包括你们拿在手上的智能手机,背后可算是一群嵌入式大佬在搞事情。
所以嵌入式是个超级长青的主题,需求量稳定,而且往下只增不减,但是嵌入式又对从业人员的要求很高,特别是当你不是校招而是社招的时候,企业就不是招你过来培养,而是找你过来干活的了,你们可以去猎聘啊,拉勾网,智联招聘,前程无忧等等看看嵌入式的招聘要求以及工资待遇,那都是挂在牌面上的东西,待遇就那样,应该能满足大多数人心目中的要求,但是你们有没有看下要求呢?从业经验那是肯定要求的,一年到三年不等,特别是驱动工程师,没有三年以上工作经验那都没人要你,然后你再看看它的技术要求,你是不是会了嘞?比如最简单的我上面说的搞过并且熟悉串口,I2C、SPI、CAN总线驱动中的一种或者两种。有些招聘要求会写的很详细,有些写的很简单,咋一看你好像都符合要求了,但你投过去可能简历都没过,过了人家才在现场用严格的笔试和面试推敲你的能力。
最近一次我找工作,其实已经错过了秋招,有点晚,当时我以为可能会很难找,很怕招聘需求慢慢变少了,因为本人好几个同事先后离职都是在今年九月十月左右找到不错的工作。我只在猎聘网上挂了我的简历,一开始投了三四家,都像石沉大海,但后来我发现我的担心是多余的,从某个时间点开始我开始接到好多面试通知,排不完,整整排了两个星期满满的(猎聘网有个功能,你不用投简历,那些公司的hr看到你的简历会来主动找你,这里面其实很多不是我投的,包括我现在所在的公司),我面了六家以后找到好的,就没再去后面的了,后来有个猎头告诉我,其实这些大公司招聘嵌入式的需求一直都有,一直都要人,只是要求都很高,要你会干活,待遇也比较高,但如果没有找到他们心目中符合要求的人,这个岗位就会一直空着。我说这个是想说并不是说你学了嵌入式,就能找到工作,并不意味着你跳了槽,就能换到好工作,所以最重要还是你得学的好。
事实上我不建议像我这样毕业一年就跳槽走,我跳槽走不是因为我嫌待遇低,而是因为实在熬不住了以及我有我自己的理由,这个后面有机会再说。搞技术的,最好还是在一个地方窝上两到三年再跳,不然很危险,高不成低不就。特别是硬件和嵌入式,如果不是因为我的项目经验确实多,估计要吃瘪。因为这两个很吃行业,比如你直接是搞医疗电子的,然后突然要换去汽车导航的或者安防行业的,那其实蛮困难的,一般这种跳槽都是同行业互跳,比如从搞医疗电子的公司a跳去同样是搞医疗电子的公司b,因为你熟悉原本这一行的行业知识,你一来就能干活了,所以企业愿意开高薪给你。如果你突然想跑去安防,那你懂ipc怎么调图像吗?你懂nvr怎么录像吗?你懂流媒体怎么传输数据和优化方案吗?h264和h265压缩编码算法和视频传输协议onvif你又懂不懂嘞?我相信如果你只是搞医疗电子的话你肯定不会知道这些,ok,那你过去人家公司就是一个高级的毕业生啊!
你还是得来学习,我还是得教你,如果你还想要高工资,那么企业就不会要你了,因为你没达到从业要求,这也是为啥我说嵌入式稳得一匹的原因,因为你走了对公司是一个大损失,他要去招一个同行业的成熟的工程师又很难,要招一个别的行业的工程师又得不偿失,招一个应届生又得培养好久,如果在做紧急项目抢占市场,呵呵呵,黄花菜都凉了,而且对于成熟的工程师,一般都是一个人负责一个项目,一个功能,你走了,你留下的功能别人要接手还不是太容易,嵌入式的代码要是写的不好,那跟天书一样,你走了,你的代码也就成了断代的“祖传代码”,别人要接你这个烫手的山芋,欲哭无泪,如果你以后从事嵌入式,你就会明白接别人的任务,那是一个天大的锅。综上所述,很稳很稳,只要你不想走,除非公司要倒了或者你真的伤天害理不仁不义,不然不会叫你走。我走那会我的组长应该是各种心酸的,我跟他说了一句“梁园虽好,终不是久留之地”,他大概也就知道留不住我。
换行如隔山,这是我这次跳槽最大的体会,不过其实楼主我又是比较幸运,因为之前做的项目偏底层和通用类别,所以我完全换了个行业,哈哈哈,我前前后后在三个行业内混过,楼宇自动化,懒得解释了,嗯,可以认为仪器仪表类吧,另一个是安防行业,还有一个是移动通信网络行业,公司嘛,一共干过四个,公司规模从小换到大,从只有几个人的公司换到现在的跨国公司。
求职的时候的选择
其实我也就想说说两个问题而已,一个是毕业的时候选择社招还是校招,另一个是毕业的时候是选择大公司还是选择小公司。
先说说第一个,其实这个各有千秋了,看你的自身情况去选择,校招的话门槛很低,对应届生的能力要求不高,所以会去校招的公司自然给你开的薪水不会特别高,但是公司相对会正规一些,大公司都不会参加“摆摊”的,都是以宣讲会的形式去各大高校宣传,然后当场笔试,面试,然后再叫你去他们公司第三轮面试。所以我说笔试很重要,因为应届生啥都不会,基础薄弱,他们的第一关想筛选人才自然是考试,要有心理准备,笔试很难,楼主我当时就是很懵逼那种,啥都不知道也没准备,给笔试打了个措手不及。然后笔试一般做不完也没关系,因为他都是按照排名去选的,也就是说你要和各大高校学生去竞争啦。校招和社招最大的不同是他不太看重你的社会实践经历,不太看重你的项目多少,而偏向于你个人的基础能力,所以会比较关注的是你在大学做了什么和学习的能力。校招不止有宣讲会还有招聘会,各大高校每年都会有春秋两次招聘会,一个在八到十月,一个在三到四月。招聘会你就要去投简历啦,然后会有简单的面试,过了就会叫你去笔试,再面试。
我举个例子,就拿我现在的公司来说,我现在的公司是外企,上市的大型公司,听同事说他们招聘时是这样的,我们hr拿到你的简历,其实看都不看,就是问你,你四六级过了没有?如果你没过,那你可以走了,我们公司是外企,所以对英文能力有要求,起码你四级要有,如果你有,就会再问你你学习成绩在你们班排的位次怎样?如果你回答中下等或者不太行一类的,ok,你又可以走了,书都读不好的人,在公司看来没什么用了,如果你回答一般啊,还行,过的去这些很中性的答案,就会开始看你的简历了,没有什么项目经验的估计也要gg,有一定项目且在校活动丰富的,会让你参加下一轮笔试。如果你学习成绩很优秀,就直接让你去参加笔试了。所以上面有挺多人问我这个课要不要学好啊,那个课要不要学好啊,人家校招就看这,你要是真是个学渣,要进大公司会比较难,哪怕你做的项目特别多,或者像我这样工作经历很丰富的人。楼主我简历虽然很漂亮,但不能掩盖我是个学渣的事实,我只有某些专业课的成绩特别高分,所以感觉那会想找大公司好困难,当然啦,也不是叫找不到工作,机会还是特别多的,项目经验和社会经历多的人肯定不会坏到哪,只不过是大公司有门槛,如果你没拿到某些通行证就只能跟你说对不起了。
至于社招嘛,依然是留给有社会经历的人的,所以社招其实对毕业生很不友好,对各方面能力有一定要求,不过适合那些在学校就已经学的非常厉害的,而且社招工资稍微会比较高,楼主还有同学是伪造自己已经毕业一年去找工作的,特别是那些纯软件开发的工程师,很多这样,因为他们在学校就学的不错,已经会干活了,已经达到了社会人士的标准,所以他们出门的工资就很高了7k的8k的都有。至于你要是硬件或者嵌入式,嘿嘿嘿,还是别太自信的好,像楼主我项目如此多以及在校期间凑起来有两年工作经验的人来说都没什么信心去社招。但是我校招最后也拿到了6k,有点虚,不过就是这个数。
再来说说小公司和大公司,其实个人也是觉得你能进大公司会比较好,不过对于公司的情况非常复杂,不能一概而论。大公司体制完善,反正相对于小公司肯定是各种好,你想你要是在什么腾讯啊,爱奇艺啊,怎么可能会比你进了一个听都没听过的公司不好?但是大公司对应届生都有严格的体制,工资该多少多少,所以不要去看待遇,能进大公司还是进。大公司门槛也会比较高,对于大多数人而言,你其实上也只有校招那一年比较有可能上大公司,因为那些超级公司,都是只要校招,社招都是秘密渠道挖人,不会公开招聘的,比如你听过或者见过腾讯出现在招聘网站上?大公司的人员流动性相对比较低,因为各方面都很好了,所以从大公司走的无非就三类人,一类是大公司真的比较闲,对于毕业生来说确实很不好,因为你刚出校门需要积累经验,学习才是你的主题而不是赚钱,听说海格和安居宝就是这样的,相对较闲,有同学和同事是进去后没多久跳槽出来了。
另一类是嫌公司给的薪资低,实际上大公司都是体制完善,对工资评定有自己的标准,不会随随便便升职和猛涨工资,除非你能力超脱。大公司因为各方面都好,所以人员流动性也比较低,上面老大不走,你想升迁谈何容易?所以除非有职位空缺或者公司规模扩大你才会有机会。挺多人其实进了大公司就待遇不错了,但如果谈到成家立业结婚生子那又是九牛一毛,所以很多人最后在公司没拿到所需要的待遇,只好向下跳槽了。大公司还有一个好处,那就是你有了大公司的经历想进中小公司就会比较容易,门槛较低,而且从大公司跳槽到小公司待遇会涨上不少,这个过程叫“镀金”,你想你要是说你是从腾讯出来的想找工作会太难吗?然后最后还有一类人是本身能力逆天,心怀远大理想,一心要剑指苍穹武动乾坤的人,想凭借自己在公司的经历和大招牌出来闯荡搞事情。好了,大公司说了这么多说说小公司,有很多其实衡量一下,确实没资本去大公司,那么你只能从小公司干起啦,小公司一般都不会太闲,一般都很忙,很适合你学东西,你可能需要一个人解决很多问题,那会是个修罗场,学完干的差不多再换呗,楼主我就是这样的路线,从最小最小的公司一路通关打上去的,还有一个是有些小公司可能人文氛围好的话就会比较温馨融洽,反正同事间的关系会比你在大公司好上不少,适合你发展社会关系,当然啦,也有些小公司领导压力太大脾气暴躁。好啦,行业大背景和求职注意事项到这里我就全部说完了,一楼大纲的第一第二点完结,下面有空再说说对大三大四迷途羔羊的建议
如果你是一个大一大二已经玩废了的学生,然后来到大三几乎啥都不懂,然后还很迷茫找不到方向。那么这里我提出一些建议,只当是一个过来人的想法,当然,我不是什么神仙,也不是什么大佬,毕竟我确实才毕业了一年,很年轻,我说的话包括我以上的言论也纯粹都仅供参考。也许以后回过头来会发现我现在的想法很肤浅也说不准。首先你确实已经荒废了两年,所谓种什么因,得什么果,荒了两年肯定是注定你已经少了很多选择了,天上不太可能掉馅饼,这点你要接受现实。那么这个时候很多人回过头来就慌了阵脚,昨日不可追,明日又不知何去何从。这时候你需要想清楚一个问题,很重要,是要继续当前的日子这样荒废下去,还是从明日起找点什么目标奋斗一下?因为我见过很多人这个问题想不清楚,要么不去想,一直逃避,继续游戏人生,这种无疑只有一个后果,那就是最后碌碌无为,很多新闻说本科大学生找不到工作,不是骗人的,确实很多人毕业找不到工作,不是没有工作提供,而是因为低的两三千,三四千的工作,大家都觉得我一个本科生去干这么无聊没有社会地位的工作很可耻,然后工作内容好一点的又没有条件,找不到,高不成低不就。
上面的问题只是一个决心问题,因为如果你真的不是王思聪,而是像我一样的草根,那如果想要一个美好的未来,只能靠自己去争取。所以你肯定要戒掉一些东西,去改变自己,凡事都是要付出代价的。如果你确定决心下够了,那就来思考第二个问题,你是还要不要搞技术?这个问题 是个方向性问题,因为我们专业给你提供了一个搞技术的可能性。到这里先不考虑能不能做到,能不能实现的问题,而是单纯的想不想搞的问题。有人说我可能要从待遇方面去考虑啊,各种各样复杂的因素要想,其实不是,你想赚钱,送外卖也能能送到万把块,赚的可能不比你搞技术的少,而且搞技术也没一般人想的那么轻松。那不搞技术还能干嘛,大把去了,社会很大,各行各业很多,销售,做生意,搞产品,做文员,或者考个公务员,考个教师,你在大三的阶段,想搞什么都还来得及。所以最重要的是是不是自己真的想要的先,我也见过不少人决心倒是下够了,反而是因为到头来发现不是自己想要的,最后没坚持下去,浪费时间,不是每次撞了南墙都有的回头。哪怕你是考研,这个问题也务必想清楚,因为你迟早要工作,这个决定将决定你选择什么类型的工作。
当然也有人不知道自己想要的是啥或者干脆什么都想要,比如我,那么这种没得解,我就是这样,我整个大学不算迷茫也不算荒废,而且在一般人看来很励志,但是我所做的一切选择都没有任何目标目的性,因为我从头到尾都在找自己想要啥,没错,我是在“找”,不是在逃避,我一早就知道自己需要一个目标,在来大学之前就知道了。我大学没有做错太多事,因为我的行为准则都是降低“职业台阶”,降低入百行的行业风险,广泛的摄取各类知识但又只涉猎不专精,同时在做各种大胆的尝试,我希望在我做错啥撞了南墙发现自己要啥的时候还来得及,不至于没得选。所以你到了大三还啥都不知道,以前到现在也啥都没准备,那么这个事无解,如果你只是不知道自己想要啥但是像我一样不算太荒废,那么可以找有优势可能性大的方向尝试。
如果你不打算搞技术了,那么最好是赶紧出去混,如果你在学校当过什么学生干部,参加过多类活动,或者其他一些什么非技术类的比赛,比如演讲啦,创业大赛了,那就更好了,你的简历上就有的吹,因为你不会技术,那么你只能用别的东西证明你自己足够的优秀,成绩好也算一项。如果你啥都没有,然后又不想搞技术,那你只能攒阅历,哦,这里那些学校吊炸天的要除外,因为非技术类的,学校本身就是个硬实力,985的学校,说出来已经就是个招牌了,足够证明你很优秀,所以你学校好,那你只要能写出简历,会说,就成。那么攒阅历,指的就是社会实践经历,做兼职啊,打零工啊,参加各种工作啦,那些都算,因为他们招人的时候看重的是你的表达能力,组织能力,还有情商啥的,这些东西很玄乎,没什么能证明,所以你的简历和经历很重要,再者就是面试了,反正面试官会从当场你的表现和反应能力来推断你是不是ok的,其实据其他人描述,非技术类的应聘带有比较强烈的感情色彩,面试官看你顺眼就成,他判断的标准有时候也是完全没道理,总之,除了简历,其他的都是随缘的。而你的简历占了很大的比重,包括简历的样式和内容,工科的可能一张白纸黑字就能搞定,而非技术类的应聘,简历最好是“别出心裁”的。简历上要有经历,所以上面我说的那些你要是没有,就想办法去拓展,什么志愿者活动啊,跑马拉松毛笔字比赛啦,那些都行。毕竟企业招校招生时其实也有那么一点招“培养生”的意思,主要还是看中你各方面的基础能力。如果你要是告诉我你那些都拓展不了或者不知道怎样可以弄到这些经历,那么我只能说你不适合这类职业,因为非技术类的,个人认为比较适合outgoing和energetic的人,这类人肯定会有一定的人脉关系可以利用。
我没从事过非技术类的工作,但因为我心很宽,其实我一直想尝试一下,甚至在最近一次换工作还有想过转行去搞点别的,但后面发生了很多事,导致我又回来搞技术了,比较重要的其中一个原因是我几个月前突然得了很严重的胃病,呃……应该说我一直肠胃都不是太好,但是半个月前突然严重起来,所以我放弃了去闯荡一番的想法。因为在我看来身体健康远比什么都重要,身体是革命的本钱,再忙的人也会有时间去看医生。技术类的生活比较平稳,哪怕是加班,作息什么的还是能保证规律的。但是像搞销售一类的,就保不齐了,有个同学虽然做销售很好赚,现在在广州买车买房,但是据他说他的三餐很不规律,睡眠时间也很难保证。当然啦,不仅仅是销售,还有好多非技术类的工作,但是呃……如果都是打工的话,其实在那么多行里面,要想找份工作是比做技术来钱快的,还是销售类,管理类和金融类。但是金融类和管理类都得去进大公司,而且个人认为对学历一类的会比较看重,门槛偏高,我没有相关方面的资本,所以不在我的考虑范围内。每个人都不一样,还有的人就图个稳,一心准备考个公务员回家,毕竟像广州这种大城市很难混,要想在这里安身立命,还是路漫漫其修远兮。说一下几个同学的经历吧,呃……有一个我们班的,大概从大一下半学期开始就觉得自己不是那块搞技术的料,然后就积极参加各种活动啦,什么班干部啦,校辩论队啦,人脉很广泛,还参加创业大赛什么的,后面好像还自己搞过一些小创业。然后据他所说,他在大学就一直很看重英语,做英语练习,反正虽然是我们专业的,但是口语很溜,后面进过智联招聘,然后不知怎么的就变成做外贸了。其实,我也觉得英语很重要,如果你的英文交流没问题,那么是一个很值得称道的资本,去哪都会很吃得开。然后因为我现在就在外企,每天看的资料什么的,也不会有中文的。所以如果各位有机会的话,还是要把英语学好,可以的话把六级过了也是不错的。
还有一些是借住家里的人脉关系弄去一些单位,比如船厂,比如深圳某居委会,或者某地的联通、移动、电信等都有,如果你家庭有某些资源可以利用,也是要列入人生的考虑范围内的,我家里其实也有这方面的人脉,但是前提要去考个公务员。但是我是不喜欢师医公的,前两个是责任太大,后面一个是真的太稳了,稳到什么地步呢,如果你真的考上了公务员并且有编制,如果你没犯错,你的领导是没有办法开除你的,所以,哪怕他叫你干活,你大可以以一句“不会干”搪塞过去,你的领导拿你一点办法都没有,饭碗很铁,不会丢,但相对的,如果你真这么做,那有什么好处和升迁的机会,相信下次领导也不会考虑你了。公务员的待遇跟地方经济有关,忙不忙也跟具体岗位有关。然后楼主我有一颗不安分的心,所以并不是很想去做个小公务员,但其实它在我的考虑范围之内,因为后面发生了很多变故,具体我就不说了,如果后面有时间我再写写。非技术类的出路我就说这么多了,这些也只是我的看法和见闻,不喜勿喷。
如果你到了大三大四还想搞技术有哪些选择
大三了,然后之前如果有过一些基础,我的意思是说你对电路有一定的认识,课本上的东西能懂个七成以上,那么你还是可以从纯硬件去发展的,其实个人觉得这个应该和学校有特别大的关系,一般来说学校如果在硬件和动手能力这方面重视,那么其实还是很多同学能从这里出道的,如果学校不行,比如我们学校,那么可能整个班,整个专业都放弃硬件都是很正常的,总之综合自己的兴趣和实际情况去评判。如果硬件学的实在不行,那么还有嵌入式和纯软可供选择。嵌入式嘛,其实你大三的时候是个小白,连单片机和c都不懂,其实也是可以入手的,我就是个活生生的例子。虽然我有硬件基础,但实际上在大三刚开始那会,我的单片机和c比较空白,不过,我们专业只有我学下来了……
所以也不知道算不算是个例,总之老夫作为过来人告诉你,虽然挺艰难和迷茫,但是这是条可行的路子就是了然后纯软就更合适入手了,因为个人认为,学一门语言三个月就够你学的很溜了,你想去学什么java,安卓,ios,c++,python,php,html5都ok,任何一种学完你都能吃饭,至于待遇水平看造化,至少可以保证你能就业,纯软其实到了大四也是可以入手的,想好好学不算太晚。从结果来看,我认识的人基本都是大三或者大四开始精修一门软件,最后混的还行,至少毕业一年有吃有穿能养女朋友,不至于露宿街头夜栖天桥。嵌入式嘛,就不建议了,但是对于那些大三大四幡然悔悟又突然特别有情怀能坚持的人,还是可以破釜沉舟锤一下的。人嘛,总要受点苦,付出点代价,才能获得你想要的。
其实搞技术的不限于研发,现在很多测试工程师也很厉害,特别是楼主现在公司这些测试工程师都有不亚于研发工程师的能力和待遇。测试不是以前那种重复同一个动作的机械测试,虽然现在也有,就是比较low了。测试现在很多都是自动化测试,自己用脚本语言,python,tcl,java等等,做测试用例,做集成测试,自动化测试,对线上运行的软件进行实时监控,logging,tracing等等,涉及linux的出了问题还要抓core,用gdb等工具调试等等。
我对培训的看法
其实现在社会上现在涌现出了一大堆培训机构,培训的内容基本都是和软件挂钩的,在广州这边比较出名的传智播客,小码哥,粤嵌等,前两个是培训纯软的,后面那个一听就是嵌入式。培训费高昂,看学的什么东西,一万多到两万不等。其实我本人以前很反感培训机构,一直觉得非走投无路不可不然不要轻易去培训。一个是有点看不起去培训的,以前认为去培训的都是在学校混的不行了才去,对于那些大一大二有点上心的人来说去培训其实是没必要的,另一个是培训费确实贵,至少对于一个不想拿家里钱想靠自己的人,出不太起(虽然培训机构确实是有先培训再工作后付款的机制)。我们专业,不,应该说我们整个学院,后面有大量的人去参加了培训,因为大一大二玩脱了,所以硬着头皮赶鸭子上架,抱团培训给他们自己“一个学习的理由”。当然,从现在来看,挺多人效果不错,待遇比我高,而且培训速度快(不过培训期间你需要承受巨大的压力以及高强度的训练)。
培训的过程也还是挺艰苦的,课程一般是三到四个月,那段时间你基本上不了学校自己开的课,为了你自己交的“巨款”,你必须去培训机构上课。他还有一系列“激励学习”的制度,比如迟到会扣你钱,考核不过要补点钱“重修”等等,啊,总之就是你交了钱“上了贼船”现在非学好不可了。于是那些自制力差的人终于可以好好静下心来,摒弃游戏的侵蚀。这么看来培训机构还算是个好东西,反正现在没有以前那么厌恶这个东西了。一个是他效果好像还行,至少在我那一届还是不错的,我们班有三分之一的人(十来二十人)没有好好上课,在大三或者大四报了班,然后这部分人里又有差不多三分之一的人最后没学成,或者说学完没有以技术从业,当然,有些不是技术学的不好的原因,比如后来被安排去船厂。然后培训的这部分人里还有几个待遇比我高的。
不是我自命清高,但是我的大学确实过的蛮拼的,但是这些个培训的,无一例外,都是以前没有好好学技术的,所以感觉培训机构蛮“bug”的,有时候想想会还有点心理不平衡。所以那些实在自控力差但有点钱又想好好学技术的还是可以考虑一下培训机构的。至于培训效果,还是得靠自己的,看你有多认真了,我觉得我那一届也不能完全说明问题,毕竟当时我记得是培训机构的初期,比如学安卓那些好像是小码哥前两三期的学员,培训机构前期为了打出名声,是会很注重培训效果的。但是到了现在,已经蛮久的了,过了一期又一期,培训机构不停地在为社会量产工程师,一批又一批人不停地涌向社会,社会竞争必然加剧,社会对工程师的需求貌似也会渐渐趋于饱和,个人觉得情况应该不能与我当时那一届的同日而语。当然啦,这些都是靠自己,学的好管他天崩地裂世界末日竞争激烈需求饱和,一技在身不怕没人要。这里我还是比较客观,别问我适不适合培训什么的,能评判适不适合需不需要的只能是你自己。
总结
首先你要明白你要学到什么地步能从业,大概就是C语言学的不错,Linux基础理论过关,入门级就够了,熟悉arm的启动流程,工作模式,稍微懂些硬件,然后有两到三个嵌入式项目。可能你会觉得这些好像很容易掌握,很浅显,没错,其实你只要有心,认认真真就可以在有课的情况半年内完成这些嵌入式的学习,然后可以在大三下学期初步进入实习,在大四再换一个好一点的公司实习。或者你已经学的很好,直接进了大公司去实习。如果你到了大四下学期或者很后面才学完开始去实习那意味着你毕业时就确实只能去差一点的公司拿微薄的工资或者根本找不到工作。
再细化一下要求,其实也就是你可以写在简历上的东西:
1.熟悉C语言,了解C++
2.熟悉arm启动流程,了解uboot,并且有过自制简易uboot的经历
3.熟悉linux下多进程,多线程编程及线程池技术,熟悉网络编程,熟悉时间编程
4.了解Linux内核,能进行简单配置。5.熟悉文件系统,能自行用busybox制作简易文件系统
6.了解linux下设备驱动,包括字符设备驱动,块设备驱动,网络设备驱动,平台驱动,混合设备驱动。
7.熟悉UART、I2C、SPI、USB总线及其工作原理
8.能熟练使用Xshell、source insight、tftp、samba、git等开发工具
9.了解Makefile、shell脚本、gdb、valgrind
这些就是你的目标,最后不论你是否做到了,都要这么写,后期也可以补课,总之这样至少对企业是有吸引力的。
学嵌入式首先学好C和单片机,单片机不用玩的很溜,但要会,然后就开始全面的嵌入式学习,包括嵌入式系统的一整套基础理论,你可以看书,可以看视频资料。嗯,其实昨天本人我灵机一动,搜了一下还有个贴吧叫嵌入式吧,也许里面在嵌入式的学习和资料方面会有更多资源,帖子也会讲的比我更详细专业。后面如果有人问我要任何资源,我会告诉你没有,因为如果你连找学习资源都做不到,嵌入式学不会的。这条道坑坑洼洼,一点自主能力都没有的掉进去爬不来。所以最好还是有人带着学,老师师兄或者同学都行,像我一样是孤儿的就会很艰难,对自学能力和意志力要求挺高。然后如果你已经学完了基础理论,看了我这篇帖子应该不会像我当初一样一头雾水连嵌入式是干嘛的都不知道。这个时候你可以做几个简单项目,然后算上你的单片机项目和比赛经验,你可以去实习找工作,找之前一定要找些笔试题去刷,刷到ok成功率就很大了,对于学生,找工作的主要难度还是在于笔试题。