我的背景是大约有6,7年工作经验,找embedded/firmware/driver Engineer。所列经验教训有所局限,所以只给同行凑合着看。
1。 除非特别牛的人,如果好久没有面试,第一个面试很容易fail掉,所以先找两个不想去的练练手。
2。工作中很多东西不系统,所以面试前要先看书,最好到网上收一下考古题,有些题几乎家家都问。我主要看了3方面的书:embedded real time system;C语言;TCP/IP的protocol stack,记记每一层的header内容很有帮助,MAC层是我的目前的工作,熟得不得了。
3。简历不要乱写工作要求的东西,即使写也写成略懂。我第一个面试fail的原因就是写了他们要求的,但我只是看看书的东西,结果被一个老印揪着问了个底朝天,自然问倒了。
4。简历中把自己的强项突出出来,比如我虽然属于software类,但有一阵为了debug,老看hardware的code,所以就比闷嘴葫芦debug hardware要有些优势,大概也是一些大公司主动找过来的原因。
5。面试时如果问到不懂得问题,可以试着去猜,但要告诉对方没有真正做过。或者尽量往自己会的地方扯。
6。系统经验很重要,平时埋头苦干,面试时反倒要好好总结一下。可以把整个系统给对方讲的滴水不漏,哪怕很多部分不是你做的,对方也比较impressive。
7。基本的skill也一定要强,我们这行就是coding,语言上很容易考到例如:struct 里面的元素都占多少memory,怎么排列的,怎样合并;link list怎样写的;很多bit操作;share memory的问题, ring buffer,static,volatile等等。然后大公司很多当场coding,习惯了就好了。
8。像我们embedded很容易问一些关键点:semophore,mutex,spinlock的不同;memory的管理;dead lock,priority inversion是怎样产生的,如何解决;interrupt近来怎么处理,再入会怎么样?code 是怎样load到系统的?系统是怎样bring up的等等。其实很多东西我原来也不清楚,趁这个机会倒搞了个门清。所以interview还是蛮锻炼人的。
9。network protocol层面,其实做过一层,其他就极好理解了,protocal的重点在header,如果搞清每一个field是干啥的,基本上就没问题了。
10。想办法让人知道你做过很具体的产品,而不是只读读书,做过的东西一定要门清,问不倒。让人觉得即使换一个产品,你一样会做得好。
面试的非技术问题:
1。如果是某个大公司内部的recruitor找你,要认真对待,通常是他们正需要人;如果是第三方recruitor找你,不要太当回事,十有八九他们不过是拿了个不存在的职位吊你罢了,只有他能给你拿到对方公司的电话面试机会才算数。
2。面试完,礼貌的谢谢就行了,不太用follow up。Engineer工作基本就是小毛驴,他们觉得你能干,自然会主动找来,如果在他们心目中你已经fail了,你再follow up,过后会觉得自己自作多情。
3。如果你面试感觉不错,下面就要略微矜持一下,被人家吊着问了一天,这个时候该我们扬眉吐气了。不要特别主动地给他们打电话催,等他们来找你,如果你还有其他offer,可以暗示一下,公司之间也面对竞争。就像我现在签的这家公司,我去面试时,他们就问有没其他面试,我说刚到Apple和Csico面试完,但你们公司和我的背景最match,面试完,他们满意,2-3个小时后就说会给offer。我之后也没催他们,都是等着他们主动打电话过来。这样做,对后面和consultant公司谈价码也比较有优势。同时我给Cisco写email说,另外一家公司已经有offer,结果他们很郑重其事的讲,他们对我评价不错,但大公司慢,希望我能等他们的结果,巴拉,巴拉。所以我们被挑,也要让他们偿偿被挑的滋味。
4。总而言之,面试完了,走人,继续下一家。不出offer,我才懒得和你多讲一句呢,因为公司也一样,他不要你,好多时候连个音都没了。
5。一家不成,也可能不match,也可能没准备好,不要灰心,总结经验,再接再厉,最后总会找到合适的。
我知道在找到工作之前很stressful,希望我的一点经验教训对大家有点帮助,祝大家好运!