6天之内面试了6个硅谷顶级公司拿下6个offer,我是怎么做到的(上)

Avatar 5月前 ⋅ 432 阅读

概要:导读:作者用6天时间面试了硅谷6大顶级互联网公司,并拿下了6个offer。他是怎么做到的?做了什么样的细心准备,有什么样的经验教训。作者总结了很多,他希望帮到所有在职场中想要跳槽的人申请到心仪的工作。   I interviewed a...

导读:作者用6天时间面试了硅谷6大顶级互联网公司,并拿下了6个offer。他是怎么做到的?做了什么样的细心准备,有什么样的经验教训。作者总结了很多,他希望帮到所有在职场中想要跳槽的人申请到心仪的工作。

 

I interviewed at six top companies in Silicon Valley in six days, and stumbled into six job offers

6天之内面试了6个硅谷顶级公司,磕磕碰碰拿下6个offer

 

 

In the six days* from August 13th to August 20th, 2018, I interviewed at LinkedIn, Yelp, Apple, Amazon, Facebook, and Google and got all six job offers.

在2018年8月13日至8月20日的六天*中,我在LinkedIn,Yelp,Apple,亚马逊,Facebook和谷歌进行了面试,并获得了这6个面试公司的offer。

I didn’t want to fly across the country repeatedly to find my perfect job, so I knew I had to schedule them alongside each other and gut it out.

我不想反复来回在全美飞来飞去面试找工作,所以我得把时间好好规划一下,最好一趟成。

While the roles I was specifically pursuing were mobile positions, the study approach, tips, and recommendations should be universal.

虽然我在找的岗位是移动端,但在求职的研究方法、技巧和建议上,应该也是可以普遍适用于其它岗的。

Hopefully, I can inspire people that were in the same spot as me — not 100% happy with work, dreaming of life in the Bay, but lacking severely on the “study prep” front — to just go for it and see what the future brings their way.

希望这篇文章能激励那些和我处在同一个职场拐点的人 - 不是百分之百满意目前的工作,梦想着到硅谷湾区去生活,但还是缺乏慎重的“学习准备” – 想去试试机会,看看未来会有什么意想不到的收获。

 

Introduction & Statistics

介绍与统计

 

I knew I wanted a job in the Bay Area where I could really grow from a mobile perspective at a larger company. I’ve worked at startups before and I’ve loved it, but for a few reasons, I was looking at the big fish this go-around (in terms of valuation, not strictly team size). I also knew that I wasn’t positive where I wanted to work or how much compensation I’d need to match what I’m making now. I also knew I didn’t want to apply to 100+ places like I did when I was graduating from college.

我想在湾区找到一份工作,这样我就可以从移动端业务开始做起,慢慢在大公司里发展壮大。我以前在创业公司工作过,我其实也很喜欢创业公司,但由于一些原因,我想挑战下这些行业里的大鳄(在估值方面,而不是严格的团队规模)。我其实对能到哪个地方工作,或者对他们能给我多少钱来匹配我现在正在做的东西不是很积极。但我也知道,我可不想像我大学刚毕业那会儿那样,撒出去100多份简历去找工作。

All told, I applied to 20 companies. I was explicitly rejected by 4 of those companies (Reddit, Nest, Stripe, Uber) after applying. Of the remaining 16, 10 companies never responded to me either way (Lyft, Airbnb, Dropbox, Instagram, YouTube, Square, Robinhood, Twitter, Snap, Slack). Math dictates 6 companies followed up with a recruiter screen. Of those 6 companies, I was able to get phone screens with 6onsites with 6, and offers from 6.

总而言之,我申请了20家公司。申请后,我被其中4家公司(Reddit,Nest,Stripe,Uber)明确拒绝。在剩下的16家公司中,有10家公司从未对我做过回应(Lyft,Airbnb,Dropbox,Instagram,YouTube,Square,Robinhood,Twitter,Snap,Slack)。所以,那就肯定只剩下6家公司跟进招聘。在这6家公司中,我获得6个电话面试6个到现场试6个入职通知

Reviewing my Google Calendar, I believe I had (approximately):

  • 7 recruiter screens in 10 days
  • 7 technical screens in 11 days
  • 29 onsite interviews in 8 days
  • 3 follow-up phone interviews

查看了一下我的Google日历,我算了算(大概)接下来的应聘事项安排:

  • 10天内7名招聘人员筛选
  • 11天内7个技术筛选
  • 8天内29次现场面试
  • 3次后续电话访谈

Adding up the above says I had 46 interviews in 73 days (including gaps between each step). It was exhausting and it meant that most of my lunch breaks were just interviews for multiple weeks. I had to start going into work very early so I could leave earlier to take calls at home. Making sure I was still meeting all of my commitments at work was a challenge, too, but I made sure to prioritize that over interviewing, rescheduling when necessary. I wouldn’t phone it in for the purposes of interviewing. It makes you look bad, it’s unethical, and if you don’t get a job, you’re now a lower performer.

盘点以上所有应聘事宜,我需要在73天内接受了46次面试(把误差也算在里面)。听起来就让人筋疲力尽,这意味着我的大多数午休时间都要花在面试上,而且这种状态要持续数周。我必须很早就开始上班,以便我可以提早离开去家里接听电话。在这期间,我还得保证现有的工作都得做完不出乱子,并且还是得优先考虑现有的工作,如果跟面试有冲突,那就调整一下面试时间。工作期间一直接面试电话,会让你看起来很糟糕,而且这也不太道德,如果折腾了半天到最后你没有找到新工作,那你这段时间的表现也会毁了你现有的工作。

 

The Companies, in order

我面试的公司,按照顺序如下:

 

LinkedIn (Sunnyvale, CA)

Link to my heart rate during my onsite (normal resting rate of 60).

现场面试的时候我的心率如下(正常值为60):

LinkedIn’s mobile apps are actually pretty slick and they have some solid contributions to the open source community. I was very impressed throughout the entire interview process with LinkedIn from both a culture perspective and an engineering perspective. They rose the highest on my mental list of iOS Prestige™ from the start of the process until the end.

LinkedIn的移动端应用实际上非常流畅,他们对开源社区有一些坚实的贡献。从文化角度和工程角度来看,LinkedIn的整个面试过程给我留下了非常深刻的印象。从过程开始直到结束,他们在我的iOS Prestige™心仪清单中名列前茅。

 

Yelp (San Francisco, CA)

Link to my heart rate during my onsite (normal resting rate of 60)

现场面试的时候我的心率如下(正常值为60):

Yelp has a really beautiful app with tons of iOS subtleties that show an understanding of the platform. I loved the vibe onsite. They have a beautiful building and I’d love to work with any of my interviewers. They’re much smaller than any of the other companies I applied to and it showed in all of the good ways. It seemed very tight knit and the process moved fast.

Yelp有一个非常漂亮的应用程序,有大量iOS精妙的细节可以让你充分了解该平台。我喜欢现场面试的氛围。他们有一座漂亮的办公楼,我很乐意和采访我的人好好配合完成面试。Yelp比我申请的任何其他公司都要小得多,但它在各方面都有自己的特色。面试似乎非常紧凑,过程进展得很快。

 

Apple (Cupertino, CA)

Link to my heart rate during my onsite (normal resting rate of 60)

现场面试的时候我的心率如下(正常值为60):

Apple’s been an important part of iOS for a while (har har). I grew up an extreme Apple fanboy (since the age of 12, at least). The Mac originally got me into programming. The iPhone SDK encouraged me to build and ship my first app. It was absolutely surreal to have them invite me onsite and later extend me an offer. I don’t know what else there is to say on that front.

Apple已经成为iOS的重要组成部分(呵呵)。我是一个极端的Apple粉丝(至少从12岁开始)。 Mac原本让我参与编程。 iPhone SDK鼓励我构建并发布我的第一个应用程序。然后现在让他们邀请我到他们公司面试,然后给我发offer,感觉跟做梦一样超级不真实。都已经实操了那么多了,我不知道我还能说出什么。

 

Amazon (Palo Alto, CA)

Link to my heart rate during my onsite (normal resting rate of 60)

现场面试的时候我的心率如下(正常值为60):

I wouldn’t consider Amazon a “mobile-first” as a company (at all). This position/team, though, met the criteria I laid out to start. I wasn’t in love with the Palo Alto building I was in specifically, but it’s a temporary office until they move into a more Amazon-y building, so it’s mostly poor interview timing on that front. The people I spoke to seemed pretty dedicated to their product. Although every company loved telling me that “it really feels like a startup!”, it rang the truest at Amazon.

我不认为亚马逊是一个“移动优先”的公司(一点也不认为)。不过,这个职位/团队符合我制定的标准。我并没有爱上Palo Alto他们的办公楼,但那里只是一个临时的办公室,后来他们搬进一个更亚马逊风的办公大楼里,所以这影响了那段时间的面试时间安排。我面试过的人似乎非常专注于他们的产品。虽然每家公司都爱告诉我“我们这儿感觉就像一个初创公司!”,但亚马逊却着实让我有这种在初创公司的感觉。

 

Facebook (Menlo Park, CA)

Link to my heart rate during my onsite (normal resting rate of 60)

现场面试的时候我的心率如下(正常值为60):

I interviewed Facebook’s newest building. I thought it was really cool overall, although I’m somewhat hazy on the details about how the interview itself went because I was on my fifth consecutive day of interviewing with inadequate sleep. I do remember really enjoying the people I spoke with and having a very insightful lunch interview.

我是在Facebook最新的办公大楼里面的试。整体来说真的很酷,虽然我对面试本身的细节有些模糊,因为已经连续第五天面试了,睡眠严重不足。但我确实记得,跟面试官的交流还挺让人享受的,并且我们还弄了一个非常有见地的午餐面试。

 

Google (Mountain View, CA)

Link to my heart rate during my onsite (normal resting rate of 60)

现场面试的时候我的心率如下(正常值为60):

Google, to my understanding, does pretty “generic” interviews for a given role. I spoke to a lot of members from one of Google’s biggest products on iOS, but I wasn’t interviewing for a position specifically with that team. After I passed through Google’s hiring committee I moved on to the team matching phase and ultimately matched up with a team. It’s a very loooooong process relative to the rest of the companies I spoke with, so I definitely had to keep everyone updated on where Google was. I also had to let Google know where I was with everyone else.

据我所知,Google对某些特定岗位的面试安排采用的是一个通用的路子。我与来自谷歌iOS产品线上非常大的一个产品团队的许多成员进行了交谈,但我没有应聘这个团队里的职位。在通过Google招聘委员会的审核之后,我进入了与团队匹配阶段,并最终与一个团队匹配成功。与我面试过的其他公司相比,这是一个非常非常漫长的过程,因此我必须让每个人都了解谷歌处于一个什么样的阶段,而我在工作上当时又是在一个什么样的状态。

 

Study Plan

学习计划

 

To be clear, I was starting from a position where I could probably do most Leetcode Easy problems in ~30 minutes, and I could maybe solve 25% of Leetcode Medium problems with infinite time. Solving Leetcode Hard problems were akin to trying to solve P=NP. In short, I had a large gap to bridge.

我当时是个什么水平么呢,我可以在大约30分钟内完成大部分Leetcode 上的简单问题,我可以在不受时间限制的情况下,解决25%Leetcode Medium上的中等难度的问题。解决Leetcode难题类似于解决P = NP。简而言之,我当时的水平还是差距挺大的。

To study algorithms I began first with Cracking the Coding Interview. On Sunday mornings I’d wake up and go to a coffee shop and grind out some problems in Objective-C. Once I did enough problems in CtCI (I think I solved ~35 problems) I would review a handful of Leetcode problems in the chapters I’d gone over. After a few weeks of this, I felt I had “the basics” down and moved on to my next phase.

为了研究算法,我首先使用Cracking the Coding Interview这本书。星期天早上,我醒来后去咖啡馆,研究Objective-C中的一些问题。一旦我在CtCI中做了足够的题(我想我解决了~35个问题),我会在之前看过的章节中回顾一些Leetcode问题。几周之后,我就觉得我已经在“基础知识”上学习完毕了,可以继续进入下一个阶段了。

With the basics down, I moved on to Elements of Programming Interviews. This book is considerably more difficult than CtCI. The book has recommended study plans that I stuck pretty closely with. I think there was one that planned on four weeks of studying and I got through almost all of it. It is critical, in my opinion, to either whiteboard problems with someone or mock a phone interview with someone. Not critical as in “very important”, but critical as in you should consider it an absolute requirement when studying. I’m sure you can get a job without it, but it’s the single best form of practice I had.

基础知识搞定后,我转到了Elements of Programming Interviews这本书。这本书比CtCI难得多。这本书推荐了适用与我的学习计划。我觉得有一个四周的学习计划就可以把这本书啃完。在我看来,跟别人用白板讨论问题,或跟别人模仿一次电话面试至关重要。虽然这种模拟,在“非常重要”中并不是最重要,但在学习阶段应将其视为必须进行的环节。我相信不这样做你也能找到工作,但这是我建议的最佳的学习方式。

If anyone wants to mock phone interviews for iOS I’d be happy to help out — you may be able to find me on CS Career Hackers and maybe we can work something out, time permitting. If not me, there are plenty of others there willing to help out. It’ll be awkward. That’s the point. If it were natural you wouldn’t need to practice it, would you? If you start practicing on the phone or on a whiteboard and it’s embarrassing or awkward, it’s a sign you’re doing exactly what you should be: practicing. It was pretty awkward for me until it wasn’t, and the practice absolutely paid off.

如果有人想为应聘iOS研发岗进行模拟电话面试,那我很乐意帮忙 - 你可以在CS Career Hackers上找到我,也许我们可以在时间允许的情况下看看怎么来帮助你。如果不是我,那上面也有很多其他人愿意提供帮助。可能会又些尴尬。但这对了。如果真正的面试很自然就能应付过去,那你就不需要练习,对吧?如果你通过手机或白板模拟练习面试,还觉得有些尴尬,那就证明你真的缺乏练习,不练是不对的。对我来说这是很尴尬,但练着练着后来这种尴尬的感觉就没有了,你会发现回报非常大。

After about a month of consistently practicing problems each day (maybe 2–3 hours/day, more on weekends) I moved on to doing primarily Leetcode’s “Top Interview Questions”. I didn’t do them all but I did “enough”. The key to preparing algorithm interviews is to get yourself to a point that you can figure out a problem during the interview, not necessarily to know how to do every problem. That’s impossible. Almost all of the questions I heard over my week of onsites were “new” to me yet similar to questions I’d seen. That’s how most development goes in the industry, too. You have a lot of similar problems but your particular use case has special constraints.

大约经过一个月的时间,每天持续练习(可能每天2-3小时,周末更多),我开始继续做Leetcode上面的“热门面试问题”。我没有全做完,只做到我觉得足够为止。准备算法面试的关键是让自己达到一个点,那就是,你可以在面试中找出问题,而不一定知道如何解决每个问题。知道如何解决每个问题也是不切实际的。在面试的一周内,几乎所有我听到的问题对我来说都是“新的”,但有些问题我的确似乎见过。整个行业的发展也是这个逻辑。你有很多类似的问题,但适合你的使用案例有它自己的约束和限制。

 

Lessons Learned

得到的经验

 

I’m going to present a bunch of lessons I learned as bullet points in no particular order. Everything listed below is something I wish I knew beforehand, both in terms of preparation on the technical side and in terms of scheduling and other non-technical tips. These lessons are not iOS-specific and I’d imagine are generally applicable to all interviews in our industry.

我将把我学到的一堆经验教训都一条一条都告诉大家。下面列出的所有内容都是我希望我能事先知道的,无论是在技术方面的准备,还是在时间安排和其他非技术方面的问题。这些经验不是仅仅针对iOS研发工程师的,我认为这些经验适用于我们这个行业的所有面试。

  • Stick with it. When I was looking for a job out of school I gave up after one or two weeks of studying. I reasoned that I simply was not cut out to learn the stuff. There was minimal progress from when I first started for weeks, so what was the point of wasting any more time? This time around, I figured I didn’t have a choice. Eventually, things started falling into place. It’s a lot of work, but the willingness to learn is what separates successful candidates from the rest.

  • 坚持下去。当我离开学校到外面找工作时,在学习了一到两周后我就放弃了。我当时觉得我根本不是学这些东西的料。刚开始学的时候收效甚微,那我就想我学这些东西的意义在哪里?简直是浪费时间。在那个时候,我其实也没有其它选择,只能硬着头皮学。最终,事情开始有了起色。要学的东西是很多,但有意愿去学,是可以让自己与不成功的应聘者区别开来的分水岭。
  •  
  • Practice is almost everything. You certainly need a baseline of innate ability, but practice (i.e. learning) can fill in very wide ability gaps. Companies don’t hire people based on the knowledge they were born with. They hire those that can perform their duties and perform them well, regardless of where/when they cultivated the knowledge.
  •  
  • 实践几乎无处不在。你当然需要有自身内在的能力做为基础,但实践(即学习)可以填补非常广泛的能力差距。公司不会根据人们天生的知识构成雇用员工。他们会愿意雇用那些能够履行职责并表现良好的人,不管这些人的知识是什么时候,在哪里培养出来的。
  •  
  • Practicing with a friend is everything else. Whether on a whiteboard or on something like Codeshare, simulating an interview environment with someone over a period of time takes a lot of the scariness out of interviews. You get over the awkwardness of verbalizing something totally stupid to someone because your brain slipped. The best is if you can make sure someone understands a problem you haven’t seen before, as they can give you hints to push you toward a solution. Seriously, that kind of practice is invaluable.
  •  
  • 与朋友一起练习是另一种方式。无论是在白板上还是在代码共享之类的平台上,在一段时间内与别人模拟面试环境可以让你摆脱面试时候的恐惧,你会克服在面试时因为脑子不够使而说出许多蠢话的尴尬。找人练习最好的方式是,确保跟你一起练习的这个人理解你以前没见过的某个问题,而他们可以给你一些提示,帮助你找到解决方案。说真的,这种练习很宝贵。
  •  
  • It’s a numbers game. You can practice — effectively, even — and not land a job because the right person didn’t see your resumé or you just didn’t see a solution to a whiteboard problem in time. The best you can hope to do is maximize your odds. This means applying everywhere you would like to work and fit a job req and not just your top choice. I applied for my top 20!
  •  
  • 这是一场数字游戏。你可以得到有效的练习,即便没有找到工作是因为那个管事而的人没有看到你的简历,或者你没有及时给出白板上问题的解决方案。你可以放大你在练习过程中会出现的错误。去应聘所有你想去、而且你符合他们招聘条件的公司,而不是仅仅盯着头部那几家。我申请了我心目中的前20名公司!
  •  
  •  Focus on the problem solving, not the solution. Memorization isn’t enough. Of ~20 algorithm problems I saw in a week I had seen maybe one of the problems before (and I let my interviewer know, though many would disagree with that choice). I just saw lots of common patterns and I was able to come up with solutions on the fly.
  •  
  • 专注于问题解决,而不是仅仅提出解决方案。记忆总是不够用的。一周内在我遇到的20个算法题里,我感觉其中似乎有我之前遇到过的。看到过太多常见的模式了,而我能够动态地提出解决方案。
  • Don’t get discouraged. There were multiple interviews I had where I didn’t know the solution and interviewers had to shepherd me towards a solution. I still got offers from everywhere I interviewed. Also, I felt I absolutely bombed one of my interviews (four of my five that day I thought were solid “no hires”) and the company later extended me an offer. Anything can happen, evidently. :)
  •  
  • 不要气馁。有很多次面试,我其实不知道解决方案,面试官不得不指导我解决问题。即便这样,我仍然收到了他们的offer。此外,有一次面试,我觉得我肯定把它搞砸了(那天我面试了5个,有4个我都觉得肯定不行了),那家公司还是给我发来了offer。显然,任何事情都是有可能发生的。 :)
  •  
  • Don’t be quick to disregard problems. There were multiple times I was practicing with a friend of mine and he shrugged off particularly difficult problems as pointless to know. Curiously enough, of the four types of problems I recall him saying would “never” come up, two of them did. Not in the exact form we were going to practice, but very similar. If your practice shows a certain concept come up frequently, learn it.
  •  
  • 不要轻易忽视问题。有很多次我和我的一个朋友一起练习,他对特别难的问题不以为然。我记得四种类型的题,他说“永远不会”出现,但其中两个题就真得被考到了。虽然跟我们练习的题不是一模一样,但非常相似。如果在你练习的过程中,经常出现某个概念,那你要好好学学。
  •  
  • Don’t underestimate the importance of behavioral questions. I think I enjoyed a lot of success because my (honest) answers were what companies wanted. It’s my theory that many developers have strong technical skills and still struggle to find their perfect job because they’re rude, dishonest, or uncomfortable speaking to people outside of a technical setting. These are all justifiable reasons to reject a candidate, in my opinion. Practice them just as you would technical questions.
  •  
  • 不要低估行为问题的重要性。我觉得我在面试上还算是获得了很多的成功,因为我(诚实)的回答正是公司想要的。我的理论是,许多开发人员拥有强大的技术技能,仍然很难找到完美的工作,因为他们对技术环境以外的人说话是粗鲁,不诚实或让人不舒服。在我看来,这些都是拒绝候选人的合理理由。你要要像准备技术问题一样,在这方面要加强练习。
  •  
  • If you know more, show it. There were multiple examples during my onsites where I would answer a question and mention some other knowledge I had but explain that I didn’t have time in an interview to fully implement that solution. Answering a question about strings? Show off your Unicode knowledge with your solution or explain how to support Unicode. Implementing a private method? Talk about the Objective-C conventions for methods. Updating a table view? Talk about the different animations you can support. Don’t bring something up if you can’t talk all about it, but if you can, it allows you to show knowledge outside of the narrow window provided by the question and gives you a leg up on anyone that sticks strictly to the beaten path.
  •  
  • 如果你知道的东西多,那就秀出来。我现场面试就遇到过许多这样的情景,我会回答一个问题并提及我知道的其他一些知识,但还要解释说因为面试时间有限的原因,我不能完全实现该解决方案。再比如,当你要回答有关字符串的面试题的时候,你就在给出解决方案的同时,展示您的Unicode知识或解释如何支持Unicode;遇到使用加密方法的问题,那你就讨论方法的Objective-C约定。要求你更新表格视图?那你就谈谈你可以支持多少种动画效果。但有些知识如果你自己都还没完全弄明白,那最好还是不要去展示;但如果你真的了解并能在问题的狭窄框架以外秀出来, 这会让你比其他一成不变的候选人看起来更有优势。
  •  
  • Don’t strive to clear the bar, strive to set it. Interview performance obviously helps decide if you get an offer from a given company, but it also helps decide what that offer looks like. If you get to a point where you think you know enough to get an offer, that’s great. But keep in mind there’s a big difference between “barely good enough” and “absolutely good enough”. Strive for the latter! My initial (i.e. not negotiated) offers came in pretty solid despite my relative lack of experience and I believe interview performance played a big role.
  •  
  • 不要努力清除障碍,努力设置它。面试表现显然会帮助决定你是否从能从一个公司拿到offer,不但如此,也能影响你到底能从这个公司拿到什么样的offer。如果你觉得自己够好,可以拿到offer,那就太好了。但请记住,“勉强够好”和“绝对足够好”之间还是存在很大差异的。你要争取后者!尽管我在这方面相对缺乏经验,但我最初拿到的offer(即没有跟公司谈判)就非常强,我相信面试表现起了很大的作用。

Wrap-Up

总结一下

So that’s that! It was a crazy ride and I have no regrets. I truly, genuinely hope that the above can help someone get over the hump when it comes to landing a job they’ve dreamed about. If there’s particular interest in iOS-specific help, I can publish some tips, so please comment and let me know.

就是这样!这是一个疯狂的旅程,我没有遗憾。说真的,我真的希望上述内容可以帮那些人克服重重困难,得到梦寐以求的工作。如果对你对iOS方面有什么特定的问题需要帮助,我可以发布一些小贴示,你可以留言告诉我。

If it’s of any use: I was interviewing for my second job out of college with about two and a half years of experience without any particularly notable internships or employers on my resume; I went to a very small school that had zero known software companies at their “career fair”; I started preparing in late April and started applying in June/July; and, lastly, a few months in, my job is everything I could have possibly dreamed of. 

看看我这段经历是不是还用所帮助:大学毕业后我去面试我第二份工作,当时我简历中没有任何特别引人注意的实习或雇主经历,只有大约两年半的工作经验;我到一所非常小的学校参加“职业展览会”,在他们的“职业展览会”中没有任何知名的软件公司;我是在4月下旬开始准备应聘,并在6月/ 7月开始申请;最后,几个月后,我找到了工作,当时我觉得工作就是我梦寐以求的一切。

Bay Area Belletrist
Jan 3

 


全部评论: 0

    我有话说: