我是一个比较小心眼的人:当我的朋友都比我出色时我会非常不舒服。大学期间我一直反思,如何我才能追上我的高中同学们呢,要知道他们都考到了一流大学啊。我当时想了想,只有另辟蹊径才有机会:出国留学!我的家境一般,父母是标准的工薪阶层。好在早年间父母英明,我家买了两套房子。所以咬咬牙还是能勉强供我出国留学的。有了非常粗略的目标之后我就开始学习英语,这里略去几千字吧,我从零开始学英语的经历其实是非常励志的。我勉强考过了四级和六级。这个时候我需要决定去哪个国家,一开始目标是澳大利亚,因为和我学校有合作项目。但是那天在留学中介中心恰巧澳大利亚的办公室没人,而对面就是留学美国办公室。报着随便听听的心态走进了美国办公室,一位阿姨成功地在几分钟内说服了我美国是留学的第一选择。然后我就考托福,由于基础较差,大学毕业一年后才考完GRE并申请到美国学校。所选专业是EE硕士。.google и
Part 2 悲剧男历险记
到了美国的第一夜我痛哭流涕,首先是想念父母,然后是觉得美国太穷了!后来了解到EE不好找工作,然后深入地了解到了美国的贫瘠和不方便,也找不到属于自己的圈子。哭了一星期后我决定偷偷回国算了,趁着还没交学费,就别浪费父母的钱了。当时脑子里只想着和父母在一起。幸好一个印度室友劝我,他告诉我美国的教育还是非常棒的,至少听几节课再决定是否回国。上了几节课发现我完全听不懂,原因有两点:第一,我本科光学英语了,专业课没有学得很好。第二,我英语也不行。这时我再次萌生回国的念头。那时我烦得每天抽烟,每天像个乞丐一样咨询本专业的学长们我是否应该留在美国。庆幸的是我碰上了一个烟友,他是我们专业的学长,而且还是我老乡,他还有车!于是我找到了组织,从那以后每天跟着几个学长鬼混,乐不思蜀,也就打消了回国的想法。
谷歌的完整流程包括以下:
申请->电面->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还是更强大一些。
-baidu 1point3acres
. 1point 3acres 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,但我当时没看,有时间的话一定要看看。
学了这些之后基本你可以刷大部分题了,然后你每隔几天可以学习一下下面的算法:. 1point 3 acres
Floyd Cycle Detection, Boyer-Moore Voting Algorithm, Reservoir Sampling, Euler Path (Hierholzer's algorithm), Binary indexed tree (Fenwick Tree), Segment Tree, Morris Tree Traversal
你刷的前两百道题可能会比较吃力,后面应该越刷越顺。. check 1point3acres for more.
刷题方式大体分为兔派和龟派,我属于龟派。
兔派的方式大概是扫一遍题目,想个几分钟,如果做不出来马上看答案,看懂后自己Implement。
兔派的优点是速度快,效率高,适合记忆力比较强的人,适合面Facebook和LinkedIn等不怎么出新题的公司。
龟派的方式大概是尽量自己解题,即使耗掉半天也自己解,实在做不出来的情况下看看提示再自己解。
龟派的优点是锻炼思维能力,适合分析能力较强的人,适合面谷歌等只出新题的公司。-baidu 1point3acres
刷题时间:我建议白天刷题,原因是面试都是在白天,而且晚上刷题的话想不出来很痛苦……
临近面试时建议:每天刷一两道新题,帮助活跃思维。刷高频题,刷自己经常写错的题,刷近期面经(请斟酌:面经有很多问题,比如没答案,比如题表达错误等等)。
. ----
系统设计:
这个一开始大家一定很头大,其实还是有套路的。建议早点开始准备,学习好数据库。
一定要学一学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 (终极参考书).google и Head First Object-Oriented Analysis and Design (好理解的一本书) Agile Principles Patterns and Practices (重点看S.O.L.I.D principles)
.google и
其他CS知识:
如果你时间真的超级充裕的话我还建议你学习以下内容:
Operating Systems,面SRE的时候很容易考到里面的知识。 推荐书:Operating Systems 龙书。
Computer Networking,同样的,SRE容易被考。推荐书:Computer Networking - A Top-Down Approach (6th Edition)。
. 1point 3 acres
简历:
建议至少有三个软件相关的Projects:一个数据库,一个网站,一个其他(Big Data, Machine Learning, 游戏等等)。
简历是一个绝对头疼的东西,不管你的简历多好,挂在地里大家肯定能指出一大堆问题,而且说得不一定对。
如果你实在一个拿得出手的Project都没有,我有以下几点建议:.
1. 在Udemy报一个Web development的课,肯定能出一个project.. 1point 3acres
2. 报一个big data的班,能出两三个Hadoop的projects.
3. 把自己工作时的东西“软件包装”。比如你平时的工作时技术支持,要记录用户的问题,那你就说你使用数据库来记录。当然我们不要骗人,最好真的自己搭一个数据库。再比如你平时做实验需要run三样东西,你就说你用script来run这些东西。同样的,建议你真的写script来试试run。
你一定要有一个自己特别了解的Project,面试时几乎100%会被问题,目的是考你是否能讲清楚一样东西,具体内容不重要。
Behavior Questions: . check 1point3acres for more.这类问题最好回答也最难回答,主要考核你是否适合在他家工作。
What is your Biggest challenge? 想听的是你面对challenge和如何解决的能力。. 1point 3acres
最引以为豪的project是什么? 考你的沟通能力,看看你能不能通过画图和讲话把一个project说清楚。
如果在团队中你有不同意见会怎么办?如果他人针对你你会怎么办?想听你解决冲突和沟通能力,答案的关键词是沟通,沟通可以解决一切问题……
有什么赶掉deadline或者几乎赶掉deadline的情况吗?怎么处理的?想听你的计划和抗压能力,答案的关键词是计划好,如果计划赶不上变化要赶快和经理以及相关人员沟通,然后每次update进度时通知这些人,开会时写meeting minutes并发给他们。-baidu 1point3acres
告诉我一个你之前manager给你的negative feedback。你犯过最大的错误是什么。这时候一定要回答一个真真正正的错误,他们主要想听你以后是如何改正或者避免的。
必问题:What questions do you want to ask me?
参考问题:
A. What is the ratio of testers to developers to program managers?
B. What brought you to this company?
C. Why did the product choose to use the X protocol over the Y protocol?. ----
D. I'm very interested in scalability, and I'd love to learn more about it. What opportunities are there at this company to learn about this?
E. I'm not familiar with technology X, but it sounds like a very interesting solution. Could you tell me more about how it works?