编译:周家乐、小蒋、Aileen
能在硅谷顶尖公司工作是每个行业人士的梦想。这位作者在2018年8月13日至8月20日的六天内,分别于LinkedIn、Yelp、Apple、Amazon、Facebook和Google进行了面试,获得了全部六份工作邀约!
他并非出身名校,不自认为是大神,甚至可以说基础知识非常缺乏,但持之以恒的学习和总结帮他拿到了心仪的工作。获得一份dream job并不是那样遥不可及。他在自己的博客上与我们分享了自己准备面试的经验和教训。开工第一天,一起来看看!
从去年开始,我就在计划跳槽的事情。由于不想在全美国来回飞,所以我决定把所有的面试安排在一起,把它们一次都解决掉。
虽然我面试的是移动应用方面的职位,但对于其他领域的职位,相关的研究方法、技巧和建议应该是通用的。
希望我能激励那些和我一样,对现在的工作不是非常满意,对硅谷的生活抱有梦想,但在“学习准备”方面却严重缺乏的朋友们,放手去试试看吧!
简介和一些数字
我知道我想在硅谷找到一份可以使我在通讯移动行业快速成长的工作。我以前在初创公司工作过,我很喜欢初创公司的体验招聘面试技巧方面的书,但出于一些原因,这次我想去一个大公司。
我不确定自己想在哪里工作,也不确定自己能获得多少报酬。但是我知道,我不想再像大学毕业时那样海投100多个申请了。
我共计申请了20家公司,被其中4家公司(Reddit、Nest、Stripe、Uber)明确拒绝。剩下的16家公司中,10家公司没有任何回复(lyft、airbnb、dropbox、instagram、youtube、square、robinhod、twitter、snap、slack)。我获得其余6家公司的进一步面试机会。在这6家公司中,我成功从每一家公司都获得了电话面试,网络面试,以及最终的工作Offer。
回顾我的日历,我的进展大概是:
综上所述,我在73天内接受了46次面试(包括面试之间等待的时间)。这让人筋疲力尽,这意味着连续几周我大部分的午餐休息时间都是面试。我必须很早就开始工作,这样我才能早点离开公司,回家接电话。
一边面试,一边认真完成自己的工作对我来说也是一种挑战,我始终把现在的工作放在第一位,如果两者之间有冲突,我会更改面试时间。我不会请假去面试的。因为这会让人看起来很不敬业,如果没找到新的工作,还会给原来的单位留下坏印象。
六家公司的整体印象(按照面试顺序)
我在LinkedIn面试时的的心率图
LinkedIn的移动应用程序实际上相当精巧,它们对开源社区有一些坚实的贡献。在整个与LinkedIn的面试过程中,他们的企业文化和专业技术,都给我留下了深刻的印象。
Yelp
我在Yelp面试时的的心率图
Yelp有一个非常漂亮的应用程序,展现了iOS的许多微妙之处,显示出其对平台的理解。我喜欢面试现场的气氛,他们有一座漂亮的大楼,我很想和我的任何一位面试官一起工作,它比我申请的其他公司小得多,但在所有方面都显示出了它的优秀。整个面试过程很紧密也很快。
Apple
我在Apple面试时的的心率图
Apple曾经是iOS的重要组成部分。我是个狂热的苹果迷(至少从12岁开始)。Mac是我编程的启蒙,iPhone SDK鼓励我构建和发布第一个应用程序。他们邀请我参加面试并给我offer简直不可思议,兴奋喜悦之情难以言喻。
Amazon
我在Amazon面试时的的心率图
我根本不认为亚马逊是一家“移动优先”的公司。不过,这个职位/团队符合我提出的标准。我不喜欢我去面试的帕洛阿尔托大楼,这是一个临时的办公室,之后会搬进Amazon-y大楼,所以这个面试时机不太好。和我交谈的人似乎很专注于他们的产品。虽然每家公司都喜欢告诉我“这真的像一家初创公司!”,但Amazon是最名副其实的。
我在Facebook面试时的的心率图
我在Facebook的最新大楼面试,由于连续五天在睡眠不足的情况下面试,我对面试本身的细节有些印象模糊,但总体上我觉得很棒。我记得我很喜欢和我交谈的人,并且体验了很有洞见的午餐面试。
我在Google面试时的的心率图
我感觉谷歌对这个职位进行了相当“通用”的面试。我在iOS上与谷歌最大的产品之一的许多成员进行了交谈,但我并没有专门为该团队的职位进行面试。在通过谷歌的招聘委员会后,我进入了团队匹配阶段,最终与一个团队匹配。其他公司的面试相比,这是一个非常非常长的过程。
学习计划
说实话,一开始,我大概30分钟内可以完成大部分Leetcode里的"简单"级别的问题(),能够没有时间限制地解决仅仅25%的Leetcode"中等"级别问题。对那时的我来说,解决Leetcode"困难"级别的题目就太难了。简言之,我有很大的基础缺口。
为了学习算法,我首先从《Cracking the Coding Interview》开始。每个星期天早上,我会起床去一家咖啡店,在Objective-C中解决一些问题。一旦我在这本书中做了足够多的问题(我想我解决了大约35个问题),我会在我读过的章节中回顾一些Leetcode问题。这样持续几周之后,我觉得我已经有基础了招聘面试技巧方面的书,然后进入下一个阶段。
随着基础知识的完成,我开始着手学习《Elements of Programming Interviews》,这本书比前一本书要困难得多。这本书使我找到了之后一直坚持的学习计划,其中有一项计划需要四周,我顺利的完成了。在我看来,对着一个人在白板上解释问题或模拟电话面试是至关重要的,不是“非常重要”中的“重要”,而是“至关重要”中的“重要”。在学习时,你应该将其视为绝对要求。或许没有它你也能找到一份工作,但这是我经过实践之后的最佳经验。
如果有人想模拟iOS的电话面试,我很乐意帮助,也许我们可以在时间允许的情况下解决一些问题。除了我以外,还有很多人愿意帮忙。这个过程会很尴尬,但如果不尴尬的话,你也就不需要练习了,不是吗?如果你开始在电话或白板上练习并且觉得有点尴尬,这表明你正在做你应该做的事情:练习。一直练习到不尴尬为止,就成功了。
经过大约一个月的每天持续练习后(每天2-3小时,周末更多),我开始主要做Leetcode的“热门面试题”。我没有把它们全做完,但我做得“足够”多了。准备算法面试的关键是让自己在面试中指出问题,而不必知道如何解决每个问题。因为这是不可能的。在长达一周的现场面试中,我听到的问题对自己来说几乎都是 “新的”,但它们与我见过的问题类似。这也是行业中大多数的发展方向。你也会有很多类似的问题,只不过特定的用例有着特定的约束条件。
热门面试题:
经验教训
我将把我学到的内容以要点形式呈现(不分先后顺序)。下面列出的所有内容都是我相见恨晚的,无论是技术方面的准备还是在日程安排和其他非技术技巧方面。这些内容不是针对iOS的,而是广泛适用于我们行业的所有面试。
结语
差不多就是这样了!这是一次疯狂的旅程,我没有遗憾。我真的,真的希望上述内容可以帮助大家克服困难,找到梦寐以求的工作。如果对iOS方向特别感兴趣,我可以发布一些技巧,所以请评论并告诉我。
其他也许有用的信息:这次跳槽是我大学毕业之后的第二份工作。在我的简历中,只有大约两年半的工作经验,没有任何特别华丽的实习或雇主;我毕业于一所非常小的学校,其招聘会中都没有知名的软件公司;我在4月下旬开始准备,在6月/ 7月开始申请;最后,几个月后,我获得了自己梦寐以求的工作。
我最后再一次推荐CS Career Hackers社区。如果你正在寻找一个地方练习,并想和类似情况下的其他人交谈,请了解一下这个社区。在我签下offer的几个月之后,我才发现它,真的是一个很棒的地方。
祝大家学习愉快!
相关报道:
志愿者介绍