11月 5, 2012

文/DoNews新锐作者 陈广琛

Google、Microsoft 和 Yahoo 都是去年的事情了,接下来说说今年的吧。其实我在豌豆荚非常爽,跟身边的设计师和工程师合作都很愉快,所以唯一能够诱惑我去面试的就只有 Facebook 了。最初接受 Facebook 面试邀请的原因并不是追求它的 offer,而是我就想了解一下 Facebook 是怎么面试的,有什么是值得豌豆荚招聘借鉴的。

过去在百度做面试官,只是面试而已,公司招不招得到人我没什么感觉。我觉得公司招不到人就招不到人咯,我们没必要扩张得那么快啊,先专注于做好手头上的项目再说嘛。豌豆荚其实不是着急要招前端工程师,我们还是坚持只招一流人才,只不过长期发不出 offer 还是让人感觉招聘有问题——我们浪费了大量的资源在面试上,发不出 offer 意味着回报率低,因此我们总要想办法研究如何提高回报率。

回到正题上来,我选择参加 Facebook 的面试,就是想看看他们是如何选拔人才的,他们所使用的题目是如何设计考点的,是不是设计得比我们的要好。因此,在收到 Facebook HR 的邮件后,我回信说愿意聊一下,然后跟他约了一个时间进行电话沟通。因为 Facebook 总部在美国西岸,所以之后的电话沟通和电话面试都约在了早上 8:00。尽管这导致他们要晚一个小时下班(按朝九晚五算的话),不过 HR 也很通情达理地接受了。(我猜大多数工程师都不会采用朝九晚五的正常作息时间吧。)

HR 在电话里先简单介绍了一下 Facebook 现在的情况,然后说明这是 Menlo Park 总部的职位,让我确认如果顺利应聘的话我会愿意到美国去。接着 HR 问了我两个很基础的 CSS 问题:display block 和 inline 有什么区别?position 有哪些取值?我觉得 HR 能够问这样的问题对于工程师来说是很爽的事情,因为纯粹的小白就被过滤掉了,也不需要浪费工程师的时间来面试。(我在之前的文章中说到过,在中国大多数面试前端工程师职位的候选人无法回答这两个如此基础的问题,不知道在美国是否也如此。)随后 HR 问我还有没有什么不明白的,或者关于 Facebook 想要了解的,我说没有了。HR 的最后一个问题是「你为什么选择 Facebook?」我当时心里想的是,「是你主动联系我的,我没想过这个问题哦」。于是我跟他说,「我暂时没有答案。我现在在豌豆荚工作很开心,不过我也乐意多地了解 Facebook。」

电话沟通后,HR 给我发了两道 puzzle,选做其中一道就可以了。两道题目都是前端相关的,其中一道需要设计一个简单的算法,另一道则需要支持移动设备触击交互。这种解 puzzle 的面试方法我不是第一次遇到了,4 年前申请 Google 的 Web Developer 职位时也遇到过类似的 exercise,只不过题目只有一道,没有选择的余地而已。相比起 4 年前 Google 的 exercise 而言,这两道 puzzle 的考点更加 update。(4 年前的 exercise 还需要考你如何做圆角和背景渐变,现在都是用 CSS 3 搞掂的了。)

我花了一周的时间完成了一个 puzzle,搞掂了算法设计和界面实现,连 unit test 也都写了,然后提交给 HR。HR 在 review 的结果出来后,把我介绍给另一位 HR,说她会帮我安排接下来的面试。第一轮面试感觉有点像 Google 的,主要由 3 道题目构成。题目的考点设计得很好,基础知识能被覆盖到,常用技法也需要用到,但又绝对不需要某一方面很高深的知识。(设计得不好的题目往往是依赖于面试官很熟悉的一个难点,如果你不知道这个难点,或者你的理解跟面试官不一样,你就完蛋了。)

第一轮面试的最终通话时间为 90 分钟,我猜这意味着我做得不够好,因为如果以 Google 的标准来衡量的话,45 分钟解 3 道题才算及格。经过后面几轮面试我才发现,原来 Facebook 面试一般是要求 60 分钟解 2 道题。第一轮的面试官之所以给我加了 1 道题,估计是因为第 2 道题我做得不好,所以他相当于换了一道题给我做。面试结束,面试官又问了之前 HR 问过的问题,「你为什么选择 Facebook?」我还是那样子回答。

面试一个星期后,HR 邮件跟我说,我通过了上一轮面试,接着要安排下一轮面试。第二轮面试感觉跟第一轮差不多,包括长度和难度。只不过这次就是 60 分钟 2 道题,估计是因为我 2 道题都解出来了吧。面试结束时面试官又问那个问题了,我决定反过来问他是否喜欢 Facebook 的工作。他说 Facebook 的工作很好,周围的人都很聪明,能够从他们身上学到东西,同时公司提供一天三餐,福利好到觉得自己被宠坏了。我其实不是很在乎福利的部分(豌豆荚又不是没有一日三餐),我更在乎的是人是否聪明,合作的过程中他们是否总能教会你一些你过去不知道的事情(这是我现在在豌豆荚拥有但离开就可能失去的部分)。随后我跟他说,我在乎的是能否跟聪明人一起工作,听他这样说感觉 Facebook 不错。

又过了一个星期,HR 邮件跟我说,需要安排我到美国面试。我一开始对这件事也不特别在意,觉得那你就慢慢安排吧,有人报销机票让我到湾区旅行就是好事情。在随后的电话沟通里面 HR 跟我说,因为今年的 H–1B 签证配额已经花出去一半了,如果按照这个速度估算的话可能到 5 月底签证配额就会花完,所以希望我尽快到美国面试。(如果签证配额花完了,有没有 offer 都没意义了。明年 4 月才能申请明年的配额,申请成功也要等明年 10 月签证才生效,就算公司很想要你,也只能先安排你在海外办公室工作一年。)于是我就连忙办签证 5 月下旬飞往美国参加面试,因此也就有了我之前那篇《三藩市湾区一周游》。

4 轮面试安排在一天内完成,Facebook 委托旅行社安排好往返机票和两晚住宿,随后我就出发了。因为害怕迟到,又因为美国郊区的公交又是一小时一班的,所以面试当天我早早就起床了,结果发现酒店门口是长期有出租车的,打车到 Facebook 后等了一个多小时才到原本约定的面试时间。HR 在见到我后先把我带到 micro-kitchen 让我拿吃的喝的,并且问我那么早来是不是没有吃早餐。我说确实没有,然后她就让我拿一些食品做早餐。(其实我应该在酒店叫早餐的,因为 Facebook 允许每天报销最多 $75 的餐饮开支。)随后她把我带到用作面试的会议室,给时间我解决早餐,并且跟我简单说明了当天的安排:早上 2 轮面试,结束后她会来带我去 Facebook 餐厅吃饭,然后下午还有 2 轮面试。

总体上来说,4 轮面试的形式还是一样的,每轮都是 60 分钟解 2 道题目。所有题目都是前端相关的,HTML + CSS + JS 都会考到,不过不涉及 HTTP。最后一轮的面试官有点特别,他先问了一个很古怪的 CSS 问题,然后又跟我讨论了一个跟前端不相关的编程问题。之所以说他那个 CSS 问题古怪,是因为在现实中大家都不会那样写 CSS,但他写出来了问你会显示成怎样,不是非常熟悉 CSS 标准细节的人又很难完全答对(我也有答错了的地方)。至于第二道题,他说他是突发性想出来的,他自己也不知道最优解是什么,就是想跟我讨论一下能够如何优化,我就跟他讨论了几种可能的优化方式。所有他又说如果把常数 k 改为可以变成任意大的 n 怎么办?我就说 n 的问题能够分解为 n/2 的问题,因此能够通过二分法来优化。

通常情况下,如果由于面试而进入一家公司的话,HR 所做的只是把你从 A 地带到 B 地,保证你顺利完成面试。如果是朋友带你参观公司则会很不一样,他会带你去看有特色的东西,并且告诉你这个好玩那个有意思。Facebook 的 HR 给人的感觉更像是后者,她向我介绍 Facebook 墙上的涂鸦,带我去天桥上看 Hacker Square 全貌,并且告诉我每次 hackathon 开始时大家就会聚集到 Hacker Square 上来。除了 HR 以外,也有一些面试官会提及他们喜欢的 Facebook 特色。这让我觉得 Facebook 里面还是有不少员工挺喜欢这家公司的。

面试结束后,HR 跟我聊了一下,告诉我如果有 offer 的话接下来会需要什么。根据之前 Google 面试的经验,我猜 Facebook 会不会也要我提交一大堆的材料,HR 说只要提交申请签证所需的学位证就可以了。之后 HR 让前台帮我叫出租车,在等待的过程中前台还很好人地问我是否需要拿喝的,需要的话可以在大堂冰柜里面拿。

随后的周末是美国的亡兵纪念日,周六到周一连续放假三天,我则利用这个长周末去参加湾区的各种好友聚会。周一中午 HR 打电话来说要发 offer 了,待细节确定后下午再打电话给我告诉我具体的数字有多少。我当时就在想,难道 Facebook 的面试官和 HR 周末都工作?这个效率很高呀。只要面试官稍微拖一下,周五的面试就必须等到下周才能有结果。而且确定 offer 细节估计也要经过几个人审批吧,节假日发 offer 就意味着大家都要在节假日处理工作了。

总体上来说,Facebook 面试过程中对候选人的关怀做得很好,效率也不错。让我「大开眼界」的是面试题,原来真正好的面试题并不在于它有多难,而在于它有多简单,简单到熟悉这个领域的人一下子就明白到你在说什么以及想问什么。能够进入 Facebook 的人应该都觉得面试不难,至少跟中国的面试对比起来如此,那是因为 Facebook 把觉得面试有点难的人都过滤掉了,而中国那些很难的面试反而没什么区分度。

======带个自私自利的小AD=========

欢迎向DoNews投递关于互联网业界的热点类、观点类、趣点类、分析类、爆料类稿件。地址:tougao@donews.com

转载请注明DoNews新锐作者/陈广琛

Tags: ,,.
08月 22, 2012

文/DoNews社区作者 陈广琛

前面两篇文章提到了 GoogleMicrosoft 的面试体验,可惜都没有 offer,接下来说说有 offer 的。

考虑到我已经在 Google 和 Microsoft 的招聘流程当中了,于是我也让 Yahoo 的同学帮我内部推荐一下,试试 Yahoo 的面试如何。本来没想着很正经地面,不过最后拿到了 offer,所以才有了我之前那篇文章所说的「越是放松越能成功」。

Yahoo 一开始并没有什么 HR 沟通和预约,某一天我从百度下班回家正准备做饭就接到面试官电话。我开头以为他想要跟我约时间,结果他问我是否方便进行面试。我当时毫无准备不是很想面试,不过既然室友可以做饭那面试一下也没什么所谓。Yahoo 的面试不像 Google 那样有很明确的规范,所以每一轮的面试官喜欢怎么面试就怎么面试。第一轮的面试官问了很多很基础的问题,每一道题考一个基本的知识点,例如某个 CSS 属性的取值,或者是 HTTP 的状态码。这些问题基本上不需要任何的解题能力,知道就知道,不知道也没办法。前端的基础知识我都知道,所以这对我来说没什么难度,只是感觉自己被人当 wiki 来查而已。

Yahoo 的面试让我感到舒服的一个原因是,它有前端工程师职位,所以不需要强行用后端工程师的标准来衡量我。在通过第一轮电话面试后,HR 终于出现了,跟我约了一个下午的面试时间。我问她要具体的时间安排,跟 Google 和 Microsoft 不一样的是,她说没有具体的面试安排,预计我的面试需要占用整个下午,所以请我预留整个下午的时间。这是让我感觉安排不够严谨的地方,后来才知道因为有多个不同的团队想要面试我,所以从一开始就给我安排了更多轮的面试,让不同团队的人都有机会来面试我。

我在 Yahoo 办公室一个下午的面试见了 4 位工程师,其中包括 1 位经理。因为 Yahoo 的经理也跟大家一起写代码,所以我也把他算作工程师。每一位面试官面试的风格都不一样,不过都涉及写代码解题。最后经理进来的时候给我带来了一罐 Diet Coke,除了让我写代码外,他还让我打开现有 Yahoo 产品的页面查看源代码代码,然后问我有哪些地方做得不够好以及如何能够改进。

在面试的过程中,我很明确地向经理表示我希望能加入一个多元化的团队,跟来自不同国家不同背景的人合作,最好有机会到美国出差工作一段时间。经理表示,既然我想要跟美国团队合作,他可以额外安排美国的同事跟我面试一下。我的理解是,到这里我就相当于已经有了口头 offer,不过有机会跟美国同事聊一下那就聊一下咯。

因为对方在 Miami,中国的上班时间正好是他的下班时间,所以面试只能约在中国上班的前一个小时。我早上 8:50 到 Yahoo 办公室后,不仅仅 HR 还没到,连前台都还没上班。9:00 前台上班,过了一会儿 HR 才来把我带到视频会议室。在 IT 帮忙调试半个小时后,确认视频用不了,只好降级为电话会议。Miami 那边的同事很认真地把问题分作 HTML、CSS 和 JavaScript 三部分来问,半个小时自然聊不完,但他的下班时间到了,只好跟 HR 说明天继续。结果第二天还是同样时间去 Yahoo 办公室通过电话会议聊了一个小时。

由于 Yahoo 知道我在等 Google 的结果,所以 HR 在电话口述 offer 给我听后,告诉我 offer 的邮件先不会发出来,因为发出来我就必须在指定的天数内接受,否则系统就会自动取消 offer。我觉得这还是挺人性化的。Yahoo 的面试安排规范化程度看起来没有 Google 和 Microsoft 那么高,随意性比较大。当然,这样做的好处是灵活性也大一些,经理和 HR 可以按照自己的需要做一些特殊安排。

《面试体验》系列文章就只剩下 Facebook 那一篇了,我承诺我一定会把它完成,但可能要经过一段时间后我才会把它发表出来,所以建议大家订阅我的博客,或者是在 Twitter 上 follow @CatChen。此外,我的博客也接受捐赠,通过信用卡支付,金额随意($1 起)。

最后是广告一则:如果有任何曾经参加过豌豆荚(豌豆实验室)面试的人愿意写类似的面试体验文章,欢迎联系我并把文章地址发给我,我愿意在我的博客上以链接的形式进行分享。

======带个自私自利的小AD=========

欢迎向DoNews投递关于互联网业界的热点类、观点类、趣点类、分析类、爆料类稿件。地址:tougao@donews.com

转载请注明 DoNews社区作者/陈广琛

Tags: ,.
08月 16, 2012

文/DoNews社区作者 陈广琛

在上一篇《面试体验:Google 篇》中说到,我对猎头的标准回复是「有美国或者香港的职位吗?」在进入 Google 招聘流程后,Microsoft 有一位 HR 打电话来跟我说有一个北京的职位跟美国总部会有密切的合作,问我有没有兴趣。我当时想的是,如果加入美国公司的中国分公司,或许将来有机会 relocate 到美国去,至少会有去总部出差的机会吧,所以就决定去试试。

HR 在联系我之后,招聘经理 Alex 直接联系我跟我约了晚餐时间。晚餐其实不是什么面试,只是互相了解一下。Alex 原本在 Microsoft 总部工作,只是碰巧他来北京轮岗 3 个月,有候选人申请职位他自然也乐意见见面。至于这个跟美国密切合作的项目,总监和一半的成员在美国,中国这边已经有几个人但还要多招几个。

Alex 在晚餐中教会我一件最重要的事情是:什么叫做 「commodify 工程师」。所谓的「commodity」是指无差别的一般等价物,例如按桶算的原油就是这样子,无论中东产的还是中国产的都一样。在说原油价格一桶多少钱时,我们并不会关注到底是哪里产的,因为价格差不多,使用起来也没有区别。因此「comodify 工程师」就是把工程师当做一般等价物看,无视其人性和个性,把工程师看做无差别的人力资源单位,哪个项目缺多少人力资源单位,就为它补充多少人力资源单位。他帮助我意识到我不满的百度现状是什么,同时也支持我要换一家公司并找机会到美国工作的想法。

之后 Alex 帮我约了一轮电话面试,面试官是印度人。他问了我两道问题,一道比较简单写代码就能解决的,另一道则是分布式系统设计相关的,我全无经验只能说说我知道的概念。我感觉后面这一道题回答得不是很好,因为总是没办法说到点上,同时也不像算法题面试官给些提示就能向前推进。事后证明这一轮面试的反馈确实不是很好。

随后 Alex 又约了我到 Microsoft 办公室进行一天的面试。早上到了之后他先让我参加了当天的 daily scrum,让我知道他们是如何工作的。接着是跟美国的总监通过电话会议进行面试,没有讨论技术问题,更多的是互相了解对方的工作方式,看看双方是否合适。接下来是跟北京这边的经理面试,因为团队在北京没有专门的经理,所以人事方面的事情就交由北京的经理负责。看到经理 Norman 的姓后,我就知道他是说粤语的,同时因为他一开始就说自己普通话不是很好,所以我就提议说不如我们说粤语吧,于是我就在 Microsoft 一天面试当中用到了英语、粤语和国语。Norman 问了基础的算法题和逻辑题,也聊了一下分布式存储的设计,同样我对后者回答不上什么点来。感觉 Norman 的题目很重视逻辑思维,在我说某一道基础算法题不能用贪心算法后,他问我使用贪心算法的充要条件是什么,同时另外一道逻辑题考的也是是否清楚充要条件是什么。

在 Norman 面试之后,他叫上 Alex 跟我一起去午餐,然后下午我跟中国这边的团队成员聊聊天了解一下他们的工作内容就完事了。整个过程并不是很难,也不会像 Google 那样专门考算法。感觉 Microsoft 更重视逻辑多一些,同时跟美国团队进行面试也确实比跟中国团队进行的面试要让人更舒服一些。(Alex 和 Norman 分别是在 Microsoft 总部和湾区工作多年的人,所以面试风格应该都还是很美国的。)我下午离开的时候,口头 offer 算是出来了,HR 在电话中说很高兴招到了人,并让我提交当前的薪酬信息。

由于快到过年了,提交薪酬信息的事情我一拖就拖了两个星期,过年回来后才提交。事后 HR 跟我说,进行第一轮面试的印度人对我不熟悉后端这一点表示有顾虑,其它人尝试说服他但是没有成功,所以 offer 出不来了。于是这个到手的口头 offer 就飞走了。

事实上,我在 Microsoft 的面试经历到此只不过是进行了 1/3,不过后面的我就不想详细说了。在我过年回广州放假的时候,有一位 Microsoft 的 HR 打电话给我问我面试时间安排的事情,我说面试不是结束了吗,然后才发现这是另外一个团队的 HR,并且她不知道我之前的面试,于是我又面试了一个不同的团队。因为前面所说的口头 offer 最终发不出来,Norman 把我推荐了给另外一位经理,那位经理又约了我进行了几轮面试。

总的来说,我在 Microsoft 的面试经历就是不停地被加试。加试意味着还不能确定,但又还不想放弃。不确定的原因自然是我没有后端经验,不放弃的愿意估计是算法题和逻辑题我回答得还可以。最终我在 Microsoft 的 3 个团队中面试了 15 位工程师和 2 位 HR,还是拿不到 offer。Microsoft 的面试过程尽管没有 Google 那么体贴,但是安排还是挺专业的。因为 Microsoft 是各个招聘经理自己去招人,不像 Google 那样公司统一招聘,所以推动招聘进度的更多是招聘经理而非 HR,候选人也能直接感受到招聘经理到底有多在乎自己。

在整个 Microsoft 面试过程中,我觉得最有收获的是认识了 Alex 并且跟他聊了一些事情。我说如果有机会的话我想要体验一下在美国工作生活是什么样子的,然后才能知道我想要到哪里去。他帮我分析说去美国有 3 种途径:读书然后在美国找工作、加入美国公司的中国分公司后再找机会 relocate、直接加入美国公司,其中第一种方法最容易,第三种方法最难。他的首选建议是第一种方法,不过因为我短期内没有去美国读书的计划,所以第二种方法也不错。我觉得作为 mentor 最重要的是他要真的在乎你的个人发展,同时能够利用他的经验帮助你,因此我觉得 Alex 会是个很好的 mentor。在我加入豌豆荚后,他还联系过我,说 Microsoft 总部他所在的团队有职位开放,问我是否感兴趣。因为我当时刚刚加入豌豆荚,所以就拒绝了。

如果你对《面试体验》系列文章感兴趣,欢迎订阅我的博客,或者是在 Twitter 上 follow @CatChen。我承诺我接下来一定会完成 Yahoo 和 Facebook 相关的两篇文章。此外,我的博客也接受捐赠,通过信用卡支付,金额随意($1 起)。

最后是广告一则:如果有任何曾经参加过豌豆荚(豌豆实验室)面试的人愿意写类似的面试体验文章,欢迎联系我并把文章地址发给我,我愿意在我的博客上以链接的形式进行分享。

DoNews社区作者/陈广琛

Tags: ,,.

Welcome to DoNews Blog. This is your first post. Edit or delete it, then start blogging!