译者 | 李睿
Jinesh Shah是一名经验丰富的软件工程师,曾在微软公司和谷歌公司任职。不久前,他开始了长达120天的求职之旅,通过了30多次面试,并获得了多个工作机会。在Shah与其他应聘者的沟通和讨论过程中,他发现虽然有很多关于面试的信息,但一些关键细节缺失或隐藏在经验中。这包括诸如让求职者讲述自己的故事、通过系统设计表达水平或在时机成熟时协商 价等细节。
1.目标受众
2.动机
Shah表示,与他沟通的大多数求职者表示厌恶求职和面试过程。他听到的最主要的原因是:“这个过程有缺陷,我想尽快完成它。”Shah也认为面试过程是有缺陷的,但是可以通过系统的计划和持续的努力来利用有缺陷的系统来发挥自己的优势。
此外,一个明确的动机是,如果求职者遵循他描述的蓝图,那么随着工作的变化将能够:
根据Shah对其他求职者在求职过程的观察和研究,坚信如果求职者在目前的岗位上做得很好,那么会得到一份他喜欢的新工作。原因之一是目前是求职者的市场,每家大型科技公司都在招聘员工。
求职者可能需要稍花一些时间投入来遵循这一蓝图,但值得投入时间和精力。
3.面试流程概述
面试过程如下所示:
招聘人员电话沟通→视频通话→现场面试(4~6轮)→ 价阶段
与招聘人员通过电话沟通
求职者通常与招聘人员通过电话沟通15~30分钟,讨论他对其应聘公司的兴趣。在与招聘人员交谈之前,求职者应该已经明确了下一份工作的目标。电话沟通旨在传达这些目标和求职者的故事,并讨论潜在的契合。
另外要记住的是,一旦招聘人员为求职者安排了面试,他们将在整个过程中成为求职者的盟友和朋友,至少在谈判开始之前。意识到他们对求职者在面试中取得成功并签署 价具有既得利益。求职者应该随时向他们寻求需要的任何帮助或资源。
在与招聘人员电话沟通之后,求职下一步过程将转到视频通话。
视频通话
在进行视频通话面试之前,求职者应该为算法面试做好充分的准备。这次面试的目的是展示求职者的技术能力,在编码部分之后向面试官提出有见地的问题,然后进入现场面试。
现场面试
求职者的现场面试通常会进行4到6轮,但新冠疫情已将面试推向虚拟远程进行。这对求职者来说是一件好事,因为可以错开时间安排面试的轮次,这样对求职者安排时间很有利,而不是被迫请假去参加现场面试。
应聘软件工程师职位的求职者将会面临算法问题、系统设计以及行为和经验面试。求职者应该见到面试者,并向他们展示自己掌握的技术和技能。现场面试的目标是提供强有力的积极信 和数据点,以推进到 价阶段。
价阶段
在这个阶段,求职者需要做的是确定适合自己的机会,考虑是否可以签约并加入一揽子计划。
4.时间计划表
以下是一个为期15周的时间计划表,假设求职者准备求职和面试。那么可以根据自己的情况缩短或延长这一时间表。
第1周:提升和流程理解
第2~4周:数据结构和算法基础
第5~7周:系统设计基础
第8~9周:视频通话和模拟面试
第10周~13周:现场面试
第14~15周: 价阶段
如果求职者喜欢使用清单/待办事项列表,可以在这个谷歌文档的清单格式中找到上述时间表。并制作自己的副本,并在完成时进行核对。
5. 开始求职过程
Shah的建议是按照每周的日程安排,复制Google文档并在完成时确定。
求职者的故事
既然求职者已经决定开始求职过程,那么了解一下求职者希望自己的职业是什么样的。建议起草以下问题的答案,将其称为“求职者的故事”:
现在可能看起来不是这样,但以下步骤中的许多事情将取决于求职者如何回答这些问题。确定并入围公司。根据自己的故事和目标,求职者列出想面试的7~10家公司。这时可能会发现一些公司比其他公司更有趣。将这一列表分为两个类别:备份公司和目标公司。在安排现场面试时,这些列表会派上用场。
衡量水平和补偿
如果求职者不确定自己的目标水平,需要考虑在求职之前与该公司的联系人交谈以了解自己的目标水平。
制作干净整洁的简历
求职者确保制作一份干净整洁的简历。在理想情况下,简历中的大多数要点都应遵循XYZ格式。
采用 络和LinkedIn
相信很多人都采用LinkedIn,并且可能拥有完善的LinkedIn个人资料。如果没有,应该做的第一件事是创建全面的LinkedIn个人资料。Shah表示,他拥有十分完善的LinkedIn个人资料,因为在他的求职过程中,30多位LinkedIn招聘人员联系他,他因此与6家公司的招聘人员进行沟通和对话。
当讨论这个话题时,建议求职者使用去掉隐私设置来启用开放机会,而确保隐私是只设置招聘人员能够看到而不是对外完全公开的。
拥有一个体面的LinkedIn个人资料的第二个原因是建立一个支持自己的 络,并且可能具有可以将求职者推荐给其感兴趣的公司的关联。推荐是引起注意和启动流程的最佳方式。紧随其后的是开始与求职者联系的招聘人员进行对话。直接申请应该是最后的手段。
招聘人员谈话技巧
这通常是求职者与招聘公司的第一次对话。如上节所述,在整个过程中,或者至少在谈判开始之前,招聘人员将是求职者的盟友或朋友。应该明白,并非所有招聘人员都是相同的,有些人比其他人更好。求职者应该记住始终保持开朗、礼貌和优雅的态度。让招聘人员提供帮助分,并与他们合作以获得想要的职位。
招聘人员可能会在这一阶段询问求职者的预期薪酬是多少。Shah建议不要这么早说出薪酬。与其相反,应将讨论重点放在确定相互匹配和平衡上。最好在 价阶段讨论薪酬。如果招聘人员要求提供,招聘人员可以告诉他们期望的最高薪酬,并确保强调知道招聘的公司是否具有竞争力并且确信可以达成协议。
面试人员的观点
如果你曾经是面试人员或者是招聘委员会成员,那么就会知道,在做出招聘决定时,经常会出现两个词:信 和数据点。
面试官的工作是获取尽可能多的信 和数据点。所以现在可能会问:“这些信 是什么?”信 是展示求职者的特定技能、知识和经验的信息。
(1)可引导性信
这个信 说明了求职者对提示和反馈的反应如何,他们是否愿意接受反馈,以及他们是否利用反馈来改进他们的解决方案。该信 通常在问题解决和系统设计访谈期间进行分析。
(2)编码信
这个信 说明了这个求职者的理解程度,以及他们在实际编码方面的效率。在解决问题的面试中对此进行了分析。
(3)系统设计
这个信 解释了诸如“这个求职者是否有经验并且有能力设计和领导一个大型技术系统?”之类的问题。在系统设计面试期间对此进行了分析。
(4)协作与管理信
这个信 解释了诸如“这个求职者是否能够与团队成员一起工作或管理团队?”这样的问题。这个信 也说明了求职者在与大型团队合作或管理大型团队方面的经验。这是在行为/经验面试期间进行分析。
还有一些公司需要注意的信 。例如,像谷歌和亚马逊这样的公司会寻找一种信 来解释如何通过歧义进行导航。
现在,求职者知道面试官要在面试中寻找什么。那么在每次面试中的工作是发出信 ,证明适合这个角色,并展示自己的资历。
6.数据结构、算法和解决问题的面试准备
对于求职者来说,技术面试的过程很难。想象一下,在45分钟紧张的面试中,求职者一边与面试人员交流想法,一边接受评估以实施最佳解决方案。
而好的一方面是,求职者可以通过准备和练习变得更好。准备工作包括:
解决问题的面试期望
(1)编程语言
大多数公司在面试技术职位之前不要求求职者了解任何特定的编程语言,但熟悉一门重要的语言通常是成功的先决条件。求职不仅应该熟悉一种语言的语法,还应该熟悉一些语言的细微差别,例如内存管理的工作原理、最常用的集合或库等。
(2)数据结构
求职者将需要了解常见数据结构的内部工作原理,并能够比较和对比它们在各种应用程序中的用法。求职者需要了解常见操作和内存使用的运行时间。
(3)算法
面试并不是死记硬背;但是,了解最常见的算法可能会使解决面试人员提出的一些问题变得容易得多。了解不同类别算法的运行时间、理论限制和基本实现策略比记住任何给定算法的具体细节更重要。
(4)编码
希望被要求编写语法正确的代码,而不是伪代码。这里可能有一些遗漏的逗 或拼写错误,但是不要紧,但目标是编写尽可能接近生产就绪的代码。这是求职者展示编码能力的机会。
数据结构和算法基础
Shah的建议是先了解面试框架,然后了解基础和概念,最后深入研究算法。以下是推荐方案:
通过阅读破解代码面试(CTCI)或EPI中的以下章节来复习基础。以下是Shah想到的一些主题:字符串、数组、链表、堆栈、队列、堆、树、哈希表和映射、搜索和排序、递归、动态编程、贪婪算法、图和图遍历。
如果求职才必须重新开始或有一段时间没有复习算法:
如果求职者最近学习过数据结构和算法并且只是回顾了概念,那么需要学习数据结构和算法的一些文章。
数据结构、算法和编码基础的其他资源:
- Book: Beautiful code
- Book: Elements of Programing Interview
- Coding Interview University
- Course: Udacity – Intro to Algorithms
- MIT Open courseware – Introduction to Algorithms
- Google Style Guides for C++, Python, Java
编码实践
在进行练习时,不要使用集成开发环境(IDE)。需要能够编写清晰、可编译的代码,而无需有关标准库类/方法名称的布局或拼写方面的帮助。建议在Word文档或纸上解决算法/数据结构问题,以模拟实际面试。
注:有些公司可能在浏览器窗口中集成了集成开发环境(IDE),但大多数公司没有,因此在标准Word文档上练习更安全。
建议如果不熟悉数据结构和算法编码,那么需要参加面试位编程课程。否则,可以练习Leetcode上的75个练习题。这个问题列表涵盖了各种主题,让求职者为任何编码面试做好准备。
另外,除了准备和练习之外,还需要每天解决一个随机编码问题。
以下是其他练习资源:
7.系统设计面试准备
系统设计的面试官可能是一位高级工程师,他会向求职者提出一个开放式问题,例如如何实施航班预订系统”或“如何为Instagram创建一个提要”。
求职者的目标是在60分钟内推动对话,巩固问题需求,并设计一个解决问题的系统。这是一个展示其在技术领导方面的技能、知识和经验的机会。
系统设计面试心态
在与准备进行面试的求职者进行沟通之后,Shah意识到大多数求职者的心态是,这是一种建立假设系统的练习。当求职者说 “在现实生活中不会做”之类的话时,可以看到这一点,并且最终可能会忽略他们看到的一些更重要的技术问题,认为这毕竟只是一种练习。但是,这会向面试官发出错误的信 ,他们可能会认为求职者没有看到那个技术问题。
求职者需要改变这种心态。与其建立假设的系统,不如建立一个真实的系统。想象一下在面试开始时召开一个实际的工作会议。工作会议旨在通过集思广益的设计和路线图来解决给定的问题。
在1小时的面试结束之后,求职者的目标是制定一个设计路线图和计划,作为团队之间的任务进行划分。
求职者的心态上的改变将改变对待这次面试的方式。求职者将领导讨论并开发更现实的设计,而不是仅仅参与假设性讨论。
高级水平设计
(1)高级水平设计面试框架
Shah表示,他遵循将面试采访分为三个阶段的框架。
(2)高级水平设计知识期望
(3)推荐学习
尝试解决系统设计面试这篇文章中的问题,然后检查他们提供的解决方案。该资源是学习和内化如何推动优秀系统设计讨论的一种非常好的方式。
如果需要更多学习,技术招聘-系统设计课程也是一个很好的资源。
(4)高级水平设计模拟面试准备检查点
在继续准备和开始模拟面试之前,需要尝试回答以下所有问题:
低级水平设计
并非所有公司都有这一轮面试,因此求职者可以了解是否有兴趣提出这些问题的公司。
求职者应该具备一些常见和有用的设计模式的工作知识,并知道如何以面向对象的方式编写软件,并适当使用继承和聚合。求职者可能不会被要求描述特定设计模式如何工作的细节,但希望能够为设计选择进行解释。
低级水平设计模拟面试准备检查点:
- 策略模式
- 观察者模式
- 工厂方法
- 单例模式
模拟面试
模拟面试是进入面试节奏的最佳方式。建议求职者每周准备一些模拟编码和系统设计面试。这将确保知道自己的跟踪方式和需要改进的领域,可以使用以下 站进行模拟面试:
一般的面试技巧
到目前为止,人们应该已经了解计划通过破解代码面试(CTCI)和Grokking系统设计分享的所有技巧。如果没有足够的时间来完成它们,以下是一些关键的事情:
8.行为和经验面试
大多数求职者都没有为这样的面试做太多准备。他们觉得面试提出的问题可能是随机的,而且将其作为所有其他待办事项的优先事项具有挑战性。但是,相信这次面试可以决定是否聘用求职者。
面试官通常希望了解两点:
建议准备5~6个强有力的工作示例和故事,这些示例和故事共享具有强烈积极信 的数据点。这将确保求职者可以回答面试问题,同时保持良好的信息流。这些工作示例不必花哨或复杂。最重要的是这个例子得到了面试官的认可和理解。此外,精心准备的故事引人入胜,面试官可以了解求职者的感受并与他们产生共鸣。此外,故事是说明求职者体验的好方法,这对于决定是否聘用至关重要。
这是一个示例问题,可以在其中展示与客户沟通的经验:
有多种方法可以回答上述问题。建议在回答任何与领导原则相关的问题时遵循STAR方法。STAR代表“情境-任务-行动-结果”。
准备好这些示例之后,尝试回答此处列出的行为问题以进行练习。
提示:这是准备的所有问题的清单,Shah觉得每一次行为面试和体验面试都让他有所震撼。
9. 价阶段
求职者能到这一阶段值得称赞!在收到 价后,求职者可以研究和了解其应聘的公司和团队。在做出任何决定之前,可能需要多次与公司的经理和团队成员进行沟通。
这里有一个数据点可以更清楚地说明这一点:在做出团队决定之前,Shah与谷歌公司的7位经理进行了沟通。在与他们会面后,与那些让他感兴趣的人进行了后续会议/聊天。这基本上是一个反向采访。如果经理真的聘用求职者,那是有好处的,而且招聘人员现场可以为他提供更合适的工作机会。
注:在亚马逊等一些公司,求职者只能与申请的职位的团队/招聘经理会面。这是因为招聘主要是由团队驱动的,而不是公司层面。
在与招聘经理会面之前,求职者应该做的一件事是列出大约7~10个问题,如果时间允许,可以向招聘经理问这些问题。这些问题的范围可以从一般问题到特定于团队或特定于技术的问题。这些问题应旨在收集有关团队、技术和经理的更多信息,以做出明智的决策。
协商最佳 价
一两个小时的谈判研究可以让求职者获得额外的10%~30%的加薪。我认为这绝对值得花费时间。
再次强调以下几点:
接受 价
10.最后的建议
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!