由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
USANews版 - 国内编程硕士的北美求职记(待续)
相关主题
美国现在最严重的问题是川普连发三推,大反击了
Airbnb老板为难民出头了Megyn Kelly和NBC离婚看来焦点是在NDA 上,就是
特朗普的“弃约精神”如何看待保险、合约、法律的解释权
理性的床粉们,今天过后还是洗洗睡吧,也就这样了。The Facebooker Who Friended Obama
中国印度bbs上都是一片欢腾啊 (转载)joe wong's facebook is full of comments from chinese
川普白宫看了memo以后觉得没啥货。Facebook和百度合作搞“和谐”?
风暴现在就是保命Is this the beginning of the end for Facebook?
从中国拍的港珠澳大桥纪录片看中国怎样窃取别人技术!cnn新闻歧视亚裔 (转载)
相关话题的讨论汇总
话题: 面试话题: hr话题: google话题: facebook话题: 面试官
进入USANews版参与讨论
1 (共1页)
p*****e
发帖数: 371
1
转载
最近签掉了 offer,找工作的事情算是告一段落。在这里写一点面试体验和心得,希望
对有兴趣去北美工作的朋友有所帮助。
先简单介绍下自己,国内硕士在读,明年毕业,没有牛 paper,也没参加过 ACM-ICPC
竞赛。在实验室做过内核、虚拟机和 Android 底层相关的研究工作,接过一些网页和
移动开发的外包,2011 年开始在字节社兼职负责后台开发。另外也经常上
Stackoverflow 和 GitHub。
这次决定直接申请美国的职位后,由于心里没底,不知道国外公司招聘的难度,所以一
开始投了很多公司。几个大公司都找人内推或者直接投了,小公司也投了不少,比如
Foursquare、Path、Pinterest 和 Square 等都试了。当时甚至在手机上找了一圈应用
,把可能涉及后端开发的应用都投了一遍。不过大多数公司都没给我安排面试,只有
Microsoft、Google、Facebook、Twitter 和 Hulu 这五家公司愿意给我面试机会。
一般来说,国内毕业后直接投国外公司,会比出国留学毕业后找工作的难度大一些。除
了语言因素之外,我了解到的主要原因在于工作签证,出国留学毕业后可以通过 OPT
签证入职,之后再过渡到 H-1B 签证。而国内毕业的学生只能通过 H-1B,这意味着要
等到第二年的十月份才能入职。好在 Google、Facebook 等公司不太介意这个问题,还
是会欢迎国内的应届生申请。
校招的 HR 一般会有各自的职责。比如 technical sourcer 负责发现有希望进入自己
公司的应届生;recruiter coordinator 会帮助 recruiter 安排面试者的面试时间、
面试官,以及 onsite 面试时帮助面试者订机票和酒店;staffing consultant 则负责
发 offer 以及介绍公司的具体福利制度,并解释面试者相关的问题。不同公司的 HR
职责的分法自然也不一样,我在 Facebook 的面试过程中只和两位 HR 联系过,而在微
软的面试过程中则联系过五六位 HR。
在面试流程方面,相比我了解到的国内公司的面试,国外公司的面试安排上会更人性化
一些。例如安排面试时间时,HR 一般会先让你给出几个空闲的时间点,然后他们再从
这些时间中给你安排面试。此外在为你安排 onsite 的住宿时,也会询问你有没有相关
的要求。
关于面试题目,大多数公司都比较侧重面试者对基本的数据结构和算法的掌握程度,以
及把这些内容实现为实际代码的能力(一般会要求你选一个语言实现,而不允许用伪代
码)。越是规模大的公司越注重这些基本功,而小公司除此之外还会考察你的开发经验
,例如对某个框架的了解和性能优化方面的技巧。关于这一点区别我的理解是大公司里
面会有自己的框架和开发工具,面试者的基本功好就能比较快的上手;而小公司一般用
社区现有的工具,所以已有的开发经验可以直接用在将来的工作中。
下面是这几个公司的面试细节,有些公司因为在 onsite 面试的时候签了 NDA,所以没
法透露具体的面试题,还请见谅。
Microsoft
微软是我最早投的公司之一,托了在微软总部工作的一位学长帮忙内推。面试包括一轮
HR 面和四轮 onsite 面。
申请了一个多月后一直都没有反应,直到微软国内招聘的前一天,北京的 HR 打电话问
我是不是投过微软的职位,要我参加第二天上海站的笔试。
笔试过后,又过了一个多月,收到了微软一位招聘人员的邮件,问我是不是对微软北美
的职位有兴趣,要我填一份基本情况的问卷,里面有问到其他公司的面试进度。我当时
已经收到了 Google 和 Facebook 的面试邀请,就如实填写了。回复第二天后就收到了
邮件通知,告诉我会有 HR 进一步跟进。第三天有一位 HR 联系我和我约电面的时间。
微软约电面的方式和其他公司不大一样,HR 会给出很多个选项,让你在里面选择几个
空闲的时间。另外值得一提的是这些时间都转成北京时间了,这也是微软在安排面试时
比较人性化的一个地方。
第一轮面试是 HR 面。HR 先问了一些技术无关的问题,比如喜欢做什么,工作地点的
偏好,什么时候开始学的编程,为什么投了微软等等。接着是一些智力题,比如 9 个
小球,8 个质量相等,另一个比其他的重,如何用天平称两次把它找出来;公司开发了
一种新键盘,有哪些测试它的方法;在会议室内怎么估计室外的温度。都是些更像是考
验英语水平而不是技术能力的问题。
面完第二天收到了 onsite 的通知。虽然是北美的职位,onsite 面试地点却是在上海
。我参加的是周日的面试,和我一起参加面试的还有一位学生,他之前在微软实习,了
解到这次有去北美工作的机会后也想尝试下。面试官是从总部飞过来的工程师,一共有
四位,其中三位都已经是 principal 级的了。HR 提到一般技术面试要五轮,因为我们
之前参加过一轮笔试,所以只需要面四轮。
onsite 面每一轮的过程都差不多,都是面试官自我介绍,接着我介绍自己和做过的一
些项目,然后开始技术问题,最后是我提问的环节。微软的面试问题会考察面试者编码
、设计和测试三方面的能力。
coding 环节要求直接在白板上写代码,我被问到两个 coding 问题。一是如何检查一
棵二叉搜索树是否正确,二是写一个解数独的程序。第一个问题写起来很快,第二个问
题因为时间有限,我先写了一个没啥剪枝的暴力搜索的版本,写完后和面试官分析了可
以在此之上做的优化。
设计方面的问题有两个。第一个问题是设计一个分布式的数据管理系统。使用场景可以
是一个连锁店信息的记录系统,每个分店都有可能更新自己的信息,并把这些改动传播
到整个系统中。在设计这一系统的同时要考虑性能、容错、一致性等要求。我一开始想
了一个基于 push 的机制,在面试官指点下逐步优化,最后还是有不少问题。于是干脆
重新设计了一个基于 poll 的系统,优化改进之后面试官满意了。
另一个设计问题和类的设计有关,要求设计一个包含图形界面的棋盘游戏。因为之前做
过不少相关的开发,所以这一部分我还挺擅长的。按照 Single Responsibility 的原
则设计了几个分工明确的类,另外把网络对战和 AI 接口都考虑进去了。设计完成后面
试官要求我从用户鼠标单击这一事件开始介绍整个控制流程,在某些类中还会问及这么
设计的原因,以及和其他设计方案相比的优缺点。
测试部分的问题也有两个。第一个问题是如何测试一个随机函数。第二个问题和分布式
系统有关,面试官先向我介绍了一个分布式系统,包括它的使用场景和基本的架构,然
后问我其中某一个部件应该如何测试。提到正确性、可伸缩性、一致性和容错性后再给
出相应的测试方法应该差不多了。
onsite 面试后的第二天后就收到了 HR 的邮件,祝贺我拿到了 offer,并和我约时间
谈具体的 offer 细节。虽然微软一开始拖了两个多月才开始安排面试,但是一旦开始
面试后他家的效率非常高,是这次面试的几家公司里效率最高的了。
Google
Google 面试也是托学长推荐了。HR 说我的简历看起来很不错,先给我安排了两轮电面。
电面都和 coding 有关,面试官会给你一个 Google Docs 链接,在电话里描述题目后
要求你在 Google Docs 上写程序。题目的难度不高,两轮一共四题,都是对基本数据
结构的操作,例如给在一个未排序的数组中去掉重复的数字,还有把一个有序数组转成
一个平衡二叉搜索树,在一个已排序但有重复数字的数组中查找元素等。
第一轮电面聊天的时候还发现第一轮的面试官是在 ITA Software 做的。正好前几天用
他们的产品 Matrix Airfare Search 订到了低价的去土耳其的机票,过了一星期神奇
的在面试的时候碰到了这个团队的工程师。当时一下子就兴奋起来,聊了不少和
Matrix 的有关的话题。这位面试官听说中国的机票也能用他们的平台查询,还挺吃惊
的。他还提到他们原本想把计算任务放到 Google 内部的计算框架上,但是由于和合作
方的合同的限制,没法把一些商业数据放到 Google 的平台里,只能继续用原有的计算
引擎。
第二轮电面的面试官是位印度人,虽然我很难听懂他的口音,但是他很耐心,会和我重
复描述问题,所以题目做下来也没啥困难。在和他的聊天中得知他除了正业(Youtube
)外还在闲余时间研究机器人。
电面结束后第二天收到了 HR 的邮件,邀请我去总部面试。由于当时已经是九月底了,
而我十月初打算去土耳其玩两星期,于是只能从土耳其回来后开始准备签证了。Google
的 HR 非常热情,每次回邮件都很及时,经常能在加州时间晚上十一点左右收到她的
邮件。她帮我弄来了 Google 的面试邀请信,顺利的过了签证面试。之后另一位 HR 还
帮我订好了从上海往返 San Jose 机场的机票,以及三晚的住宿(因为考虑到我需要倒
时差,多了一晚住宿,这一点也很体贴)。
Google 给我安排的住宿是 Wild Palms Hotel,在 Sunnyvale。不愧是硅谷的旅馆,每
天早上起来吃旅馆的早饭,都能听到有人讨论 Java。在 Sunnyvale 的第二天我坐公共
汽车到处逛了逛,考虑到接下来要在加州玩一圈,就办了张 T-mobile 的一个月电话卡
(60 美元,包括不限量的短信、通话和 3G 流量,但是这家的信号非常差)。这家旅
馆和苹果总部也很近,出门有公交车直达,作为半个果粉自然不会浪费这个机会。
第三天在 Google 工作的学长开车带我去了公司。Google 的园区里有不少免费自行车
,没有锁,直接就可以骑。我在 Google 商店买了点礼品,在园区骑车转了一会儿后就
开始面试了。
面试一共有四轮,每轮 45-55 分钟,中间有 5 分钟的休息时间。中午会有 Google 工
程师带你吃饭。带我吃饭的 Google 工程师也是中国人,了解到这点后我们就知道用中
文聊天了。吃饭时间里了解了不少在 Google 工作的优缺点,也一定程度影响了我之后
做的决定。
由于签了 NDA,没法在这里透露具体的面试题目。面试主要都是算法题,比电面难一点
。除了算法题外我还被问到一个分布式系统的设计题,以及一个多线程相关的 coding
题,后者用信号量很容易解决。其实如果能和面试官好好交流,这些题目做出来应该是
没啥问题的。
面完第二周 HR 通知我拿到 offer 了,打电话告之了 offer 的具体细节。Google
offer 的邮件附件还包括一份各项福利的介绍,着实吸引人。我还记得 HR 打电话来的
时候我正好在三藩 Exploratorium 边上的小湖旁,在湖边美景中听到这样的好消息自
然分外兴奋。HR 还告诉我没有限制我的签约时间,可以在任意长的时间后再做出决定
,也算是 Google 非常体贴的地方。另外具体的职位会在入职前一段时间决定,HR 的
说法是可以根据自己的喜好在一些项目之中选择。
Facebook
我在今年三月份投过一次 Facebook 的暑期实习,被告之已经招满了,接下来校招时会
再联系我。七月份的时候我又在网站上投了一次开发职位,还麻烦一位在里面实习的学
长帮我内推了。八月一位 HR 联系我安排第一轮面试,电面安排在了九月。
Facebook 的 HR 也很负责,她在电面前几天打电话和我聊天,介绍 Facebook 的基本
情况,以及面试流程。第一轮电面结束后的情况分三种,如果面试表现很不错,那就直
接获得了 onsite 的机会;如果面试表现一般,面试官不确定要不要,就会再加面一轮
;如果面试表现不好,就可能直接被刷了。除此之外 Facebook 的 HR 比较体贴的一点
在于给中国人安排的第一轮面试官很有可能也是个中国人,降低了语言上出现问题的可
能。
HR 的电话里还提到 Facebook 入职后有六星期的 bootcamp,可以熟悉各个项目和团队
,具体的项目是 bootcamp 结束后自己选的。问了一下在那工作的朋友,做出的选择一
般都会被满足,因为 bootcamper 的选择分布还算比较平均的。
Facebook 电面和 Google 差不多,是在 collabedit 上进行的。也是面试官在电话中
口述题目,我在网站上写代码。老实说这个网站的体验不怎么样,面试过程中出现过几
次我这边写的代码没在面试官那里出现的情况。好在面试官比较有经验,一发现有问题
就会提醒我刷新页面。
第一轮电面我做了三个 coding 题,题目都不难,但是要求 bug free。电面的面试官
抓 bug 的能力着实厉害,找出了两个我一开始没发现的 bug。好在他提示说有 bug 但
没指出的情况下,我把它们都修正了。面试题目难度和 Google 的电面难度差不多,都
是对数组、二叉树和字符串的基本操作。第一题是把一个字符串中的 %20 都转成空格
,第二题是按层打印一棵二叉树,第三题是找出两个有序数组里不同的数字(类似求集
合的异或)。程序正确后面试官还会问一些优化方面的问题,例如在不同的情形下应该
使用哪一种算法。
面完后第二天收到 recruiter 的消息说我拿到 onsite 的资格了,具体的时间会在十
一月通知我。
Facebook 给我安排的酒店是 Palo Alto 的 Sheraton。酒店门口停着不少出租车,面
试那天的出租车司机还是用 Square 收的钱。我的面试正好赶上了他们的 University
Day。这一天的安排是上午三轮面试,中午吃饭,下午逛一圈公司以及三场讲座。我的
第三轮面试还出了点茬子,面试官一直没出现,HR 只能先带我去吃中饭。中饭结束后
HR 带着别人边逛公司边介绍,我只能继续我的第三轮面试了。
Facebook 校招时本科生和硕士生是统一级别的,面试只包括算法题,不会有设计题;
而博士生则高一级,面试的时候还会有设计题。三轮 onsite 面试包括一轮 jedi 和两
轮 ninja。jedi 面主要是让面试者介绍自己的项目经历,了解面试者的技术专长和偏
好,不过面试官也让我做了一个简单的 coding 题。ninja 面各有两个 coding 题,题
目难度都不大,和电面差不多。但是与电面不同的是,面试官会深入问一些细节的问题
,例如代码里生成了多少个新的对象,有没有办法优化等,有一个问题还要求我用一种
算法实现后,再用另一种完全不同的思路实现一次。(onsite 面试是签了 NDA 的,这
里就不方便透露具体的题目了)
面试完之后有三个讲座,第一个讲座介绍了 Facebook 总体的工作环境。第二个分产品
和后台两个讲座,同时进行所以只能选一个。我一开始选择了后台开发,不过当时突然
对产品有了兴趣,就去听了产品的讲座。一位负责 Events 开发的工程师结合这个产品
介绍了下 Facebook 内部产品开发的流程,例如新特性是怎么出来的,如何测试等。最
后一个环节是几位刚从 bootcamp 毕业的员工和我们分享他们在 Facebook 中工作的感
受。
University Day 结束后,参加活动的每位学生还收到一个包装精致的礼物。拆开来后
是一块两面分别刻着「Move fast and break things」和「Proceed and be bold」的
玻璃砖。我还是很喜欢这个礼物的,这也一定程度上影响了我最后的选择。
面试完第二天 HR 从我这里要了三位 reference,包括他们的职称和联系方式,接下来
HR 会联系他们询问我的情况。Facebook 的动作也很快,第二周就给我发了 offer。
有意思的是,offer 邮件的 welcome package 最后一页建议面试者在入职前熟悉一下
Unix,还推荐了几篇文章和两本书。
Google 和 Facebook 的 onsite 是在同一星期面的,前后只隔了一天,收到 offer 的
时间也只差了一天。package 方面, Facebook 比 Google 的要好不少,但是 Google
的 HR 说可以 match Facebook 的 offer。去之前我想过如果两个 offer 都拿到,那
就去 Google。但是到了这两个公司,和几位面试官以及在里面工作的朋友深入聊天后
,最终还是选择了 Facebook,因为它规模更小,应该能有更多的锻炼机会。
另外我了解到的 Google 和 Facebook 的面试流程都是先由各位面试官给你打分,例如
分 strong hire / hire / weak no hire / strong no hire 四档(不一定完全一致,
比如可能会多一档 neutral)。同时要写下关于你的面试情况的报告。再接着由
hiring committee 讨论要不要给你 offer,以及 package 如何。有亮点(某位面试官
的 strong hire)很重要,一个 strong hire 和几个 weak no hire 会比平庸的清一
色的 weak hire 好。
未完待续
1 (共1页)
进入USANews版参与讨论
相关主题
cnn新闻歧视亚裔 (转载)中国印度bbs上都是一片欢腾啊 (转载)
Does Facebook Wreck Marriages?川普白宫看了memo以后觉得没啥货。
Facebook 的IPO是件残次品风暴现在就是保命
Facebook上市:傻瓜每天都在诞生从中国拍的港珠澳大桥纪录片看中国怎样窃取别人技术!
美国现在最严重的问题是川普连发三推,大反击了
Airbnb老板为难民出头了Megyn Kelly和NBC离婚看来焦点是在NDA 上,就是
特朗普的“弃约精神”如何看待保险、合约、法律的解释权
理性的床粉们,今天过后还是洗洗睡吧,也就这样了。The Facebooker Who Friended Obama
相关话题的讨论汇总
话题: 面试话题: hr话题: google话题: facebook话题: 面试官