|
此文章由 新码工 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 新码工 所有!转贴必须注明作者、出处和本声明,并保持内容完整
下面讲讲我找工作的具体过程。
我计划的面公司的顺序是这样的:
1, 几乎不想去的公司(Ebay, Walmart, Cisco, Pure Storage等等)。
2, 喜欢但是很远的公司(Uber, Lyft, Pinterest, Yelp, Salesforce, Twitter等等)。
3, 喜欢的公司(Microsoft, Apple, Tesla, PayPal等等)。
4, Dream Companies(Google, Facebook, LinkedIn, Amazon, Netflix等等)。
这样做的有很多优点,首先Dream Companies肯定是要面的,而且很好拿到面试,所以我可以在面之前拿其他公司练手。而且如果有了其他公司的offer也可以用来催它们或者谈total compensation。
我最初的计划是先海投,试试凭着自己的实力能不能拿到面试。不行的话再找人内推。
可惜由于我是EE背景,海投全无音讯,于是我就开始找内推了(我会在《液体面包》中讲为什么不要海投,而应该直接找内推。)。在此我感谢所有帮助我内推的朋友、同学、同事以及地里的前辈们,没有你们我不可能成功。通过内推我依次拿到了以下几个公司的面试:Ebay, Twitter, Microsoft, Google, LinkedIn, Facebook。然后我只拿到了Microsoft和Google的offer,但是对我来说已经很满意了。
Ebay电面轻松搞定,但后面告诉我已经找到合适的candidate了,所以没给我安排on-site。
Twitter过了电面,可惜这个职位是SRE,而且几乎全组都是老印,所以on-site挂掉了。最主要的原因还是我实力不够。
Microsoft我面的是event,过了OTS然后到西雅图面试,拿到了offer。但给的工资是lowball。
LinkedIn我面的是Senior职位,我感觉我面得相当好,所有题都答得不错,最后感觉被一位国人女生黑了。大家可以认为是我实力不行,或者说我找借口,但我能面过Google巨难的新题没理由面不过LinkedIn巨简单的老题吧?这位女生迟到了十分钟,然后给我出了一道很简单的题,接着各种刁难,比如让我想办法把O(N)优化到O(N-2)之类的,让我重写了三四次,让我证明二分法的正确性…… 我清楚地回答出了她问的每一道题,结果HR告诉我其他组都反馈很好,但说最后一轮的女生觉得我communication很烂,强力反对我加入……
借此机会我跟大家聊一聊,在美国的国人大概分为如下几种:
1, 帮助国人。在另一个国人candidate可过可不过的情况下会给过,还好美国大部分的国人属于这类!
2, 狂草国人。在他/她面前国人candidate别想过,除非你是大神,或者你跟她永远不会有竞争关系。
3, 一视同仁。
我希望大家以后有机会做面试官的话,最好能一视同仁,这样是对公司负责,也对自己的名誉负责。当然在我们的同胞可过可不过的情况下,我们可以给他一次机会,想想你的一个简单的决定或许可以改变他人的一生。无论如何,也请大家别狂草自己的同胞,在强大的老印军团的存在下,我们在Job Market中已经很处劣势了,如果你阴我、我阴你,这样我们的道路会更艰难。我从我自己做起,保证不阴任何一个同胞。即使这位LinkedIn的女生碰巧有一天被我面试,我也绝不会报复她,甚至会帮她refer(这个是我信封God之后才有的想法,之前确实是想报复她)。
Facebook我面的也是Senior职位,全是原题,但都很难。我挂在老印的一轮,那一轮他问了我两道很长很容易出错的hard题。我第一道写错了,他高兴得马上拍照。第二道题我用的是完美解法,他非说你这样不快,你的解法有没有缺点…… 然后他并不想拍照我写对的答案,我两次提醒下他才拍照。但我必须承认,Facebook挂的主要原因还是我题刷得不熟。
Google我跳掉了电面。on-site很幸运,全程碰到的都是老美、老亚、老欧。出的都是我没见过的题,难度也高于其他公司。但由于没有歧视,以及那天状态好,我面过了!这里说一下,Google的流程超慢超复杂,不过大多都不需要面试者参与。我的HR建议我先Team Match然后再送Hiring Committee (HC),后来才知道她主要负责那个Team,所以她给我推荐的职位都是她们组的。面试之后很快就有两个经理跟我联系,他们都表示很想要我。那时候我就猜出来我的面试的feedback应该相当不错(我猜是有两到三个strong hire,甚至更多)。我选了一个比较喜欢的组,接下来送Hiring Committee。这时我刚刚得知我挂了LinkedIn和Facebook,然后转天Google的HC就要出结果了。那时我的心情很沉重,有一种命悬一线的感觉。假设Google再挂了,我转行基本就宣告失败了。因为那时我父母就快回国了,他们回去了我就不可能全力以赴找工作了。也许是God的旨意,我觉得我应该向教堂寻求帮助。于是我苦苦地拨出电话,给每一个我周围的教堂打电话。当天已经4:15了,大部分教堂都是4:00下班。打了第六七个左右电话时,一个Church的前台接了电话并转给牧师。我天真烂漫地问牧师:“我知道这个世界一定有God,你能不能跟我讲讲祂是谁?另外你能不能教我如何Pray?”他跟我约好转天早上与我探讨。从那一刻起,我的心情变得很平静,没有太害怕,也没有太紧张。转天早上我向他请教了一番,他也教我如何Pray。就在我开车去公司的路上,我看到了神迹(学术名应该叫sign)。我看到天上飞过三架飞机并驾齐驱,两架是白的,一架是黑的,黑的在前面,白的在后面。然后过一会儿我再看就找不着它们了!我在想这是不是说God想告诉我两个失败和一个成功呢?过了一会儿,在我独自祷告的时候一个电话打进来,通知我全票通过了HC,而且是几分钟就通过的,没有一个人有任何异议!之后我赶紧给牧师打电话报喜,也跟他讲了我看到的sign。他说在我走之后他帮我祷告了,希望God可以show me some signs。你可以认为我产生了幻觉,也可以认为牧师在讲大话,更可以认为这一切只是巧合,但我认为这些都是God的作为!
谷歌的完整流程包括以下:
申请->电面->On-site Interview->Team Matchin->Hiring Committee->Senior Leadership Review->Compensation Negotiation->Final Offer->(后面的是H1b签证相关)LCA->H1b Transfer->Congratulations!
其中通过率最低的要属HC,不过这两年H1b Transfer也很难搞。我的H1b Transfer用了PP,但有一阵子很尴尬,在我Receipt Number周围的朋友都Approve了,只有我的还在pending... 当时我老婆也在申H1b Transfer去Facebook,然后我俩的各种更新都基本同步。那一阵子我们等H1b等得很辛苦,于是决定去洛杉矶和圣迭戈玩耍一星期。某个上午,我俩正在吃Brunch,一刷状态,两人同时Approve了!神奇的是过了几分钟牧师给我发来短信,他说我刚刚为你们祈祷过,希望你俩都能通过…… 没错,就是这么神奇!看来牧师的Prayer还是更强大一些。
Part 4 液体面包
我希望我的转行经验可以帮助和激励大家,下面具体谈谈我觉得哪些东西是该准备的。
刷题:
刷题对找工作的帮助至少占90%,当你不知道该干什么的时候去刷题吧,一定不亏。
无论你基础如何,我强烈推荐Princeton Robert Sedgewick教授的Algorithms, Part I和Algorithms, Part II,好好听一遍受用终身。老人家的Slides整理得相当之好,他的code和证明也非常清晰。这两门课覆盖了大多数面试中会用到的算法,但最大的缺点是没有讲Dynamic Programming。
所以我推荐细读Introduction To Algorithms中关于Dynamic Programming的这一章,有时间的话建议通读全书。
还有一本必读的书是Cracking the Coding Interview,但我当时没看,有时间的话一定要看看。
学了这些之后基本你可以刷大部分题了,然后你每隔几天可以学习一下下面的算法:
Floyd Cycle Detection, Boyer-Moore Voting Algorithm, Reservoir Sampling, Euler Path (Hierholzer's algorithm), Binary indexed tree (Fenwick Tree), Segment Tree, Morris Tree Traversal
你刷的前两百道题可能会比较吃力,后面应该越刷越顺。
刷题方式大体分为兔派和龟派,我属于龟派。
兔派的方式大概是扫一遍题目,想个几分钟,如果做不出来马上看答案,看懂后自己Implement。
兔派的优点是速度快,效率高,适合记忆力比较强的人,适合面Facebook和LinkedIn等不怎么出新题的公司。
龟派的方式大概是尽量自己解题,即使耗掉半天也自己解,实在做不出来的情况下看看提示再自己解。
龟派的优点是锻炼思维能力,适合分析能力较强的人,适合面谷歌等只出新题的公司。
刷题时间:我建议白天刷题,原因是面试都是在白天,而且晚上刷题的话想不出来很痛苦……
临近面试时建议:每天刷一两道新题,帮助活跃思维。刷高频题,刷自己经常写错的题,刷近期面经(请斟酌:面经有很多问题,比如没答案,比如题表达错误等等)。
系统设计:
这个一开始大家一定很头大,其实还是有套路的。建议早点开始准备,学习好数据库。
一定要学一学Grokking the System Design Interview,最好再自己花钱上个补习班。
系统设计的书很少,目前最公认的是这本:Designing Data-Intensive Applications.
数据库:
我认为数据库是除了算法之外对找工作最有用的一门课,占5%吧。如果实在没时间可以不看,我大部分转专业的朋友都完全不懂数据库,但是也都找到了理想的工作。如果真想学好数据库的话,至少要花两个月时间吧。
建议SQL和NoSQL每个掌握一样,比如MySQL和Cassandra。
数据库的书我推荐这本:Database System Concepts。
Object Oriented Design & Design Patterns:
传说是Amazon必考的内容,微软偶尔也考。如果你不面这两家可以不准备。
推荐书:
Design Patterns, Elements of Reusable Object-Oriented Software (终极参考书)
Head First Object-Oriented Analysis and Design (好理解的一本书)
Agile Principles Patterns and Practices (重点看S.O.L.I.D principles)
其他CS知识:
如果你时间真的超级充裕的话我还建议你学习以下内容:
Operating Systems,面SRE的时候很容易考到里面的知识。 推荐书:Operating Systems 龙书。
Computer Networking,同样的,SRE容易被考。推荐书:Computer Networking - A Top-Down Approach (6th Edition)。
|
评分
-
查看全部评分
|