![]() 在开头还是要简单啰嗦一点所有面试都要注意的细节,虽然也许人尽皆知,但把控好整个面试的流程才是制胜关键: 1、自我介绍 准备一段1分钟之内的自我介绍,包含基本的个人消息,项目信息,获奖信息等。不要太长,简历上有的尽量简练。 2、项目描述 技术面试时,通常都会让描述下自己做过的项目。所以要将自己做过的项目整理,准备两个方面: (1) 项目的内容(市场需求、功能等) (2) 涉及的关键技术(技术亮点重点突出) 面试时,表达力求清晰。 3、常见问题 1) 终面时,面试官一般都会说,你有什么问题要问吗? 2) 对公司的产品有了解吗? 3) 你的薪酬期望是多少? 4) 你在学校的表现怎样? 5) 你家里人怎么看待你留在xx地方工作? 6) 你希望从事哪个方面的开发? 7) 你的职业规划是什么? 8) 你为什么选择留在xx地方工作? 9)自己的优缺点?有些缺点(如不善于交流,其实大家都差不多,不要对自己失去信心),自己知道就好了,不要说给面试官,但也不要说自己的缺点是优点太多,这个原因很明显。面试官喜欢有合作精神,交流能力比较好的。尽量突出自己的优点。 10) 遇到的最大挫折?或者项目中遇到的难题是什么?怎么解决的? 11) 请给出一个能留下来的理由?或者你的优势在哪里? 4、简历 这个很重要,可以结合图文的形式,建议做精美一点。如果做的东西很多,可以多写一点,但要注意排版,技术面试官一般会比较关心项目。 我简历做了3个版本(1页版,2页版(1页文字+1页图片),4页版)。实践证实,4页版(1.5页文字+2.5页图)效果最佳,1页版的基本都石沉大海了。 5、做好面试记录和总结 不要面试时,投递的公司和岗位都忘记了。另外,每次面试都要总结下自己哪里做的不好,哪个问题卡壳了,下去搞明白,做到每次面试都有所收获,尽量不让车费白白浪费。 投递公司我分了两个类:已投递(整理投递信息),已面试(整理面试经验)。建议保留公司的职位要求信息,便于准备。还有一定要对自己面试的公司有所了解(产品,企业文化了解是最好不过了)。 6、其他方面 1、衣着整洁要得体 2、求职资料要备齐 3、请勿陪同或携伴 4、称呼仪态要得当 5、沟通表达要求清晰流畅 6、 讲礼仪,不要迟到 嵌入式找工作校招上究竟是怎样的,什么最重要?简历该怎么做?嵌入式工程师YellowMax如是说:(来源:嵌入式Max) 说实话,面了这么多家公司,觉得校招最注重的还是基础能力与理论。对于嵌入式Linux开发类职位来说,最重要的是C语言基本功底,对C语言要了解的十分透彻,比如C语言的面向对象编程,怎么用C语言去实现面向对象类高级语言的继承、多态、封装。达到熟练掌握数据结构,尤其是链表。对于指针不能仅停留在取址、加减运算这基本印象上,至少要达到知道指针与数组名的区别,知道char、int等指针类型的区别以及它们的相互转换方法,知道函数指针与指针函数的使用以及区别等等。在学习过程中要找准自己的方向,不要去过度追求各种金光闪闪的框架以及语言的奇淫技巧,学习过程中要注重各个知识背后的原理,而不是仅仅会用。 校招的优点(相对社招)
准备
临近2017年的校招,那个时候是2016年的7、8月份,我开始为正式的校招做近期准备了,准备的内容包括以下方面:
另外推荐两个非常好用的网站,有网页客户端也有手机APP。
由于我是毕业于一个普通的二本院校(虽然专业是一本),所以很多嵌入式的公司并不会鸟我们学校,由于离武汉比较近,并且往届的很多学长也是去的武汉,再者还有一位实验室的大牛也要去武汉参加校招,所以就决定跟他一块去武汉碰碰运气,也因此我还额外准备了武汉地区校招攻略,什么杂七杂八的生活用品,准备在武汉血战一个月。 简历的书写简历的问题我跟实验室那位大牛前前后后搞了一个月左右,期间咨询过老师,网上搜集无数模板,知乎上也找了不少相关话题,参考往届学长学姐的简历,最后终于搞出了一版还算满意的简历。 简历的书写要遵循以下几点(必须遵守):
这里给出一份简历模板,不一定符合每一个人,但是绝对很有指导意义: ![]() 对于其中的几点说明:
说起简历的问题,又想到了去武汉面试的时候见到的华科同学的简历,开头大大的学校名以及学校logo,目测占去了整张简历的1/5,这个真的不是夸张。对于这些名牌大学来说,学校真的是整个简历上面最耀眼的地方了,当然要大书特书(感觉我语气有点酸哎),而咱这种二流的学校,既不想让学校太过显眼,又不能说让面试官看半天还找不到学校名,于是就悄么叽儿的稍微往下放一点,也算是不卑不亢了哈。最后,学校不是很好的就千万不要学人家华科的孩子们啦,省点空间写点真正有用的东西是首要的。 出发去武汉至今仍然清楚地记得,出发去武汉的日子是9.1号,卧铺,两个人(实验室同学同行),历经9个小时。由于打算在武汉长期奋斗,所以两个人都拖着大包小包,异常笨重,当天夜晚走的,第二天下车到华科的时候已经是中午十点左右了。两个人就随便买了点东西,拖着大箱子在华科的校园里面随便晃一晃,边走边吃边聊,顺便感受一下华科的环境氛围。 由于第一次去武汉,首先要做的就是找住的地方,作为学生,当然就要找经济一点的地方啦。住的地方有多种选择,比如:
中间还有一件事情,就是在武汉待得时间较长了,想要去剪一次头发,于是手机搜索好不容易找到一家最近的,一看,洗剪吹20,心想,虽然比在学校贵了点,但是还能够接受,但是同学觉得不太对,于是进门的时候问了一句,原来是洗剪吹各20,卧槽,当时心里就开始怀疑人生,于是剪发作罢,坚持了一个月没理发,回校的时候头发都长老长。(写着写着就心疼当时的自己) 惨烈的校招经过两天的休整,9.4号就开始在网上找相应的招聘信息了,这个时候必须先说一下校招的基本流程:
由于去的比较早,且还有没几天就过中秋节了,所以这段时间来校招的公司不是太多,但是当时并没有意识到这个问题,在经过几天的折腾之后,发现竟然一无所获,面试机会都不超过两个,说实话,当时我们两个都有点灰心甚至绝望了,也一度萌生出回校继续考研的心思(现在想想真是十分荒唐的想法)。所以校招的时候有一点,就是一定要坚定信念,不要遇到那么一两个挫折就想着要不要放弃,要抱着一种不成功便成仁的想法,否则,那段时间的情绪真的是非常低落,这样会十分影响面试发挥的。 在这次校招当中,我的直接竞争对手是华科、武大这些尖子学校里面的学生,本来是感觉压力挺大的,在一开始的一两场面试中就表现出一种强烈的自卑感,但是后来一想,在这里谁认识你啊,面试完大部分人还不都是各奔东西了,所以自卑给谁看呢,我的自卑源于认识的人比我牛,而又和我在同一个场合的情况下,既然大家都不认识我,我还有什么可自卑的,就是干啊,出错、出丑也不用担心,反正也没人知道你。抱着这样的想法,我在面试当中也就少了很多的自卑,而是抱着平等的心态来面试的,表现自然也就比之前好很多了。值得一提的是,在华硕的一场面试当中遇到一位华科的研究生,曾问他对于华硕本次面试的感觉。结果人家说什么?人家说这次面试就是来玩玩的,主要是为了积攒经验,这次面试过不了就算了,反正他们学校有华为可以保底。当时我听完之后,心中有一万只草泥马在奔腾,要知道我这种学校出身的想去华为连简历都过不了机筛的,华为保底这种想法真的是想都不敢想,华科学生们的底气可见一斑,从一方面也可以看出普通学校与重点学校的差别了。 中间有一场魅族的面试,面我的人是个胖哥,但是有一个很奇怪的点,就是我之前去面试的时候一般都是我很紧张,有时候甚至说话或者动作都会抖,但是那天面试魅族的时候因为我已经经历过了很多场面试啦,所以自然比较随意了,不是很紧张,但是面试官我有看到他拿鼠标的手在微微发抖,我就很奇怪,难道他比我还紧张?哈,这都是臆测了,不知道具体什么原因。期间面试挺顺利,各种问题都没有卡壳,也没有不会的,但是最终面试没过,这就是很诡异的地方,我每次面试过后都会总结,但是这次我实在是找不到没过的原因。 录用我的一家公司是珠海的全志科技,是做超大规模集成电路的,也就是传说中的芯片原厂,这次面试让我相信,也许,有时候找工作真的是要看缘分的。第一次面试是一个晚上,7点去酒店集合,当时在跟一个同来面试的在闲聊,过了一会儿,我看到有位同学垂头丧气地出去了,我就半开玩笑说,这肯定是被面试官怼了,希望待会我不会垂头丧气地走出去吧。然而,这个flag立的好啊,果不其然,我被怼的快要说不出话来,出去的时候心情同前一位同学,当天晚上真的是整个校招的心情最低点,之前已经跪掉不少面试了,当时还给女朋友打电话说想读研,不想再面下去了,然后女票也是安慰了许久,但是我的心情没有丝毫缓和。就这样闷闷不乐到第二天,起床的时候突然收到一条短信,告诉我面试过了,让参加第二场面试,当时就很恍惚,现在想来也许是我的态度打动了面试官,亦或是各种比赛经历与项目经历啥的?话说二面的时候我那组刷了2/3的人,也许是我华硕群面积攒了一些经验,所以才得以顺利过了面试,真是福祸相依啊。
尾声收到了现任公司的offer之后,就比较放心了,因为这家公司算是符合我的心理预期,并且公司是嵌入式同学都想进的所谓的芯片原厂,后期的面试就是真的十分放松了,期间包括一个上海的格科微电子,当时在全国也就招那么几个人,真的没想到会收到offer,但是最终因为其它各种原因,选择了现在的全志科技。至此为止,整个校招算是接近尾声,还有几天才到租房期限,这几天也陆续面过几家公司,但都没有合心意的,就这样磨磨蹭蹭到了退房那天。还记得那天下着小雨,天气逐渐转凉,回程狠心买了高铁票,几个小时之后到大郑州,心里面的一块石头也算是落了地,这将近一个月早上6点出门,晚上12点左右才回到住的地方,整个人精神紧绷,现在也可以放松一下啦。 找工作最重要的是心态问题,当你多次失败的时候就会有很大的挫败感,这个时候不可避免的想要逃避找工作这个现实,想着能不能去考研,能不能先回去,再学习一段时间再来找工作,我告诉你,不能。千万不要想着给自己留后路,你已经没有退路了,不管失败几次,要学会调整自己的心态,没有到最后一刻就要相信自己能够找到一个好的工作。还有一个就是不能够消极怠工,可能因为心情缘故,有的宣讲会因为远或者你自己觉得不太适合你就不去了,简历也不想投递,这样是不行的,不论你心情再差都不能够消极怠工,不然你很可能会错过很重要的机会。 找工作很苦,考研也很苦,选择了一个方向后就要沿着这个方向死磕下去(前提是你确定了自己想走的方向),不要想着有回头路。对于考研与工作我也不能够给出一个确切的答案,只能说是看自己的想法了,但是有一点我可以确切的给出答案,那就是考研究生一定要考一个好的学校,怎么也得是985、211(双一流大学),最差也得是你报考的专业在全国是能够排的上号的,否则我认为上研究生纯属是浪费时间,还不如去参加点培训找工作去。在我去面试的过程中碰到的本科生的比例约等于0,几乎清一色的985、211硕士研究生,由此推及其他地区的校招,大抵也是如此,可以得知找工作的压力多大,如果考研也是为了找一个好的工作的话,那最好还是考虑下上面的话。 后记这里说一下在面试过程中的个人经验积累。 面试篇
我个人认为遇到第一种面试官对你的面试过程来说是比较幸运的,因为你很容易就可以回答出他想要的回答,你不会有太大的压力。这时就主要看你的项目是否够足够吻合那个职位要求,以及你的项目涉及的知识点是否是面试官想要的,这里拼的就是项目经验。当你遇到第二种面试官(一般会是项目总监或者技术总监一类的人)的时候,我必须要同情你一下,因为你很可能会挂掉这次面试。但是从另一个方面来说,这又是比较幸运的,因为这样的面试官所在的公司我认为创新能力比较强,公司也比较有活力(一家之言,也说不定)。这里拼的就是你的知识面以及抗压能力,还有面试官对你的主观印象了。面试的时候有几个注意事项:
一般群面的步骤如下:1. 个人观点表述;2. 无领导小组讨论;3. 总结发言
笔试篇笔试会有在线笔试以及现场笔试两种类型,像嵌入式软件工程师最常考的就是 C 语言,也会有链表、二叉树、模电、数电、编程以及操作系统方面的题。这个主要就是靠平时的积累以及刷题经验,嵌入式软件工程师不需要了解过多的算法,但是数据结构与 C 语言编程是一定要掌握的。推荐 495 个 C 语言问题, 50 个 C、C++面试题这几个pdf文件,好好看看。最后,最重要的,笔试还是靠平时的积累,多动手编程,多去练习。 电子通信、嵌入式工程师校招怎样才能提高面试成功率?嵌入式工程师火哥如是说:(来源:嵌入式老鸟的职场之道)一、公司面试求职者的目的是什么 《孙子兵法》有云知己知彼,百战不殆,当然百战不殆并不等于百战百胜,而是说在知己知彼的前提之下,至少结果不会很难看,哪怕没有打胜战,也不至于损兵折将一败涂地。 所以要去面试一家公司,首先搞清楚公司面试求职者的目的。很多人说,面试不就是为了招人嘛,当然招人是肯定要招的,但不仅仅这么简单。 不管是校招社招,有一些常年好像都在招聘,但是据我了解去面试的人成功率并不高,而且被问到远超当前工作经历的很难的问题,幼小的心灵遭受打击,这到底是怎么回事呢,其实面试你的公司其目的一般是这几类:
二、如何准备简历 简历是找工作的第一关,能否写好简历直接决定是否有面试邀请。火哥的准备简历有这几点窍门,所以有着较高的面试邀请率:
基础版和岗位版的简历最好在云盘上统一管理和修改,因为你world pdf文件,在不同的电脑和U盘上拷来拷去,久而久之你会搞乱,可能也分不清哪个盘上的简历是最新的,这就可能出现投递错误简历的尴尬,所以最好用云盘管理更新最新的简历。 3. 技术词汇要通用,关键词加粗 一份简历是否会收到面试邀请,最后做决定有可能是HR也有可能是用人部门。不同公司情况不一样,不能一概而论,所以在简历中描述技术相关信息,请不要用太多私有,冷门特殊的技术词汇(比如有些小伙伴简历中写负责AL006设备的CD0x2协议的开发,不是细分专业领域,鬼知道你在开发啥)。 火哥这里有技术项目介绍的例子,里面通用的技术词汇与开发平台全部标记起来,让面试官和HR一眼就能看清楚重点。其实面试官和HR真正看简历也是挑关键词看,而不是把你的项目从头看到尾,研究你做了什么技术,所以标记出关键词,让HR或者用人部门快速知道你是否值得邀请。 ![]() 4. GitHub、技术博客等展示技术能力的链接 简历只能简单的介绍一些工作经历,但是如果面试官对你有兴趣,想更加深入了解你做了什么,这个时候,github和技术博客是非常好的技术和能力的证明。毕竟面试的时间有限,要通过1个多小时的面试了解一个人全面的能力并不现实,所以很多面试官面试前后还会翻阅你的github和博客,乃至最后比较候选人,选择困难的时候,GitHub和博客也是一个有力的参考(毕竟你不只是能完成工作就行,很多时候好公司招人名额有限,你需要与同样合适的人竞争岗位,那用什么证明你更优秀呢?)。我了解到很多有经验,有技术的工程师,由于没有github和博客来宣传自己的技术,只通过短短一个小时的面试,没有办法把自己的技术展现完全,最后面试官不是很信服,反而选择了技术不如他,但是有博客和github能证明技术的候选人。 5. 关于有用的证书 电子通信、嵌入式等靠实际技能吃饭的行业,有用的职业证书可能不多,但是如果你从事网络工程师相关的工作,思科或者华为认证还是有必要的,其它简历上需要具体咨询相关岗位有经验的老鸟。 另外基本的一点就是英语六级(CET-6)证书,这个对985 211学历背景的童鞋,CET-6应该属于标配。但是普通一二三本工科专业,据我了解,CET6过级率应该不高,平均不到20%。但是如果要面试行业内的外企,三资企业,没有CET6可能会让老板怀疑你的英语沟通能力,但对于已经毕业没有CET6证书的童鞋,补救办法就只能考雅思6.5分以上或者托福对应分数来弥补没有CET6的缺陷。 很多人说找工作看能力不看学历,普通一二三本也有优秀的人才,学历是层次是18岁高考就决定了,后面不考研就没法改变了,但是英语等级证书大学之后还是有机会考取的吧,而且机会很多,如果出身普本,又没有CET6证书,怎样证明你是普本中的优秀人才,和其它普本不一样呢?所以CET6,雅思6.5等证书也是表证明学历普通的你学习态度好的一个点。 6. 是否让猎头帮忙推荐简历 关于猎头岗位,一般猎头推荐的都是薪资较高的中高端岗位(这样猎头提成高),猎头推荐有这么几个优势:
所以在这里,火哥是建议如果有猎头推荐的岗位,尽量找猎头。但是需要注意的是,猎头推荐岗位一般是从自己和客户的利益出发,大部分推荐的是你有很大概率能面试上的岗位,而对你的职业岗位发展和这个行业的发展,以及你是否有机会挑战更好更大的平台其实是不care的,甚至可能为了自己的利益忽悠你去一个并不是很有前景的行业和公司,所以自己分析利弊,决定是否接受猎头推荐。 三、如何准备基础知识的面试
2、嵌入式工程师如何准备基础知识面试 讲了这么多基础知识面试的到底,但是到底如何准备呢?其实准备基础知识面试没有什么捷径,没有太多投机取巧的方法,只能老老实实针对性的花时间看专业书籍和文章。不要指望完全靠工作经项目的经验来学习基础知识,这就像职业球员一样,不要指望联赛,常规赛的比赛经验来代替平时的速度,力量,耐力训练一样。工作(比赛)虽然确实有很多实践性,经验性的东西不可能在书本上学到,但是工作(比赛)并不能代替平时的基础知识基本功训练。同样,运动员转会的时候,也会有耐力,速度等基本功测试,就如同工程师跳槽的工程师有基础知识摸底面试。工程师没有平常的基本功训练,知识很容易遗忘和脱节,就像运动员不注重平时训练,身体状态就会随着年龄下滑明显(想想C罗34岁了还要有健身房专门的力量训练)。 那么基础知识训练该看些什么呢?就嵌入式领域而言,火哥推荐下面这基本经典: 算法:刷完 算法(第四版) [book.douban.com/subject] 上面的例题,有答案的练习题,这样基本能应付大部分算法面试 数据结构: 数据结构与算法分析 [book.douban.com/subject] 计算机必备知识,没啥好说的,老老实实学完。 Linux内核:入门级-- Linux内核设计与实现(第三版) [book.douban.com/subject], 进阶级-- 深入Linux内核架构 [book.douban.com/subject], Linux内核的学习时间花费可能比较长,也有一定难度,只能说任重道远,建议下一份对应版本的内核源码,慢慢啃,花个半年一年总能啃完的。理解内核各种子系统和机制,对嵌入式Linux驱动开发也是大有好处。 编程规范: 代码大全(第二版) [book.douban.com/subject], 学习一些编程规范,增加和面试官聊天的谈资。 其它:程序员的自我修养[book.douban.com/subject], 讲一些编译,链接的知识,编程珠玑 [book.douban.com/subject] 一些面试的技巧性算法速成。 3. 基础知识笔试面试注意点 考虑到很多公司会考察纸上写程序,所以带上自动铅笔和橡皮擦很重要,这能让你纸上写代码的时候便于修改。另外,不适应纸上写程序的,面试前最好找2道题在纸上真实写写,感觉和敲键盘完全不一样,尤其是用墨笔写,更加容易涂涂改改。 四、面试前要和hr确认的信息 面试之前,建议加添加hr微信,问清楚面试的具体地点,以及面试多少轮,流程是怎么样的,大概需要多少时间,这样便于你规划交通和请假的时间(考虑到在职面试的情况)。另外可以了解公司的基本制度,比如正常情况下几点上下班,一周几天,有没有大小周,是否需要打卡,是否弹性,五险一金的缴纳标准(不少民营企业是以当地最低工资标准缴),医保是不是第一档(注意深圳一档,二档医保的区别)。你可以通过后面这些信息,判断公司的制度对你是否可以接受,值不值得去一趟。 五、如何通过一些技巧在面试中多多展示自己的长处 很多工程师都有这样的经历,在平时工作中做了很多事情,解决了不少难题,但是却在面试中不知道如何像面试官表达这些东西,或者漏掉了你的很多优秀的闪光点,吃了亏。 其实火哥也在以前的面试中面临同样的难题,明明有解决问题的能力,明明知道很多东西,但是在面试官面前都在把优点隐藏,把缺点放大。 那么之后火哥在面试中做了哪些改进来提高offer率呢? 1. 准备项目PPT介绍系统原理和框架 以前有的小伙伴说,面试把平时的作品带过去,到时面试爱怎么吹就怎么吹。 当然这是不现实的,很多做过的东西是前公司的带不出来,加上面试公司的环境不一定允许你现场展示作品,这个想法不太现实。 不过,带上一个台ipad平板电脑或者小型的笔记本电脑,把你平时做过的主要项目的系统模块框架做成PPT,在面试的时候给面试官讲解展示,我觉得是一个很重要的技巧。 因为简历只是简单介绍你的项目经历,面试官不大可能从简历上一眼就看明白你所做的项目的原理和框架。所以你要准备PPT资料是对简历上项目信息的一个补充,让面试官看懂你做的项目。尽管现代大企业,项目分工细化,作为基层开发工程师,不太可能整个项目都是你自己独立设计和实现的,总有你不懂的模块,但是在面试准备PPT中,你还是要把整个项目的系统框架画出来,让面试官能够了解整个项目是怎么样的,你在里面做了什么,尽管有些模块你可能没有参与,不懂,可以在聊天的时候对面试官说明,但是根据心理学的一些理论(应该是《影响力》还是《思考,快与慢》里面的观点,有兴趣可以读读,增加个人软实力)人脑一般注重的是信息的完整性,而不是一些细节末枝的地方,所以能完整的给出项目系统框图,让面试官对你做的整个项目能够有所了解,即使你有不懂的模块,但也能给面试官带来好感,让他有问题可以交流,而不是制造冷场。 下面是火哥面试时候带的PPT项目和系统软件架构描述的例子: ![]() ![]() 在这里大家要意识到一点,图片所携带的信息量远比文字来得大,在PPT里尽量少写文字,多画图,用框架图描述你的项目,面试官可能也不会有耐心仔细看你的项目描述文字,如果没有PPT所带的框图,而是直接带着简历去面试,面试官对于自己不熟悉的项目和词汇也会听得云里雾里,不知所云,最后不知道如何提问,尬聊收场。火哥也是在多次面试深刻领悟到这一点,发现纯语言上的技术交流和沟通,会有许多误解和信息不对称的地方,远不如图片携带的信息量大,所以自己制作项目介绍的PPT,通过PPT引导面试官熟悉你的项目,和你沟通交流,是技术面试里面非常重要的一个环节。 2. 面试前自我排练,培养气场 火哥在面试完和hr总结面试过程的时候,有些hr夸火哥面试气场很好(这里不要脸一下)。其实这个和火哥以前从小参加各种演讲,辩论比赛,以及大学之后参加的科研论坛和项目答辩有关系。在技术面试中,表现出一种自信和镇定是非常重要的,哪怕你有些问题你确实不懂,但是你的镇定,不慌张,有条有理的气场能给面试官一种靠谱感,让他信任你。当然如果你从小缺乏这样锻炼的机会,那也不要紧,临阵磨枪,在你做好项目的ppt之后,对着ppt把你的项目从头到尾大声讲一遍,一定要讲出来,实地演练,然后录音,回过头来听录音,自己感觉讲的有些什么不完美的地方,面试的时候还可以修正。其实每个人,内心的思路、想法和灵感远比他口头表达出来的多,如果只思考而不录音讲出来,锻炼你的表达,你永远不知道你表达的东西和你想到的东西所体现的信息差在哪里。 3. 刻意准备2-3个平时解决的复杂问题的案例 能不能介绍一下你平时遇到的一个比较印象深刻的问题,以及你的解决思路。相信大家面试都遇到过这样的问题,相对于这个问题,其实工作时间越久的童鞋反而越不好答,因为解决的问题太多,时间太久的东西可能忘记,一般最近的问题才容易回想,一时半会选择困难不知道讲哪个问题。 其实这个情况,火哥建议大家做好预案,用百度云盘或者印象笔记,写下你处理过的3个很有代表性的问题,每次面试之前稍微看一下,每次遇到这个问题就拿出准备好的模板应答(为什么要准备3个,因为怕面试官有些方向不熟,聊不下去,让你换一个问题)。 4. 学会和面试官找共同技术话题,提供补充信息,促进面试官多了解你 电子通信,嵌入式相关领域,业务方向很多,面试官的知识不可能面面俱到,做网络的面试官不懂音视频解码,做mcu的面试官不懂协处理器并行加速都是很有可能的。然而现代社会,行业变迁太快,你不可能限定自己只在一个行业里面找工作,比如做手机wifi就只做一辈子手机wifi,一辈子都在手机行业找工作,不考虑IPC网络摄像头行业,不考虑路由器行业,万一手机行业需求不足,大规模裁员呢,你总得想办法在原来技术可以用得上的新行业找工作。 这样,和不同业务背景的面试官交流,找话题聊下去就是一个非常值得提升的软实力。在和面试官交流的时候,切记不要面试官问一句,你就只答一句,这样如果面试官没有题库的话,过2-3轮基本就会尬聊结束的状态。或者面试官无奈只能让你写算法了。 正确的沟通方式是,面试官提问的问题,哪怕不懂,你也得多回答一些东西,牵涉一些主题相关的技能点,让面试官多了解你的知识技能,引导面试官朝着你懂的方向提问。 举个栗子,我没有语音相关项目经历,当面试官问我语音相关的问题,你懂吗?我的回答不是两个——不懂,而是说,虽然没有做过语音相关的模块,但是我之前写过AAC音频压缩流和和h264视频压缩流做MP4 muxer封装打包,以及音视频播放同步相关的程序,这样引导面试官像我提问音视频同步的问题,顺利回答出以音频为基准,用pts时间戳做同步。同时也是在暗示面试官,虽然我没做过语音相关的东西,但是对这方面还是有所了解,有一定基础,能马上学习适应。 另外,在介绍自己项目的时候记得延伸理论知识点,让面试官有提问的空间,比如我在介绍在前公司用buildroot做自动化系统构建脚本的时候,不是一句话介绍说我用buildroot搭建了系统自动构建系统就完事了,而是接着补充道,这里面我还做了工具链升级,用硬浮点替换软浮点工具链,还对某些现有的方案做了升级,比如MIPS方案256MB DDR内存升级到512MB DDR内存,并且做了512MB大内存的压力测试,这样通过引申更多的技术关键词,引导面试官提问我ARM硬浮点的基本工作原理,以及如何测速512MB DDR系统的性能等一系列新问题,然后通过这些新问题把自己积累的理论知识展现出来。 要知道你做得应用业务逻辑代码其实都不好提问,大部分情况下都是问你用了哪些库的哪些功能就没了,反而牵涉到内核机制,CPU机制等基本工作原理的东西才好提问,也更好展现技术的深度。所以你要学会如何引导面试官像原理性问题上提问,同时你也要打扎实自己的技术基本功。 那么具体流程又是如何的?《华为、中兴、阿里...硬件工程师的24家公司面试经历》这位大佬面试了24家名企。不够过瘾?听这位“自学成才”的大佬细细道来: 背景: 我之前工作过两家公司,一家做智能卡芯片的,一家做蓝牙产品,基本是应用层的内容。可惜嵌入式开发会越来越向底层发展,没做过底层协议开发是我的一大软肋。 自学过TCP/IP,linux内核(0.11版) 使用过python 公司A 一面 项目模式(产品/模块) 蓝牙芯片在产品中的作用(MCU,控制外部DSP或其他芯片;或只作为蓝牙模块) 蓝牙软件成品模式(固件模式,通过SPI烧录) 蓝牙协议栈的架构和分层 蓝牙协议栈与网络协议栈(4层架构或7层架构)的对比 蓝牙芯片(是否基于Linux或其他常用架构) 蓝牙软件的软件架构(event-driven类型的,而不是单片机那种大while循环的) 函数指针与指针函数分别是什么?用简单的代码表示出来 Linux内核的版本;操作系统任务切换的关键是什么(保存上个任务的上下文,加载下个任务的上下文) 二面 说说经历过的最难的项目 分享 这个其实是我同学推荐的,虽然面试完全没有准备(因为个人原因还未开始投简历),但面试过程还算基本顺利。可惜该公司有个性格测试,没过 公司B 自我介绍 项目模式(产品/模块) 蓝牙芯片在产品中的作用(MCU,控制外部DSP或其他芯片;或只作为蓝牙模块) 蓝牙协议栈与TCP/IP模型的对比;描述一下TCP/IP模型(协议)的主要内容;蓝牙协议的细节 wifi与蓝牙的对比 蓝牙通信速率(面试时没答上来,基本没关注过……后来了解到现在最大24Mbps,一般也就几十k) python的项目经历 I2C的通信模式(看来是答错了,我以为有个校验位(UART有校验位,是10位数据),结果每次传输是8bit,然后1bit应答),通信速率,工作时的挂载情况(最多5,6个设备) USB的协议架构 git的使用 makefile的了解(编译的经过) Linux内核的版本(推荐我看2.4版本……) Linux驱动开发 socket 分享 总结了之前的经验,专门看了一些蓝牙底层协议和网络四层协议的对比,但是忽略了I2C,之前做I2C也不是做I2C的底层协议,主要是应用,抓取过一些I2C的通信数据,UART也是同样的,结果我在数据格式上没分清UART和I2C。USB协议也不太了解,只是在原来的公司做过一些基本是应用层的代码改动。 公司C 部门1 自我介绍 手机开发 手机架构分层 C开发平台 是否做过Linux驱动开发 部门2: 一面 自我介绍 最有挑战的项目 职业发展方向(我表示我想做Linux驱动开发或系统开发,不过面试官说他们的项目里并没有分的很详细) 我问的问题:项目的产品 二面 C程序,判断一个对称数 删除双链表中的一个已知节点p 好的代码应该有的特点 分享 部门1是做芯片开发的,可惜我完全没接触过。所以问了几个问题后感觉不合适,就结束了。 公司D 单片机经验(51或linux) 软件架构;个人负责的部分 我问的问题:公司的主控芯片和产品的关系 分享 这个公司是看到我的蓝牙经验,考虑他们的产品中可能会用到蓝牙才面试我的,但我做的不是蓝牙底层协议,他们了解到这个后就没怎么再问了 公司E 一面 好的编程习惯(结合C语言的测试题详细说明,第一个点出C变量的声明和初始化的位置应该在一起) 第一份工作的内容,负责的部分,拿到一个文档后如何开发/测试 第二份工作中影响最大的项目,为什么要实现蓝牙设备之间的连接?为什么不从主设备直接向2个蓝牙设备播放音乐? 这么多年编程有什么最宝贵的编程经验? 二面 影响最大的项目 分享 一面有点像压力测试,比如问题“为什么要实现蓝牙设备之间的连接?为什么不从主设备直接向2个蓝牙设备播放音乐?”产品设计并不是我做的,至于为什么我也不清楚。“为什么不从主设备直接向2个蓝牙设备播放音乐?”这是因为目前的任何一款手机还不支持同时向2个蓝牙设备播放音乐。看来大家都知道蓝牙,但是都没用过啊,如果面试官用过多个蓝牙设备,就不会问这种问题了。 公司F volatile的作用(没答上来) 如何写一个无限循环? 如何跳出无限循环?(面试官说可以使用goto来跳出循环) 为什么一般C程序中不使用goto(面试官提示:如果从一个函数中使用goto到函数外,会有什么影响?) UART,通信的细节:UART的数据格式?如何保证在侦听UART时不会一直判断接收到0? 2种CPU架构(不知道,面试官说是冯诺伊曼架构和哈佛架构,还提了一句图灵机……) RISC和CISC的区别(没回答上来,面试官说是与指令长度有关。我说我只了解比如汇编中RET长度可能只有2字节,而jmp指令可能是4字节,这样汇编转换成机器码后,可能会做4字节对齐,如果一段指令刚好差2个字节,就会补2字节的0。所以有些机器码反汇编后就会出错,是因为刚好补0造成的。) 寄存器长度变小,寻址范围会变小么?(我答错了。应该是不会,考虑CPU上的地址总线和数据总线是分开的) 一个简单的C函数编程,如何把一个变量中的某一比特取反? 在软件上,有中断号,中断向量表,中断函数,3者的关系是什么?(学过linux 0.11版的同学们肯定都知道答案) 发生中断,芯片会做什么?(我回答的软件部分的东西:影响堆栈,任务会切换到内核态并执行中断。不清楚具体硬件上会做什么,印象里CPU只有中断标志位会被置位。其他芯片不太了解) 芯片如何降低功耗(sleep部分模块,具体的睡眠操作:断电还是取消时钟) 如何唤醒已经睡眠的模块? 时钟变慢的影响?(不太懂芯片……) 英文对话 我问的问题:项目的工作方向(了解到是做一个芯片内部的模块验证工作) 分享 这家公司是做芯片的,所以问的东西有点偏底层,微电子方向。虽然感觉面试官超有亲和力,但我还是想做软件开发方面的,所以有点对不住这位面试官。 总结 嵌入式开发还是相当繁杂的。从芯片级开发到嵌入式产品的开发,或许我投的还是有些广,但是有一点大家一定要知道,把自己写在简历上的内容掌握,无论别人怎么问都不会出错,这样才能正确体现自己的实力 这里设计的技术难点还有一个FatFs文件系统的移植。文件系统是为了明确磁盘或分区上的文件的方法和数据结构。说起文件系统必须相对于存储设备才有意义。这里是用来管理Sd卡上面的文件。 文件系统的层次叫驱动程序要高一层,为什么这么说呢,上一张图你就明白了: ![]() 程序员需要给文件系统提供三个对底层硬件的操作函数,我们才能利用文件系统对硬盘(disk)上面的设备进行管理和使用。 这三个函数分别是:sd_read();sd_write();RTC();他们分别是SD读扇区,SD卡写扇区,系统时钟。(可能还需要提供更多的函数接口,但是SD卡读写扇区是必须要有的)。 文件系统接受了这三个资源便可以对Sd卡进行管理了。 应用程序就是实现了吧SD卡上面的MP3文件或者wma文件通过文件系统提供的函数接口找出来,发送到数据流设备上,也就是解码芯片上,解码流程我们不需要知道,这是芯片内部集成的,无需人工参与。输出到音频输出设备就行了。 说到这个里,我们的MP3就可以运行了——把程序下到单片机上面,上电,应用程序就开启了!听歌吧~~~ |