五天面试五家硅谷顶尖公司并拿到五个Offer

大佬五天面试五家硅谷顶尖公司,包括领英(LinkedIn),Google,Facebook等,下面是他的求职经验。

原文链接:I interviewed at five top companies in Silicon Valley in five days, and luckily got five job offers

以下属于翻译内容

五天面试五家硅谷顶尖公司并拿到五个Offer_第1张图片

在2017年7月24日至28日的五天中,我面试了LinkedIn,Salesforce Einstein,Google,Airbnb和Facebook五家公司,并获得了所有五个工作机会。

这是一个很好的经历,我感到幸运,我的努力得到回报,所以我决定写一些关于它的事情。 我将讨论我如何准备面试,并分享我对五家公司的印象。

开始

我已经在Groupon工作了将近三年。 这是我的第一份工作,我一直在和一个惊人的团队合作,并且在一个令人敬畏的项目中。我们一直在制作酷炫的东西,在公司内部发挥影响力,出版论文等。但我觉得我的学习率正在退化(阅读:放慢),但我的心灵渴望更多。 作为芝加哥的软件工程师,也有很多在湾区的伟大的公司吸引了我。生活短暂,职业生涯更短。 在和老婆讨论并得到她的全力支持之后,我决定采取行动,所有就有了我的第一次职业变化。

准备

虽然我对机器学习职位感兴趣,但五家公司的职位在头衔和面试过程中略有不同。

三个是机器学习工程师(LinkedIn,Google,Facebook),一个是数据工程师(Salesforce),一个是软件工程师(Airbnb)。 因此,我需要准备三个不同的领域:编程,机器学习和系统设计。

既然我也有一个全职工作,我花了2-3个月的时间准备。 下面是我为三个方面做的准备。

编程

虽然编程面试不能完全反应一个人的综合能力,但是我们也必须承认没有更好的方法在短时间内判断一个开发人员的能力了,所以对于编程需要进行一些必要的练习。

我主要使用Leetcode和Geeksforgeeks进行练习,但是Hackerrank和Lintcode也是很好的地方。 我花费了几个星期的时间来研究常见的数据结构和算法,然后重点关注我不太熟悉的领域,最后做了一些常见的问题。 由于我的时间限制,我通常每天做两个问题。

下面是一些心得:
1. 大量练习,没有捷径。
2. 我并没有做完Leetcode上的600个问题,我大概做了70道题,感觉这对我已经足够了,我认为如果70个题对你没有作用,可能是你的方法不对,这样的话,做700个题也不会有作用的。
3. 先从最难的题目开始,那么后面的都会越来越简单
4. 如果一个题需要花2个小时以上,请直接去看答案。因为再花更多的时间可能不值得。
5. 解决一个问题,请查看答案,我经常感叹一些答案的智慧之处,特别是某一行python代码。
6. 使用你最熟悉的语言,这样你可以轻松的向面试官解释。

系统设计

这个领域与实际工作经验更为密切相关。 系统设计面试期间可能会提出许多问题,包括但不限于系统架构,面向对象设计,数据库架构设计,分布式系统设计,可扩展性等。
网上有许多资源可以帮助您准备。 在大多数情况下,我阅读有关系统设计面试,大型系统架构和案例研究的文章。

下面有一些我发现的一些有很大帮助的资源:

  • What? Interview coaching from Googlers!
  • Pragmatic Programming Techniques
  • What are system design questions?
  • scalability
  • Software Architecture
  • highscalability

虽然系统设计访谈可以涵盖很多话题,但是有一些宏观的指导方针来解决问题:
1. 首先了解要求,然后布置高级设计,最后深入了解实施细节。 不要立即跳到细节,而不用弄清楚要求是什么。
2. 没有完美的系统设计。 根据需要做出正确的权衡。

总而言之,系统设计面试的最佳实践方式是实际坐下来设计系统,即您的日常工作。 而不是做最小的工作,更深入地使用您使用的工具,框架和库。
例如,如果您使用HBase,而不是简单地使用客户端运行一些DDL并执行某些获取,请尝试了解其整体架构,例如读/写流程,HBase如何确保强一致性,哪些次要/主要压缩 ,并且在系统中使用LRU缓存和Bloom Filter。您甚至可以将HBase与Cassandra进行比较,并了解其设计的相似之处和差异。 那么当你被要求设计一个分布式的键值存储时,你不会感到突然脑子一片空白。

许多博客也是一个很好的知识来源,例如Hacker Noon和一些公司的工程博客,以及开源项目的官方文档。
最重要的是保持你的好奇心和谦虚。 要成为成为吸收一切知识的海绵。

机器学习

机器学习面试可分为理论和产品设计两个方面。

除非您在机器学习研究方面有经验或在您的ML课程中做得很好,要不然的话阅读一些教科书会很有用。如统计学习和模式识别与机器学习的要素,古典的选择是很好的选择,如果您对特定领域感兴趣,可以阅读更多内容。确保您了解基本概念,如偏差方差折衷,过拟合,梯度下降,L1 / L2正则化,贝叶斯定理,bagging/boosting,协同过滤,降维等。熟悉贝叶斯定理等通用公式,以及流行模型的推导,如逻辑回归和SVM。尝试实现简单的模型,如决策树和K均值聚类。 如果你把一些模型放在你的简历上,确保你彻底了解它,并且可以评论其优缺点。

对于ML产品设计,了解构建ML产品的一般过程。 这是我试图做的:

  1. 找出目标是什么:预测,推荐,聚类,搜索等
  2. 选择正确的算法:监督vs无监督,分类vs回归,广义线性模型/决策树/神经网络等。能够推理选择。
  3. 根据可用数据选择/工程相关功能。
  4. 选择模型性能的指标。
  5. 或者,可以提出如何优化生产模型。

在这里,我想再次强调,继续保持好奇和学习的重要性。 尽量不要仅仅使用Spark MLlib或XGBoost的API来完成调用,而是尝试了解为什么随机梯度下降适用于分布式训练,或者了解XGBoost与传统GBDT的区别。 它的损失函数有什么特别之处,为什么需要计算二阶导数等。

面试过程

我首先回答了人力资源部的LinkedIn上的消息,并要求转介。 在一个摇滚明星创业公司失败的尝试之后(我稍后会谈到),我准备好了好几个月,在招聘人员的帮助下,我在湾区安排了一个星期行程。 我星期天飞行,被世界上一些最好的科技公司的约30位面试官面试了五天,非常幸运地得到了所有五个工作机会。

电话面试

所有电话面试都有标准配置。 唯一的区别是持续时间:对于像LinkedIn这样的一些公司是一个小时,而对于Facebook和Airbnb是45分钟。

熟练程度是这里的关键,因为你是在时间枪下,通常你只有一次机会。您必须非常快速地识别出问题的类型并给出高级解决方案。确保要跟面试官谈谈你的想法和意图,这可能会让你在一开始冷静下来,但沟通比任何事情都重要,在面试中会很有帮助。不要背诵解决方案,因为面试官几乎肯定会看到它。

对于机器学习职位,一些公司会问ML问题。 如果你正在面试,那么确保你展示出你的ML技能。

为了更好地利用我的时间,我在同一个下午安排了三个电话面试,每个时间间隔一个小时。 有利的是,你可能会受益于热手,缺点是如果第一个不顺利,后一个面试会受前面结果到影响,所以我不推荐给所有人。

同时与多家公司进行面试的好处之一是它给您一些优势。因为我只在一个电话面试的情况下就去LinkedIn和Facebook现场面试,所以我能够跳过Airbnb和Salesforce第二轮电话面试。

更令人惊讶的是,Google甚至让我完全跳过他们的电话面试,并安排我的现场面试。 我知道这会非常累,但没有人会去拒绝Google现场邀请!

现场面试

LinkedIn

五天面试五家硅谷顶尖公司并拿到五个Offer_第2张图片
这是我第一个到他们Sunnyvale办公室现场的面试。办公室很整洁,人们看起来也很专业。

会议每个会议一小时。 编程问题是标准的,但ML问题可能会有点困难。 也就是说,我收到了我的人力资源部的电子邮件,其中包含了非常有用的准备材料,最后我没有看到任何令人惊讶的事情。 我听说谣言说,这里有硅谷最好的饭菜,而从我所看到的,如果不是真的反而就奇怪了。

微软的收购似乎已经解决了LinkedIn的财务负担,并把他们解放出来去做真正酷的事情。视频和专业广告等新功能是令人兴奋的。作为一家专注于专业发展的公司,LinkedIn把自己员工的成长摆在了优先考虑的位置。许多团队,如广告相关性和新闻流排序组都正在招兵买马中,所以如果你想加入的话,赶紧行动起来。

爱立信Salesforce

五天面试五家硅谷顶尖公司并拿到五个Offer_第3张图片
摇滚明星项目由摇滚明星队。团队很新,感觉很像创业公司。该产品是建立在Scala堆栈,所以类型安全是一个真正的事情在那里!2011年芝加哥Scala Days的Matthew Tovbin和2017年Spark Summit西部的Leah McGuire在Optimus Prime图书馆上进行了很好的交谈。

我在Palo Alto办公室采访了。团队具有凝聚力的文化,工作生活的平衡很好。每个人都对他们正在做的事情充满热情,真的很喜欢。与其他现场采访相比,四场比较短,但我希望能够停留更长时间。面试后马修甚至带我散步到惠普车库:)

Google

五天面试五家硅谷顶尖公司并拿到五个Offer_第4张图片
绝对是行业的领导者,没有什么可说的,人们还不知道。但它是巨大的 ,真的,真的很大。我花了20分钟骑自行车去见我的朋友。食物也非常好。永远是开发人员的好地方。

在山景校区的许多建筑物之一面试了我,我不知道哪一个是因为它是巨大的。

我的面试者都看起来很聪明,一旦他们开始说话,就显得他们更聪明。与这些人一起工作是非常愉快的。

有一件我对Google面试特别感兴趣的是对算法复杂度的分析是非常重要的。确保你真正了解什么是大O符号意味着什么!

Airbnb

五天面试五家硅谷顶尖公司并拿到五个Offer_第5张图片
快速扩张独角兽,拥有独特的文化,可以说是硅谷最美丽的办公室。经验和餐饮预订,高端利基市场,中国扩张等新产品都有前景。完美的选择,如果你是风险宽容,并希望快速增长,上市前的经验。

Airbnb的编码面试有点独特,因为您将在IDE中进行编码而不是白板编程,因此您的代码需要编译并提供正确的答案。一些问题真的很难。

他们也有独一无二的跨职能面试。这是Airbnb如何认真对待文化,技术上优秀并不能保证工作机会。我和面试官进行了休闲的对话,我们都在会议结束时感到高兴。

总的来说,我认为Airbnb的现场是最难的,因为问题的困难,持续时间更长,独特的跨功能访谈。如果您有兴趣,请务必了解他们的文化和核心价值。

Facebook

五天面试五家硅谷顶尖公司并拿到五个Offer_第6张图片

与Google相比,另一个仍然快速增长,并且规模更小,更快节奏的巨头。随着其产品线主导社交网络市场和对AI和VR的大量投资,我将来只能看到更多的Facebook增长潜力。像Yann LeCun和Yangqing Jia这样的明星,如果你对机器学习感兴趣,这是一个完美的地方。

我在20号在那个屋顶花园和海景房面试,扎克伯格办公室所在的地方。

我不知道面试官是否得到指示,但是我没有明白我的解决方案是否正确,尽管我相信他们是正确的。

中午之前,前四天开始着凉,我头疼了。我坚持在下午的会议中,但觉得我根本没做好。我有点惊讶地发现我也收到了他们的报价。

一般来说,我觉得人们相信公司的愿景,并为他们正在建设的事业感到自豪。作为一个拥有半万亿市值的公司,Facebook的发展是Facebook发展的理想场所。

谈判

这是一个很大的话题,我不会在这篇文章中介绍,但我发现这篇文章是非常有帮助的。

重要的事情:
1. 要更专业
2. 了解你的长处和短处
3. 对团队和项目有真正的兴趣。
4. 保持你的耐心和信心。
5. 强硬但礼貌。
6. 不说慌

Databricks的面试失败

有的成功都从失败开始,包括面试。在我开始面试这些公司之前,我五月份在Databricks的面试中失败了。

早在四月,仙瑞通过LinkedIn与我联系,问我是否对Spark MLlib团队感兴趣。我非常激动,因为1)我使用Spark和爱Scala,2)Databricks工程师是一流的,3)Spark正在彻底改变整个大数据世界。这是我不能错过的机会,所以我几天后开始面试。

酒吧非常高,过程相当长,包括一个预面试问卷,一个电话面试,一编程任务和一个完整的现场面试。

我的采访者非常聪明但同样谦虚。在采访中,我经常觉得被推到极限。直到一场灾难性的会议,由于技能和准备不足,我完全搞砸了,结果是一场失败。仙瑞非常善良,走到我面前结束的地方,真的很喜欢跟他说话。

我几天后得到了拒绝。这是预期的,但是我感到沮丧的几天。虽然我错过了在这里工作的机会,但我衷心希望他们继续取得更大的影响和成就。

后记

  1. 生命短暂。职业生涯更短。在正确的时间做出正确的选择。
  2. 面试不仅仅是面试。他们是网络和交友的完美时间。
  3. 总是好奇和学习。
  4. 谈判对于工作满意度很重要。
  5. 获得工作报价只意味着您符合最低要求。没有最高要求。不断变好

从5月份的第一次面试到9月底终于找到了工作机会,我的第一次职业变化是漫长而不容易的。

我很难准备,因为我需要在现在的工作中保持良好状态。几个星期以来,我正在准备面试准备到上午1点,在第二天上午8:30起床,并全心全意地投入到工作的另一天。
五天内五家公司的面试也是非常紧张和有风险的,我不建议这样做,除非你的时间表非常紧张。

我要感谢我耐心地跟我走过这个过程的所有招聘人员,花时间和我交谈的人,以及所有给我机会面试和扩大我的机会的公司。
最重要的是,最重要的是,我要感谢我的家人的爱和支持 - 我的父母看着我采取了第一步,每一步,亲爱的妻子为我所做的一切,和我的女儿为她变暖的微笑。

Xiaohan Zeng
10/22/17

你可能感兴趣的:(面试经验)