学渣的逆袭:冲杀Amazon群面,拿到Offer

发表于 讨论求助 2020-11-27 07:58:16

(点击上方关注九章算法,获取最新IT求职干货!)


求职经历

楼主的经历比较奇葩,求职的整个过程大概分为三个阶段,简单介绍一下希望鼓励后面找工作的同学,特别是有相似经历的筒子们。


第一阶段,楼主来美帝的时候原本是东部一所野鸡大学CS系的PhD,2015年的三月一夜之间离开了导师,中间经历了两个月没有导师的日子,有些迷茫:本来就没上路的科研暂时没头绪、每周只需要上几门课。当时压根没有找工作、找实习的概念,每天都在从跟前任导师撕逼的经历中努力自我修复。五月底的时候,一狠心、一咬牙、一跺脚,转了硕士。这时候身边的朋友们都已经找到了实习甚至开始实习。楼主才开始投简历,最后踩着CPT申请的死线找到了一个纽约的小公司的软件开发暑期实习。因为纽约房租太贵,楼主整个暑假待在学校里远程工作。实习的后半段时间几乎没什么事情,每天看看电影、刷刷题、学学Javascript、复习复习算法和数据结构。当时只是隐约觉得需要通过刷题来找工作。


第二阶段,2015年秋季学期,楼主还有十来个学分没有修完。为了尽快修完学分并在16年春季学期毕业,楼主不得不每天花费大量的时间写作业、复习考试。这时候原本是找工作的黄金时期,但楼主一心觉得课业要紧,找工作就比较被动。学校的Career Fair去了,也拿到了一些面试。Google、TripAdvisor、Cisco之类的,但由于准备仓促、面试状态很消极,为了写作业或者考试能拖则拖、最后悲剧了很多,还有一些莫名其妙没有了下文。秋季学期到期末的时候,身边的朋友们都找到了比较不错的工作,当时忽然有了紧迫感。感恩节前后楼主的课业差不多完成,于是开始大量地海投简历,同时拿到了几所local的OA。楼主一边做OA一边约了一些电面。圣诞节前后,楼主看到有人帮推亚麻,于是发了简历并收到了内推确认信。反正一直到年底都没有找到工作。


第三阶段,2016年一月新年一过,迎来了第一大波面试高峰。当时每周都有小公司的onsite,同时因为寒假,楼主没有课业压力于是只要有面试就接,每天都在面试、面试、OA、OA……在这个过程中也见识了各种各样的小公司。


比如去一个local公司onsite的时候,有一轮面试官问我最长回文串怎么写,我写出来了O(n)的最优解法,五个面试官都表示看不懂并说你只要写出来蛮力就可以了,最后这家公司竟然把我挂了。


再比如一个西部的小公司因为太穷,onsite直接通过skype面试,面了四个半小时,还有一位面试官口吃,面完以后我觉得我都快瘫了。


还有一家东部的公司特别靠谱,人力很专业,去onsite的时候吃住都特别舒服酒店里还有大游泳池。


比较著名的西部的一个公司,pair programming直接问了一个hard题,然后挂了。


西部另外一所大公司,楼主OA做得很好,但是OA提交后几天莫名其妙突然接到电话,一个不懂技术的HR问了我几个类似于log 1000等于多少之类的问题然后把我给挂了……

集中面试的过程大概只有寒假里的三个礼拜,一月底开学的第一天,楼主就收到了第一个比较不错的offer,在东部的一个云服务的软件公司。这家公司据说很清闲,绿卡政策也很好,然后人力、经理、公司的领导一周打来好几个电话嘘寒问暖,听说我在面亚麻还给我涨了工资。楼主从小家境贫寒没人对我这么好过,那个感动啊。思来想去,楼主觉得去这个公司养老也挺好的,所以跟HR商定一个月之内等亚麻出结果了做决定。一开学以后又进入了集中上课状态,安心等待亚麻。


二月初忽然收到了亚麻的电话要求去西雅图参加著名的亚麻群p。楼主当时挺郁闷的。亚麻目前的面试流程大概是:两个OA,一次终面。如果终面是Video面试,通过率百分之百而且超级水,而如果终面是群p,通过率只有十分之一左右,大部分人都挂了。楼主一开始觉得不要去群p了,结果一看日历,面试的日期赶上了columbus day,学校放假正好好几天挺闲的。想到亚麻包吃包住包机票的,就想去面一面也没什么关系。于是脑子一热又决定去面试。在面试前一周,好不容易写完了作业,带着一份打印的面经零基础地上了飞机。


楼主在飞机上大致思考了一下几道题的思路,然后下了飞机休息一晚就去群p了。面试的时候感觉比较顺利,具体会在面试准备里面跟大家分享。面试完当天晚上在酒店点了一份外卖然后写作业写到很晚,第二天一早起来又飞回东部。……事实证明抱着虽然以为面试的过程轻松愉快去玩儿的,但真的顶着时差飞来飞去基本上还是很累的。楼主飞回来就退了一门硬课缓了好几天。


一周之后二月底,楼主收到了offer并决定从了亚麻,比较幸运的是赶上了今年的H1b抽签。


九章课程帮助 

一开始决定上九章课程的时候,我是比较抗拒的。因为楼主总感觉“真本事”要通过学院派的方法来习得。但后来的算法班、强化班学习经历确实很有收获。


总的来说,楼主认为九章算法跟面试的关系其实就相当于新东方和英语考试的关系。英语考试中,要想获得高的成绩,一方面要有大量的语言学习积累,另一方面也要有足够的复习和应试准备。参加算法面试也是这样。九章算法也许不会把一个算法用专业课教材或者一篇学术论文的方式呈现给你,但这些课程的好处在于完成算法基础和面试实战之间的“最后一英里”。所以如果不是高中就参加信息学竞赛的大神,我还是非常建议身边求职的同学去上九章的课的。


就亚麻的面试而言,楼主的获益主要是以下几个方面:


  • 楼主用强化班讲的扫描线算法完成了亚麻群p当中的调度任务,看到题目的一刹那马上就想起了老师上课讲的内容,直接最优解,面试官都惊呆了

  • 代码风格,楼主在算法班看到了google coding style guide并认真学习,然后坚持用check style之类的工具检查自己写的代码,比如每行结尾有没有空格、一行代码有没有超过80个字符、命名风格神马的,亚麻群p的时候被面试官表扬代码风格好……

  • 算法思想,亚麻群p的时候面试官问我为什么要排序,我就用老师上课讲的一些原理回答:遇到问题的时候为什么要让数据有序。

  • 数据结构,尤其是priorityqueue。楼主在上九章课以前只是知道并实现过优先队列,上过九章课以后才发现它确实是解决问题的利器。

  • 总之,我感觉九章算法班和强化班的课程都是设计得很合理的,一方面老师都很会讲也很用心,能把问题深入浅出地呈现出来,楼主在第一次上完强化班以后提了一个问题,第二次重听强化班的时候,这个问题已经出现在了PPT里了。另一方面任何学习的过程其实都是彼此促进的。上完九章以后,我一直在钻研普林斯顿算法的教材并希望自己能够更进一步地掌握这些知识。


好吧,写完这么多还想再说一句:感谢九章算法,我真的不是托儿……


准备建议

每个人的求职经历都是独特的,所以他人的经验未必能复制。亚麻确实是比较好进的公司,楼主也是个超级大学渣。在这里只是简单分享一下总的准备经过和亚麻的经验,希望大家批评指导。


总的来说,求职的时候主要是刷题、学习、实战、交流、心态几个方面吧。


  1. 刷题,除非脑子特别好使。楼主比较渣,所以需要经常刷题来保持自己遇到问题解决问题的思维能力;

  2. 学习,计算机专业课、相关的知识、课程,操作系统、网络、云计算、分布式、函数式、并行计算、机器学习……要一直保持自己对技术、对知识的热情,积累多了深度和广度慢慢就会有,虽然楼主也没有做到2333;

  3. 实战,大大小小的面试过程其实也是学习的过程。楼主在面试小公司的过程当中学习了很多知识,比如一家西部的公司在面试前给我发了两套不限时的作业题,全是Java和SQL练习题,楼主在完成这道题过程中几乎把java和sql整个复习了一遍,面完他们家以后面别人家的java和sql题目几乎没遇到过更麻烦的(什么thread.local()啊,哈希表的冲突处理啊之类的、几个表的join啊、静态表啊、类的设计啊的)。真心觉得SQL和Java面试里面常见问题就那么几个,面多了都是套路——虽说我们要少一点套路多一点真诚但大家都那么忙是吧……

  4. 交流,楼主默默感觉到口语好的人似乎会有一点优势。语言是一个人思维的外化,能够把一个问题条理分明地说清楚的人更招人喜欢(怎么感觉像相亲)。

  5. 心态,求职是一个过程,这个过程可能漫长也可能短暂,可能顺利也可能狗血,要努力让自己成为一个积极向上充满活力二逼乐观主动出战皮糙肉厚禁得起打击扛得住寂寞的人,反正最后大家都会有工作。


然后关于亚麻目前的全职招聘,好的一点在于他们家bar不算高,招的人还挺多的。群p的时候楼主感觉身边的人鱼龙混杂,有的人来自奇奇怪怪的专业代码能力并没有达到一定水平,有的人却是工作了好几年写起代码来花样体位轮着上做梦都用c++的老鸟。这里说一些楼主的揣测,未必准确,有别的同学也进了亚麻欢迎补充指正:

  1. OA1 + OA2, 这两部分没什么好说的,把地里的全部面经看一遍,然后调动自己的小学数学素养就够了;

  2. Video,拿到Video的人标准比较模糊,楼主感觉OA做得好、背景比较好的人容易拿到Video。尽力做的同时,攒攒人品就好了,这种事情可遇不可求。拿到Video了几乎就提前保送亚麻了。

  3. 群p,这个是最惨烈的一环,通过率很低,大部分人很快就收到拒信。从楼主的经历来看,这个过程主要考查面试者这几个方面:    

  • 代码正确:要写出来working的代码,楼主面试的时候面试官现场拿了一个很极端的corner case当作输入然后测试我的代码,还好通过了;

  • 团队合作,跟队友聊天、交流,楼主面试的时候面试官直接问你是怎么选到这个任务的,楼主当时跟队友选了同一个任务但是最后互相列举自己为什么合适,同时互相交流队友的任务神马的,面试官问我你怎么看待你的队友的时候我当然非常慷慨地赞扬了每个人业务能力强合作精神好聊起来很愉快跟他们共事是我的荣幸……

  • 代码风格,命名风格、每行的字符数、函数、注释、readme神马的,如果能够做到普通码农一眼看过去即使逻辑很复杂的代码都能秒懂这代码是干嘛的那就太赞了,楼主被夸代码风格好的时候还是很开心的;

  • 数据结构,这部分貌似特别重要,面试官一个劲儿地问为什么选择这个数据结构,这个数据结构有什么特点,时间复杂度神马的……所以对优先队列、哈西神马的得熟悉

  • 优化能力,在用一个比较普通的能力解决了问题以后,面试官会问怎么优化。楼主当时直接用扫描线算法写出来了最优算法,然后面试官就问我:如果输入是stream怎么办、怎么scale算法、你做什么能够让你的队友轻松、还有哪些优化的方向神马的……这时候就打开脑洞扯了。。。面试官还挺满意的看上去……

  • 跟面试官的交流,感觉这点也很重要,好的交流的标准因人而异,但起码要交流起来感觉正常吧……

有人说亚麻的面试比较水,但楼主感觉吧群p只是题目不难并没有真的放水。楼主当时一起面试的十来个中国人,好多人来之前答案都背熟了,但并没有通过面试。所以这个面试设计得还是动过脑子的。


能力的提高并非一朝一夕,九章的课可以帮我们少走一些弯路但最终的求职还是得靠自己的综合素质和一点人品。来九章遇到了很多心怀梦想的同学,大家都很优秀和勤奋,祝愿大家的努力都能得到回报,希望大家都拿到理想的offer。

简介
九章算法,帮助更多中国人找到好工作!
九章算法,团队成员均为硅谷和国内顶尖IT企业工程师。提供算法培训、面试咨询、求职内推。
目前开设课程有九章算法班、系统设计班、Java入门与基础算法班、九章算法强化班。更有android/big data/ios 等即将开课。
目前培训的程序员遍布中国、美国、加拿大、澳大利亚、英国、新加坡等14个国家和地区。
更多详情,登录www.jiuzhang.com,或致信info@jiuzhang.com.
发表