Apple芯片组实习经验贴【硬件】

36741
53
[align="left"][Apple芯片组(CPU组)实习面经][/align]
[align="left"]楼主在文章一开始,先表示这是一篇不是特别technical的文章,被问及的题目会被提及,但是不是一篇简明的题目列表。因为通过这学期从9月初开始,一直到现在还没有结束的面试经验里,楼主体会到重要的是心态,一切都是由心态变化而达成的质变。[/align]
[align="left"]楼主从9月campus career fair开始面试,投简历的公司包括APPLE,NVIDIA,TEXAS INSTRUMENT, MICROSOFT和YELP(因为有一些数据库的经验)。找工作的方向是asic/digital design/verification engineer,yelp是数据库方向软件工程师.最后拿到面试的有4家公司,微软实在是被我大四第一次的表现毁了三观,从此再也不理我了。其中这里面多么一波三折,绝对的一言难尽。关于NVIDIA怎么过了campus screening的quiz,怎么拿了两轮positive因为budget原因被VP拒签offer,花了一个月配进另外一组,就是another story了。TI和Yelp的故事也可以再讲,这里面就细说一下苹果的经历吧。[/align]
[align="left"]注意到苹果可能会有希望,全因为假期的时候,有一个好友被组里phdrefer面了第一轮product safety engineer。当时他面完第一轮就木有然后了,可是我注意到其实这个职位和systemtest engineer非常适合我的背景。网投过苹果的孩纸都知道苹果网投跟没投一样,所以我一直在想办法,怎样能确保自己拿到面试。然后我处心积虑的过程在加州就开始了(当时在我大天朝华为的硅谷分部实习)。大家都说加州地理位置好,人脉广,我三个月没开发完全,但是也利用了一些。首先是很宅的楼主,在3个月的暑假开了8000mile,到处乱跑,到处和硅谷工程师混脸熟,加linkedin。接着就是和被我harass了3年的斯坦福好友搅基,跑去参加人家的师兄师姐求职经验座谈会云云。通过这些活动,见一些前辈和同龄人,将来混内推,也学到了一些经验。其中斯坦福一个在埃森哲的学姐作为interviewer,给了很多很好的建议。比如面试时你说话的方式,你简历怎么让我觉得impressive等等。[/align]
[align="left"]假期做好了一些心里的规划后就是实践了。Campus interview的时候,我第一天去排了NV, TI, Yelp 和 微软,第二天就在苹果那里排了好几个小时,和CPU组的recruiter简短地聊了下,当场拿下了campus interview。很多人问我怎么在短短几分钟内impress一个站了一天,烦得要死的recruiter。其实所有你认为不利的因素都要反被你利用。你知道这个recruiter现在看任何一份简历都眼花,听你解释你复杂的research,project都想死,你为什么要说。即使要说,你为什么要说的让对方理解不了,记不住。我排队的时候,站在我前面的筒子们犯了几个不可原谅的typical错误。有一个被问及什么是你的dream job。这哥们直接看了一眼recruitername tag说:ah, design cpu? 然后直接被recruiter吐槽,you should go to INTEL. 另外一个直接被recruiter表示简历太难看,不简明扼要,改了再来。剩下的每个人都上前去说,这是我的背景,我的GPA,我多么多么优秀,你有没有什么职位给我。楼主在一年前,跟前面这些筒子们一模一样。我看多了大家的经验分享,自己认真地思考了以后,我感觉很多人真就输在这第一步。很多朋友问我,你就去careerfair跟人家握手,你准备个p。其实你真的需要准备,你需要想好一套措辞严谨,表达流畅的自我介绍和背景介绍,以及你为什么来这家公司,以及你想要什么职位。楼主猪猪一般地干过很多令人不齿的事情,比如不知道NI是干嘛的,被recruiter当场鄙视,从此再也不敢投NI。[/align]

[align="left"]当终于轮到我和苹果recruiter聊天时,楼主递了简历,等到他示意我tell me a little bit about yourself时,介绍了自己的背景,经验,迅速告诉他我从7月就想要productsafety engineer or system test engineer的职位,我要这个职位的原因有两重。一是本人是脑残果粉,进一个公司先相信这个公司的产品,blablabla说了一堆crap,列了一遍我i系列产品,明显看到recruiter表情变了!那表情基本就是为什么放弃治疗。接着结合自身背景,谈到这两个职位对我学业的重要性,以及我的背景会帮助苹果。Recruiter此时明显已经把我和前面那些不知道自己要干嘛,还要他配职位的筒子们分开了。他马上问的问题就是,你既然这么想要这俩职位,为什么不在7月投简历。我说我本科网投过你们,但是我知道网投会石沉大海,所以我2个月处心积虑就在等今天。他下一个问题直接是什么是combinational/sequential circuit,什么是synthesis,什么是verification,都很基础,就是看你不能发愣。就在我还在细分pre-silicon verification和post-silicon validation的时候,他直接表示:tellme more in tomorrow's interview. 当时真的很激动,看到前面一片筒子被呵呵了,拿到campus interview感觉很珍惜。[/align]

[align="left"]当晚23:00之后,苹果campus HR给我邮件confirm了第二天早上9:00的面试。当晚直接基本没睡,把简历上得project,相关可能被问的问题都想了一遍,就去面试了。一见到recruiter,就是昨天cpu组的那哥们。他上来就表示我已经忘了你是谁,今天你从零开始impress我。他扫了一眼我简历,看了GPA直接就问了一句话,当场把我弄得巨紧张:verilog or VHDL,pick one.我当时准备的一堆crap都被噎了回去,直接说了verilog.然后就是半小时的白板写code。都很基础,一边写code一边问blocking,non-blocking等这些很基础的问题,接着是手动synthesis成硬件。还非常细致地问了cache coherency,为什么要注意这个问题,给你一个dual-core system,选一种protocol,解释几个重要的transition,比如write miss, read miss, write to shared state.在一个snoop based system里面,master CPU是怎么在protocol FSM上transit的,其他CPU是怎么transit的。一定要非常清楚。我当时没想到他问这么细,所以一直在犯错误,但是他们其实看你反应,你修得快,你反应快,其实还是positive。半小时过后,这哥们一直擦黑板,看都不看我,就说了一句you did well,我当时就觉得我完蛋了,请允许我做一个悲伤的表情。[/align]

[align="left"]没想到一星期之内,我竟然收到了positive feedback,面试被proceed了。这次联系后,苹果消失了好久好久,就在我完全不抱希望的时候,Texas的CPU组给了面试。当时我在面的三个公司都在Texas,没一个回加州的,我郁闷得要死。CPU组面试完全是disaster,面试的哥们一上来就及其不友好,一直在叨叨,我可能丢了你的简历,我没时间准备,我半小时以后有个会,blablabla,我在这边怎么ice breaker都没用。不论我如何回答,他总能找到一个很rude的方式来refute whatever I said。他问的问题涉及verification,dynamic simulation, formal verification, architecture, out-of-order scheduling,register renaming, data hazard (三种要非常细致地说出来),cache coherency (how many protocols you are familiar with),MESI protocol 为什么要有E这个stage, TLB, virtual memory, C++, data structure。还剩5分钟的时候,我当场给他写了一个merge sort,他要求code,not description。还进行了complexity estimation。反正就是有点tookme by surprise,而且气氛被他弄得巨紧张。最后还剩2分钟的时候,他说,问我一个我可以在两分钟内回答的问题。当时是keynote第二天,我就说你评价一下新的64位系统?在业界的地位,将来发展中你看好它么?然后他非常令我吃惊地说:Iwould rather not answer. 然后就是uncomfortable silence。我说是因为confidential么? 他说no, I have no comment, that’s it.那一刹那,我真的什么都不想问了。当时我就知道我的苹果面试可以结束了。不出意外,当晚我就被拒了。当晚楼主一夜没睡着,觉得巨窝火,无耻地打了一夜植物大战僵尸2。[/align]

[align="left"]从此,我就开始专心面别的公司,专心干自己的事情了。又隔了一段时间,苹果突然冒出来说加州芯片组决定继续面试,formal verification intern!当时我就觉得机会来了!因为扫一遍职位描述,exactly what Ido。我简历专门挑出来留下的材料覆盖了全部要求。被拒过一次就格外珍惜。芯片组面试take两星期多一点,做决定只用了一下午。两次面试都非常smooth,面试官都很友好。第一次基本是skillbased interview,我们做什么,你喜欢不喜欢。你会什么,你做过什么,你research什么。一定要条理清晰,简明扼要地介绍。而且随时expect digging。比如我说我有formalverification经验,他马上就会问什么叫formal verification,优点是什么,缺点是什么。这些可能你都知道,但是一两句话内,解释到recruiter满意,楼主这种战五渣没提前想过肯定跪。面试中因为很欢乐,他还推荐了我一本书,”TheArt of Verification with System Verilog Assertions”,楼主挂了电话就买了。中途他一直问我formal verification那个project的细节,我就说我去给你查一下report。他直接说给我发过来。我觉得这个report很加分。大家在学校写report时,一定不要敷衍了事,这个反应了你的处事态度,你的认真程度。第一场面完,他当场给了positive,还给了后续面试的建议!第二场面试,我按照他的建议,把formal verification project准备地巨充分。第二个recruiter不出所料把这个project问到了底,然后又是cache coherency的细节,不过这次完全准备好了。他每问一个问题,我说一个答案,他都问一句areyou sure。他一问我就会把细节全分析一遍,给他一个confirm。然后每次都是评价一句excellent。我觉得这个挺重要的,他看你的自信和反应速度,以及你在pressure之下怎么反应。后来他问多了areyou sure,我就老笑场,表示你为什么一直吓我,他说我看你真懂假懂。这两场面试中,有一个小细节我认为帮我拿下了两个人的印象分,那就是我一个好习惯:stockyour interviewer on linkedin without leaving a footprint.现在我们全组都被我培养了这个好习惯。HR一般会给你组,first name或者全名。这时你只需要google这个名字+公司,你基本就能找着这人。不行的话,加地点,加职位。你面verification engineer,你的recruiter基本100%也是同样的职位,不过是senior 罢了。找到recruiter以后,分析他的背景,他的强项,他可能会问的问题。比如第一个recruiter是UT-austin毕业的,当过DAC committee,发过一篇关于automatic assertion generation的文章老被我搜到,我就觉得这人会很research,果不其然,问了好久我的research。第二个recruiter来苹果之前,在INTEL干了11年,经验主要覆盖computer architecture, formal verification这一领域。果不其然,面试的时候全是我cache coherency formal verification的项目。这个黄金准则,在本学期,在楼主身上,适用于任何一个公司,任何一个recruiter。我简历上放着analog circuit project,面了两个月,没有任何一个人问过,因为面我的人都没有analog background。还有一个tip就是,面你的人,你运气好,他看了一遍你简历,你运气不好,他基本就是闭着眼随便出题。你如果明显能感觉recruiter没看你简历,你要take initiative。主动表示哥们儿,今儿天儿挺好,你中午哪儿吃去。我给你做个自我介绍吧。你能采取主动,lead整场interview,给他一个台阶下,对方一般会比较开心。楼主比起众多大神,渣得可以,就一个优点敢到处拿出来显摆,就是性格巨好(捂脸)。这个优点其实挺重要,面试中想办法展示出来,言谈话语让人家觉得你热情大方,跟你工作是absolute pleasure。拿到offer时,一封小邮件连带HR一起感谢了,大家都会很喜欢你。没拿offer时,也回一封,谢谢你废了这么多努力,希望有新职位记着我。我不知道这些多管用,肯定不减分。离开华为时,VPAlan Gatherer直接打电话给我老板,表示我是pleasant kid,supervisor们都发邮件表示你性格好pleasant。这次还没有进苹果,HR和未来两位同事已经表示super happy totalk to you, like your personality。Recruiters 也是人,大家轻松愉快一点么~[/align]

[align="left"]通过这些经验sharing,我只是想说,你拿不拿offer,看运气,看时机,看how much dedication you take。更重要的一点,看你想不想要。你想要这个offer,你总能想尽办法make it work。我本学期再次开始面试之前,再也不会像本科一样,不知道这个公司干嘛的,不知道自己想要什么职位。再也不会拿着电话,看着简历,自己都不知道自己当时干了神马。再也不会跟人家说我忘了,我不会。再也不会明明会一个问题,因为没有练习过,答得磕磕巴巴,跟不会一样。再也不会你让我做一个clock divider,我会divided by 2, 就不会4,会even不会odd number division。我说了我做过computer architecture的项目,打比方你从RISC,CISC问到Princeton architecture, Harvard architecture,in-order-processor, out-of-order processing, 如何处理各种hazard我都提前anticipate好了。准备面试绝不是看你简历,能解释你project即可就可以了。你告诉别人你会一个领域,那相关的题你要记录,要积累,今天会一道,明天会一道,不能忘。软件可以刷careercup, cracking the coding interview,硬件我还没发现这么好的网站。glassdoor有一些经验但是完全不充分,所以全靠你自己总结。总结出来自己说几遍,你觉得你能让人听懂么?你说话调理清晰么?这都非常重要。[/align]
[align="left"]楼主一年前是战斗力为负的渣渣,上学期一个面试都没拿,GPA发指,华为是老板直接塞进去的。这篇文章鼓励所有不放弃自己的战零渣筒子们,平和心态,慢慢积累,常常反思,多交朋友。你的心态改变了,慢慢就出现了质变:)先变战五渣,对吧。[/align][align="left"]{:4_100:}[/align]
  • 106
53条回复