以下以第一人称叙述大拿是怎么准备面试的,他的最高薪酬达到了55个W的美刀,换算人民币就是每年税前330W。


我从blind社区学到了很多关于面试的知识。这是我回馈社会的努力。这个章节不是关于职场的,是针对面试感兴趣的人的,我有多个 550k 左右的offer,我还在谈。我得到的offer汇总下:

Facebook (E6)、Uber (5b)、Oracle (IC5)、Google (L5)、Lyft (L5)、Pinterest (L5)、Cruise (Sr SDE 2)、Compass (员工)、Convoy (员工)

我面试未通过的公司——Airbnb(现场面试)、Netflix(电话面试室)、Dropbox(PS,我当前是亚马逊员工,级别 SDE3,YoE:11 和 TC:355k。

我的面试准备

算法和编码

我在CodeSignal练习编码。在成功做出了每个主题的 2-3 个问题后,转向了 Leetcode。在 Leetcode 上,我开始着重解决“Top interview questions”,在解决了 50+ 个问题后,我开始在Interviewing.io上进行模拟面试,前 2 个我失败了,但从失败中吸取了教训。我在接下来的 2 次面试中取得了成功,并开始面试那些我不是太中意的公司的现场面试。截至目前,我在 Leetcode 上完成了 120 道题,题的类型分布:Easy/Medium/Hard 比例为 30/75/15。

相比较普通员工的招聘面试,高级别的面试对于系统设计/经验要求占比非常高。面试官们根据你在这些面试中的面试表现评估你的水平。

系统设计

我在Grokking the System Design Interview中学习了所有设计,并观看了这个 YouTube 播放列表中的大部分系统设计视频,同时阅读了这个系统设计入门。在亚马逊,我接触了各种 AWS 应用程序,如 Dynamo、S3、SQS、SWF 等,我还观看了这些服务的设计视频。这也帮助我在面试中表现得更出色。

我的系统设计面试方法

  • 3-5 分钟:阐明需求并定义功能性和非功能性(扩展和性能)需求

  • 5-10 分钟:定义 API,包括输入和输出参数。讨论数据模型(主键、第二键等)

  • 10-15 分钟:定义更高级别的架构。讨论整个架构中的各种组件,Web 客户端、负载均衡器、应用程序服务器、数据库等。拿几个 API 来讨论从用户到存储的端到端数据流。谈论性能问题以及缓存如何提供帮助(有时缓存是一件坏事)。

  • 15-20 分钟:讨论特定于给定问题的关键case。对于 twitter,它是关于粉丝更新和处理名人更新问题,对于消息传递应用程序,它将维护设备连接状态并处理离线case和已读/未读状态等。

如果有更多时间,请讨论扩展瓶颈并讨论如何解决这些问题。聊聊失败以及failover(重试、指数回退等)

实际项目经验

在项目经验面试中,面试官希望你回答以下问题,并准备好你过去经验中令人信服的例子。

  • 谈谈你最近一个非常具有挑战性的项目,解释挑战并告诉我你是如何解决它的?

  • 谈谈你一个项目,您必须与跨职能团队合作,并且对于难以管理的团队是如何达成你的预期的?你是如何处理这种情况的?

  • 谈谈你一个你与团队中的高级/初级人员发生冲突的场景,你是如何解决的?

  • 谈谈你一个你无法达成的预期的项目,当时的情况和影响是什么?你是如何处理这种情况的?

  • 谈谈你在项目进行过程中发现设计中存在问题的场景,您是如何解决的?

  • 你对项目优先级排序流程是什么?如果在项目的中间需求发生变化,你会怎么做?

一些技巧

  • 在第一次现场面试之前,我很紧张,因为我很久没面试过了,但是进展顺利,那之后我信心大增。

  • 将面试官视为同行,在设计面试中进行公开讨论。当面试官进入面试室时,微笑着迎接他们。面试可能会很紧张,一个微笑可以让你们俩都平静下来。

  • 当其中一次面试在您的现场没有按预期进行时,您必须迅速忘记它并积极进行下一次面试。如果你在 5 次面试中有 4 次表现出色,他们可能仍会为你提供该职位。

如果我错过了什么,您可以添加评论,我将很乐意回答。

————————-全文完——————————————————

如果你觉得受益欢迎赏杯咖啡,赞助点能量!感谢!