面试完之后有三个讲座,第一个讲座介绍了 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 好。
Hulu
Hulu 是这几个公司里唯一一个我没有找人内推而拿到面试机会的,也是面试体验最好的一个公司。Hulu 和 Twitter、Zynga、Foursquare 等公司一样,用了 jobvite 接受和追踪职位申请。因为是申请的第一家公司,我在申请 Hulu 时的 cover letter 写得很详细,针对职位需求上的每一条都写了我的相关工作经验,这也许是最后能拿到面试机会的原因吧。其他公司的 cover letter 都写得很简单,短短两段就结束了。
Hulu 的第一轮电面和其他公司的有些不同。45 分钟里要做四个题。面试官提前十分钟发了一封邮件给我,上面有两段代码。第一段代码是一个检查两个字符串是否是 anagram 的程序,写得很绕而且性能很差。面试官先问我这段代码的用途,然后问有什么方法优化,并要求我把代码写在 titanpad 上。接着他问了我第二段代码是做什么的。第二段代码也写得有点复杂,不过可以看出是一个检查有向图里面是否存在环的程序。
然后是设计题,要求设计一个 LRU Cache,只要说出接口、用到的数据结构和大致的算法就可以了,我想了个用一个 LinkedList 和一个 HashMap 的方案。
第四题还是代码题,写一个合并两个有序链表的程序。
面完后还有点时间,我们就聊了聊。面试官是在 Hulu 做支付的,主要用的语言是 Scala(Hulu 里面各个团队用的技术都很自由,可以选择自己喜欢的语言开发,Python Ruby C# Java 都有)。我当时正好在字节社做 iOS 上的应用内购验证,就问了他有没有处理黑卡坏账方面的经验。可惜 Hulu 在 iOS 上只有订阅方式的支付途径,没有 non-consumable product 的相关经验。
面完后 HR 给我安排了第二轮电面。面试官来自法国人,是 FFmpeg 的维护者之一。面试官看我简历上有星际比赛的奖项,还当过校队的队长,就和我聊起了星际2的平衡性。接着说到最近的虫群之心 beta,他觉得改动没有当年母巢之战的有意思,因为前期的改动不大。
聊了二十分钟的星际2后才切入正题,coding 题很简单,就是在一个数组里找出两个数,使得他们和为给定的数。写完这个最基本的版本后还有些别的变化,比如如果所有的数都是一定范围内的正整数,这时可以用一个数组统计每个数字的出现频率。
二面结束后等了三星期还没有消息,不知道是默拒了还是 HR 忘了。三星期后我又写了封信询问我的二面结果,HR 回信说欢迎我去他们公司 onsite 面,之前校招忙把我忘了。
Hulu 的总部在洛杉矶,Santa Monica 附近,离海滩只有几公里的路程。一进面试的会议室就看到白板上写着「Welcome Yuanxuan to Hulu」,一下子对这个公司充满了好感。
Hulu 的 onsite 面试题是面过的几家公司里最难的,一共有四轮。前三轮由来自内容团队、API 团队和架构团队的工程师面试,最后一轮的面试是 CTO 亲自面的。题目也是涵盖了算法、设计和实际的编码,有一轮的问题从设计一个分布式系统开始,讨论了这个系统的身份验证、数据分片、原子性、容错等问题的设计,考察了很多细节的地方,最后还让我写了 SQL,以及如何优化这些查询指令。不过我对 SQL 很不熟悉,每次用都要查手册,当时用了 ActiveRecord 的查询接口代替。
CTO 面完后 HR 进来问了我有没有其他公司的 offer,接着带我逛了一圈 Hulu 的工作场所。Hulu 总部只有 40 位左右的工程师,大家相互之间都很熟,气氛非常好,也比较自由。逛完后 CTO 带我出去买了杯咖啡,在回来的路上给我发了 offer。Hulu 的 package 和 Facebook 的在数额上差不多,但是因为公司性质的问题没法发股票给我,只能用相近的奖金代替。
回到公司后,CTO 问我对哪个团队比较有兴趣,我说如果我最后签了 Hulu 的话应该会想去做后端。HR 就安排了这个团队的工程师和我一起出去吃晚饭,还给了我两张 voucher 用于支付回去的出租车。当时因为觉得去 Hulu 可能性不大,觉得对方这么热情实在不好意思,可是还是推脱不掉,只得跟着他们去了附近一家餐厅。因为 Hulu 主要内容是美剧和电影的,饭桌上讨论的主题也是各种电视剧,还提到接下来 Hulu 可能会搬到附近另一个办公楼。
最后还是没有接受 Hulu 的 offer,虽然对他家印象非常好。一方面我更希望在湾区工作,另一方面小公司吸引人的一个点在于初期的股票,由于 Hulu 没法发股票所以这个优势也就没了。
Twitter 用的也是 jobvite 的招聘系统,我麻烦了一位在里面工作的学姐