嵌入式与Linux那些事

嵌入式与Linux那些事

个人背景

本211,硕985,专业机械电子工程,

项目经验1:stm32+改进PID控制+组网通信

项目经验2:一个信号采集测试系统,FPGA+QT+以太网通信逻辑设计+电路设计

学习经历

我本科是机械设计制造及其自动化的,学的除了数学物理基础课程,还有就是机械的专业课,跟嵌入式相关的也就是数电,模电,单片机,机电一体化设计这几个,数据结构、操作系统本科没有接触过。本科期间做的有意义的事情就是参加了很多比赛,拿过全国大学生数学竞赛一等,还有一些创新创业的比赛,挑战杯,互联网+。本科期间过的比较随意,没有太多规划,课程成绩比较好,就保研了。硕士的方向是机械电子,期间做了两个项目,然后重新学的数电,模电,因为有单片机基础,然后就用stm32做了项目。因为课题项目需要,又学了FPGA,对着正点原子买的开发板学的。这也是我面试过程中,面试官主要问的内容,说得详细点一般够说个10分钟左右。

读研期间,主要还是接触硬件的东西多一些,画板子调试,软件编程方面,就是c比较熟悉,但是没有接触过操作系统。操作系统也是在秋招的时候才准备的。

秋招准备

因为机械出身,行业不太景气,师兄师姐都推荐转行,但是好转一点的就是嵌入式的方向了。互联网的纯软开,算法转的不多,难度也较大吧,基于这些原因,我也是目标岗位方向是嵌入式软开。为了给简历增加点东西, 4月-6月找了个学校附近的公司实习,总共就实习了两个月,中间还有请假,我算了一下,实习天数就21天,写点python脚本和Java的ADB调试。实习比较水,所以在那边就经常学习点自己的东西。

实习辞职之后,暑期就没有找实习了,主要是我当时数据结构基础不行,我觉得得自己好好准备一下,实习给我带来的体验不好,没学到东西,所以7月份我就安心准备秋招的知识点,也就是这个时候看到知乎上群主发的pdf,顺着群主的目录大纲一点点学习。到了8月20号我才开始投递秋招的简历(所以没赶上大疆)。那个时候的水平大概是,掌握C/C++的语法知识点,算法题就是一般难度的可以做做。后来发现笔试题难度也都不是很大,面试就完全按照pdf来的,然后结合自己了解到的,又补充记录了一些知识点。操作系统的知识仅限于一些简单的八股文,开始投简历的时候,还跟着群主推荐的韦东山的视频看了看,了解了一下开发的流程。

所以总的来说,我的学习周期不是很长,而且暑期中间还出去玩过,到了秋招的时候,也是比较慌的,觉得自己基础知识不扎实。

面试经验

秋招投了也挺多的,没有记录,20多家吧。因为住在上海,所以都是投的上海的岗位。基本都进面试了。说几个印象比较深刻的。

上海瀚讯(通过)

这家公司不是我自己投的,岗位是驱动开发,因为是猎头推荐的,所以一面就直接跳过进的二面,二面是现场主管面,过去的时候在会议室两个人面试你,轮番提问。都是问项目经历,挖项目细节,30分钟,第一次这么正式,很紧张,头上冒汗。不过两天后,猎头通知我通过了。

小米(通过)

小米一面:

小米的岗位是无线通信软开,然后面试都比较水吧,项目细节基本没怎么问。一面面试官人很好,就问了我四个问题:

1.堆和栈的区别

2.栈溢出会产生什么问题

3.怎么检测到栈溢出,如何规避

4.进程和线程的区别

后面就是聊家常了,聊一些业务相关的,还有个人职业规划。最后说完直接就摆明了说我把你的简历送到下一个面试官里面,这是唯一一个当场说通过了的。

小米二面:

二面是个年轻一点的人,上来我自我介绍完就问我你对计算机网络熟悉么,我说学过一些,然后就问了两个很简单的C语言问题,然后问我对无线知识了解多少,我说没有学过,他就没问题了,我以为凉了,后来小米HR微信联系说通过了

乐鑫科技(通过):

乐鑫总共有三面,第一轮是技术面,一个小时,问的很多,简历的东西全部问一遍。大概的话。问到一个小时就结束了。第二轮是hr面,聊家常。第三轮是主管面,问一问项目细节和自己擅长什么。不会深挖。后来谈薪的时候加面了一个H2芯片的研发主管,谷歌回来的,面了一个小时,后半个小时是手撕了一道软硬件timer的题目,不会做,跟着面试官提示,思路走出来了。面试官对我表示了肯定。后来想要我过去,但是还是拒了。

Tplink(一面挂)

很不好的面试体验,看起来嫌弃我专业不对口,项目直接没问,也没有手撕,问的第一个问题是全局变量和局部变量同名,编译器是怎么处理调用的,我没答出来,问我有没有学过编译原理,我说了解一点,然后匆匆结束了,总共20分钟,就是流水线的那种面试,20分钟一个人。

广联达(一面挂)

C++岗位,基本上从C++的语法问到了设计模式,问题有指针和引用的区别,多态,排序算法,时间复杂度,稳定性,UML,设计模式,项目代码规范性,我大概回答出了70%-80%,以为过,但是挂了,可能因为没有深入的C++项目

Marvell(通过)

这是家外企的半导体公司,然后岗位是做车载以太网芯片的系统工程师,两轮面试,都是线上视频,每一轮一个小时,都是三个人在会议室。第一轮先问项目,半个小时,没深挖,简历过一遍。后半小时,面试官打开一个pdf的试卷,在线完成,题目范围很广,C/C++基础,arm架构的,信号处理的,一道深搜的岛屿问题,最后一道岗位相关的,状态变化的流程,全是英文,没见过,面试官提示我做出来了。整套卷子难度比较大。不过我是口述,一道一道做,面试官也给了肯定。第二轮换了三个人,深挖项目细节,十分痛苦。过了一周hr联系问期望薪资。外企没有加班,较为轻松,但是我由于报了太多,后来就没联系我了。

华为2012实验室(通过)

岗位是通用软开的。机试不是很好做。一面一个小时,半小时聊项目,半小时手撕,二面也是半小时项目和经历,半小时手撕,三面主管面40分钟,聊的项目经历,然后主管跟我介绍了业务项目的重要性和保密性。面试流程很快。

个人总结

我秋招准备不是很充分,但是也收获了比较满意的offer,整个秋招下来我认为最重要的几点如下:

1.简历要打磨好,突出自己的优势,我的竞赛比较多,然后我就单独做了个荣誉奖项的模块,项目经历是面试流程中最重要的一环,项目最好要有两个,其中一个必须很熟悉,大概就是项目背景,研发流程,技术的学习方法,有没有团队工作,对项目中的技术要十分了解,一般面试官通过你的简历可能不能透彻掌握你的项目内容,你要有一套完整的说辞将你的这个项目完全表述出来,前期可能借助讲稿,面多了就记住了。面试过程中,针对岗位,突出项目中涉及技术,给面试官往这个方向提问的暗示。就比如我的项目是用FPGA做的,但是面的岗位是C语言的,那软件部分还有通信设计就要多强调一些。

2.手撕和笔试的难度不在一个等级上,手撕题就参考那个pdf就行了,自己再补充一些。笔试的话,就刷题就行了。我没做多少道题,看的都是专题性的,除了基本的一些数据结构题,还有比如动规,回溯,深搜等,hard的题没时间可以不刷。前期会比较痛苦,做多了就好了,注意积累和形成方法论,像回溯,动规这些都是有基本的代码框架的。

3.保持平常心,找工作不容易,企业找人也不容易,如果基础不是很扎实,多强调自己的学习能力,特别是项目和岗位不太匹配,或者面试官对项目不感兴趣的时候,学习能力是企业招人的标准。

4.给转行朋友的建议:个人觉得转行不难,像中兴还有国企的一些企业就比较简单,当然工资也不是很高,想去工资高一些,就自己提前打算,做好自己的学习路径,学好基础知识,从GitHub或者一些渠道找一个完整的项目坐下来,现在就有很多智能家居的项目,但是也逐渐在大众化,最好还是做一个软硬件都有,比较全面的项目,哪个企业不想要一个代码基础好,又有硬件知识的嵌入式工程师呢?

09-22 20:18