quit PhD找工作总结兼问google选组

avatar 8049
jaric
10829
20
找工作终于告一段落,非常感谢版上的好多信息和帮助,过来记录下找工作的过程和得到的体会,希望能回馈论坛,也给自己一个记录。另外也求各位大牛推荐下google的选组。

面了eBay,Google,Facebook,Microsoft,Epic,Bloomberg和东北部的两家小公司。拿到的offer是ebay,facebook,google,和东北这边的一家小公司。其余的现在都在onsite阶段,但都不打算去了。
收到据信的有rocketfuel,twitter,servicenow, 感觉默拒了的有pinterest,linkedin,yahoo,oracle,都是简历关没过@@ 一开始简历写的太失策了。

先介绍下背景,本科和研究生都是国内985高校cs的,phd来了大东北专业排名30左右的学校的i-school,来了以后发现好坑爹,什么也没学到。。。虽然一直很喜欢写代码,但是自从读了phd以后几乎没有机会写大的project,research是computer vision方面的,写的都是算法相关的代码,而且多数用的是matlab和C。。。所以所有的project经验都是本科的course projects,距离现在已经n年了。。。另外我记性不太好。。上过OS啊网络啊编译原理啊什么概念基本都不记得了。。。中间有一段在国内几个学长创立的startup的实习经历,做的是前端,大概半年。

下面分几部分来分享下我的一点点体会吧:
1. 简历
如果你是phd,或者quit phd,要找码农工作,请千万不要写publication和提到任何跟research相关的字眼。我第一份简历改了很多次,自以为改得很不错了,结果一开始的时候拿了一堆rejection或者默拒,连简历关都过不了。我的第一份简历校招的时候给Facebook hr,都没有得到on campus的面试机会。让一个朋友内推twitter,第一天推的,第二天就据了,申请的是new grad职位。后来朋友立马帮我问hr,hr说我的背景太偏research。所以后来我把所有的research project都包装成了普通的project,把所有research的算法名字都去掉了,把skill提到最前面。每一个project名字后面都用粗体写上这个project用到的技术和语言。用了新的简历之后好像就没有被刷了。

2. 投简历
除了epic和pinterest是自己跑去网申的,别的全都是内推和校招。我认为校招>>内推>网申。但其实还有第三种方式比校招更有效。。。
Facebook来我们学校校招的时候,我投了简历,但它木有给我on campus interview的机会。但因为我当时特地要了hr的名片,所以我立马改了一版简历,直接发给hr一封简短的邮件,诚恳地用两三句话介绍自己的经历和技能,常用的技术关键词加粗,附上简历,最后希望对方能给我一个面试的机会。那个hr大概隔了一个小时就给我回了邮件,立马给我安排了电面。
同样地,google都没来我们学校校招(学校太弱了好郁闷@@),我找了去年去google工作的一个朋友,问她要了当时招她的校招hr的邮箱,直接给hr发邮件。hr又是秒回,直接给安排了第二天给我打电话,第二天打完电话就给定了onsite。
这个方法虽然我只用了两次,但感觉真的比校招和内推都有用多了,如果大家正好有同学在CMU之类的名校,完全可以请他们帮忙去career fair要一堆hr的名片。还有发邮件的时机很重要,很多人都是career fair刚结束的时候发,那个时候发的人很多,容易淹没在邮件里。我是趁他们正好来我们学校进行on campus interview的时候发,写上你学校的名字,容易吸引hr注意。有offer deadline的话就在标题里写明offer deadline,hr就知道很紧急了。

3. 刷题
我是暑假快结束的时候才决定要quit phd的,所以真正开始找工作是9月份。但leetcode倒是刷了快3遍。第一遍是暑假的时候做research心情太郁闷了,想转换心情,所以刷来玩的。后面两遍是为了面试有目的地刷。
我觉得刷leetcode最重要的不是accepted,虽然看到accepted是很爽的哈哈~~代码质量和简洁性可能更重要。而且我感觉第一遍做最好还是自己想算法。我现在刷leetcode上的简单题目,大概在十行到二十行左右完成。中等复杂的,一般在三十到四十行以内写完。个别复杂的题大概七八十行。有一些题目第二遍做的时候,看看网上大神们的解法,其实帮助也很大。有些大神的代码逻辑非常清晰,代码非常漂亮,看起来真是一种享受呀~ 我很喜欢的一个博客是Yu's coding garden: yucoding.blogspot.com 对提高我的代码质量帮助非常大~~

4. 面试
如果能拿到on campus的面试,那是最好的了。因为on campus的面试题都好简单!而且面对面交流总是比电面好很多!
我微软的on campus面试就一道coding题,让我update tree里每个node的depth。。。
我在面试中遇到最频繁的题是括号配对,至少被面到三次。
bloomberg电话面试
问了一堆C++的三个OO特性,以及好大一堆C++的概念
还问了如果要在C++里实现内存管理,要怎么做
new是怎么实现的
算法题问了一道找树中两个节点的common ancester和一道蛮简单的数组类的题(现在不记得了)

eBay的电话面试有两轮,安排得非常快。第一轮一个人,第二轮本来是一个人,后来临时加了三个人。然后面完突然告诉我有offer了。。。不过后来发现eBay好像就是没有onsite的。。
ebay的面经在这里:1point3acres.com
另外有几题当时没写现在还记得的:
1). 外部排序的每个步骤,具体怎么merge,以及分析复杂度
2). 一个文件有n个词语,给定任意两个词语,计算它们之间的最短距离,也就是它们之间隔了几个词语
3). c++里virtual destructor的概念
4). leetcode subset那道

Facebook的电面,我只面了一轮
1). leetcode上判断一个string是不是palindrome那题,忽略所有的非字母字符。比如“ a;bc。。。ba”仍然是一个palindrome。
2). 给定二维平面上n个点,和一个整数k,给出这n个点中前k个离(5,5)最近的点。

Google没有电面,因为当时eBay的offer快到期了,然后facebook已经给安排了onsite,我直接跟google hr说,想跟facebook一趟一起面了,所以google hr在一两天内把我的onsite定下来并订好了机票酒店,顿时觉得好神速啊。。。所以如果你已经有offer了,完全可以提出直接去onsite,可以省去不少时间和精力。

Facebook和Google的onsite面试
因为签了nda,所以不敢透露题目(楼主胆子比较小@@,请大家见谅)。
个人感觉Facebook的面试有可能碰到leetcode原题,我碰到一题,跟我一起university day的小伙伴有面到三题的@@ 另外我觉得facebook比较看重代码质量,因为有一题我一开始没想出来算法,在面试官的提示下才想出来。感觉自己唯一的亮点只有可能是知道算法以后一次写出了bugfree的code,不然实在想不通以这种表现居然拿到offer了@@ 还有facebook如果是university day面试,会连着面四场,从早上10点多到1点多,所以可以带点巧克力。
Google的题目好天马行空,我只面到一道coding题。。。我觉得google完全不可能遇到原题。我自己看面经的时候常常有一种这什么题啊我肯定做不出来的绝望感@@ 但是真的去面了才发现google的面试官非常会引导你,而且他们其实并不expect你一下子就想出来,只要你思维清晰,根据他们的引导能很快反应过来,并且能跟他们沟通顺畅就ok了。你完全不用担心没有思路会冷场,整个过程你只要当是跟实验室同学在讨论问题就行了。而且不要担心自己的想法太简单,有任何的想法闪过都先说出来,他们希望看到的就是你思考的过程。另外,我觉得google对bug没那么在意,因为我写code的时候一开始有一个bug自己木有看出来@@
我觉得自己还是非常幸运的,如果两家的表现换一换,估计都会被拒的。

5. design题
我自己也没有怎么准备design题,只是看了很少的资料,但面试的时候至少有个方向可以思考~~
这里偷偷贴个我心目中的女神的blog,是朋友介绍我去看的,她里面总结了一些关于design题怎么准备,有一些关于FB和google现在在用的架构的talk链接。不过我好懒,其实我没看全@@
我没经过人家同意,偷偷贴在这里,不知道是不是不太好@@ 希望大家悄悄地去踩个就好~~
lilianweng.wordpress.com

找工作以来,最难熬的是一开始屡屡简历关被刷,看身边的同学个个面试一大把,自己却连面试都拿不到的时候,对自己完全没有自信@@ 但不要放弃!只要你努力,一定可以收获梦想的!去google面试的时候,看着经过的每个员工都从心底里羡慕他们,可以每天都在这样自由平等开放,遍地牛人的环境里写写代码,调调bug。没想到自己这么快也可以成为其中一员,楼主已经激动地两天睡不着觉了哈哈。非常感谢地里的帮助,学习到很多很多~~觉得自己非常幸运非常感恩,希望可以把好运带给地里。希望大家都可以拿到心仪的offer~~另外,各位大牛请给我点关于google选组的宝贵建议吧~~非常感谢~~
  • 23
20条回复