如何让百度搜到网站,网盘搜索 网站开发,泰州网站建设物美价廉,wordpress主题首页主体没有人有时间去做成百上千道LeetCode题目#xff0c;好消息是你实际上并不需要做那么多题目就能够在FAANG公司找到工作#xff01;
我曾经在Grab工作#xff0c;这是东南亚的一家共享出行公司#xff0c;但我对工作感到沮丧#xff0c;想要进入FAANG公司#xff0c;但我…没有人有时间去做成百上千道LeetCode题目好消息是你实际上并不需要做那么多题目就能够在FAANG公司找到工作
我曾经在Grab工作这是东南亚的一家共享出行公司但我对工作感到沮丧想要进入FAANG公司但我不确定如何做到。经过几个月的研究、学习和练习我面试了11家公司最终获得了来自旧金山湾区顶级科技公司的9份工作offer包括Facebook、Google、Airbnb、Palantir、Dropbox、Lyft以及一些初创公司。这是一个繁琐的过程我不想再经历了。我经历了那个过程但有了这个指南你就不必再经历了。
本指南将为你提供关于如何准备软件工程师面试的顶级建议的快速概述 - 包括技术和非技术面试环节。在相关的情况下你可以通过访问本概述文章中的链接或网站左侧边栏深入了解更多细节。
如何准备软件工程师面试
最大化入选机会弄清楚面试形式选择一门编程语言锻炼计算机科学基础知识练习编程面试为系统设计面试做准备适用于中/高级别为行为面试做准备谈判工作报价包
最大化入选机会
你是否仍然在一些或所有顶级科技公司中有被筛选的困难你的简历可能是个问题。
在像FAANG / MANGA这样的主要科技公司中你的简历是被筛选的最重要的入口。在被筛选后你过去的成就相对于你的编程面试技能来说变得不那么重要 - 我们知道编程技能是可以系统地学习的。因此能够充分描述你过去的成就以通过筛选阶段非常重要。
不幸的是即使是我认识的最合格的候选人也不知道如何写一份好的简历从而未能入选。事实是当我们中的许多人没有被像FAANG / MANGA这样的顶级科技公司筛选时我们倾向于认为自己不够资格 - 但在大多数情况下可能只是缺乏良好的表述。
如果你想学习如何写一份好的软件工程师简历我在这里写了一份逐步指南涵盖了为像谷歌、Facebook、亚马逊、Netflix、苹果等公司准备简历的过程并提供了参考示例。
1. 了解面试格式
在软件工程师面试中你可能会遇到各种不同的面试格式从早期到晚期
1.1. 测验
频率偶尔
测验旨在作为第一道筛选关是一种快速而粗糙的方法用于筛选出极度弱甚至非技术性的候选人。它们是有结构的问题并且有清晰的答案这使得它们可以由招聘人员/非技术人员或自动评分器进行评估。通常在面试过程的早期阶段进行。
示例
4 5的二进制是多少答案4冒泡排序的时间复杂度是多少答案O(n2)
1.2. 在线编程评估
频率偶尔
类似于测验在线编程评估通常在面试过程的早期进行。给出一个算法问题带有格式良好的输入和输出候选人被要求在在线编程界面中编写代码来解决问题。HackerRank是进行在线编程评估的非常常见的平台。LeetCode是练习在线编程评估中问题解决方面的好方法。然而在HackerRank上你通常需要编写代码来从stdin读取并打印到stdout如果候选人不熟悉API可能会让他们感到困惑。
1.3. 家庭作业
频率罕见
人们对是否询问算法问题是评估个人能力的好方法进行了大量辩论因为这些问题并不是工作中最需要的技能。家庭作业是一种旨在解决算法面试不足的格式它让候选人参与到更大的项目中从而展示他们的软件设计技能。
然而这种面试格式会花费更多的时间对候选人和公司来说都是如此因此在候选人数量较多的大公司中不太常见。这种格式在初创公司和小公司中更为常见。
示例
构建一个航班列表应用构建一个看板应用构建一个贪吃蛇游戏
1.4. 电话面试
频率普遍
电话面试是最常见的格式每个候选人在面试中至少会遇到一次。你将被要求与面试官进行电话或VoIPBlueJeans/Skype/Google Hangout通话。你将会被给出一个问题并且你需要在在线协作编辑器CoderPad/CodePen/Google Docs上解决这个问题。
通常情况下即使编辑器支持执行代码你也不允许执行代码。因此不要依赖它来验证你解决方案的正确性。根据你申请的职位不同格式会略有不同。许多公司喜欢使用CoderPad进行协作代码编辑。CoderPad支持程序的运行因此可能会要求你修复你的代码以便能够运行。对于前端面试许多公司喜欢使用CodePen因此熟悉这类基于Web的编码环境的用户界面将是值得的。
在你进行电话面试之前也要查看编程面试的最佳实践了解在电话面试之前的要做和不要做。
1.5. 现场面试
频率几乎总是
如果你已经到了这个阶段恭喜你这通常是做出录取决定之前的最后阶段。进入现场面试阶段的候选人将被要求在办公室进行面对面的面试。如果你是海外候选人公司甚至可能会安排你飞到当地并为你的住宿支付费用
现场面试阶段通常包括多轮编程、系统设计、行为面试预计会持续几个小时。由于你在现场可能会被要求与面试官进行白板练习通常是解决一个算法问题或一个系统设计问题。你可能还需要携带自己的笔记本电脑在现场解决一个项目/解决一个编码问题。
对于小型非上市公司的现场面试大多数公司将允许并偏好你使用自己的笔记本电脑。因此提前准备你的开发环境非常重要。
如果公司提供午餐你可能还会与员工一起进行午餐会话你可以在会话中了解更多关于公司文化的信息。
2. 学习和练习编程面试
下一步也是最重要的一步是在你选择的编程语言中练习解决算法问题。虽然《Cracking the Coding Interview》是一个很好的资源但我更喜欢通过实际解决问题来学习。
有许多平台可以用于这个目的 - 如LeetCode、HackerRank和CodeForces。根据我的个人经验LeetCode问题最适合面试准备而HackerRank和CodeForces更适合竞技编程。
然而LeetCode有成千上万的问题要知道从哪里开始或者如何组织你的练习可能会令人生畏。我在这里提供了推荐的准备计划和结构化资源
2.1 编程面试学习计划
为编程面试准备的推荐时间段是3个月每周11小时即每天2-3小时以便更全面地准备。我分享了我的3个月学习计划其中提供了一周一周的编程面试主题列表以及应该按优先顺序逐个解决的资源和练习问题。我还将很快添加推荐的1个月和1周学习计划内容。
如果你准备时间少于3个月你可以使用由我构建的Grind 75工具生成自己的学习计划该工具根据你剩余的时间生成推荐的编程面试学习计划。它背后的算法包括问题按优先级排名以及覆盖的主题广度和深度的平衡。
2.2 练习中使用的资源
在市场上有很多资源竞争你的注意力其中很多只是为了你的钱而不提供任何价值。如果我必须优先考虑 - 这些是我会同时使用的顶级编程面试准备资源
《Cracking the Coding Interview》编程问题的模式AlgoMonster我的免费编程面试最佳实践指南我的免费编程面试技术指南我的免费算法学习指南
3. AlgoMonster
除了通过练习和易于理解的指南帮助你掌握重要的编程面试数据结构和算法问题外AlgoMonster还具有合成常见面试问题模式的额外优势你可以将其应用于解决你以前从未遇到过的任何其他问题。由Google工程师制作与LeetCode的不受结构约束相比这绝对是一个质量平台。所有常见的编程语言都涵盖了数据结构和算法问题 - 包括Python、Java、C#、JavaScript、C、Golang等。立即加入享受70%的折扣 →
3.1 Grokking the Coding Interview: Patterns for Coding Questions
这个由Design Gurus推出的课程扩展了推荐练习问题上的问题但是从问题模式的角度来练习这是我也同意的一种方法我个人也用它来提高编程面试水平。该课程允许你在Java、Python、C、JavaScript中练习选定的问题并提供这些语言的示例解决方案以及逐步可视化。学习和理解模式而不是死记答案立即获得终身访问权 →
3.2 我的免费编程面试最佳实践指南
如果你已经阅读过顶级科技公司使用的编程面试评估标准你可能会对评估项目的数量以及如何始终展示录用行为感到不知所措。
这份编程面试最佳实践指南综合了在编程面试中展示录用信号的行动建议。
我建议在练习编程面试问题时将这个指南内化并使用作为辅助工具 - 以确保你从一开始就养成良好的面试习惯和肌肉记忆。
3.3 我的免费编程面试技术指南
是否有一种结构化方法可以增加你找到编程面试问题良好解决方案的机会如何优化你的方法的时间和空间复杂度我的编程面试技术指南教你一些处理你以前从未遇到过的问题的技术 - 比如问题可视化、手动解决、将问题分解成子问题等。
3.4 我的免费算法学习速查表
我不确定这些是否符合深入指南的标准 - 它们更像是“学习速查表”的一页纸列出了最佳学习资源、最佳LeetCode练习问题和需要记住的事项。然而它们确保你涵盖了所有最重要的方面特别是当你没有时间时。因为这些也是帮助我拿到顶级科技公司offer的笔记 - 它们绝对有效。
更多关于编程面试准备的提示请参阅我的完整编程面试准备指南。
3.5 尝试模拟编程面试与Google和Facebook工程师
在面试官面前编码可能是一种令人紧张的经历特别是如果你以前从未这样做过 - 这就是为什么获得实践经验如此重要的原因。
interviewing.io目前是市场上最好的模拟技术面试资源。它允许你预约与真实的Google和Facebook工程师进行模拟编程面试尽管是匿名的。你甚至可以为特定角色如移动、前端、工程管理预约面试。更好的是 - 如果你想更轻松地过渡到真实世界的编程面试 - 你可以观看录制的面试看看电话面试是什么样子的。
此外如果你在模拟面试中表现良好你将能够解锁“工作页面”从而可以直接预约顶级公司如Uber、Lyft、Quora、Asana等的面试。我既是面试官也是面试者发现interviewing.io的体验非常好。
4. 准备系统设计面试
如果你是一名中级或高级候选人你可能期望在技术面试中遇到系统设计问题。它们在LeetCode上没有得到充分的覆盖而且好的资源仍然很难找到。
系统设计面试的目标是评估候选人设计涉及多个组件的真实软件系统的能力。
利用最佳的系统设计面试准备资源
一些最佳的系统设计面试准备资源包括 ByteByteGo - 这是由Alex Xu开发的新的系统设计课程他是《系统设计面试》系列书籍的作者这些书在亚马逊上畅销。该课程涵盖了系统设计基础知识然后深入讲解了超过10个常见产品的设计例如设计YouTube、Facebook新闻源等和多个大数据和存储系统的设计例如设计聊天系统。对于每个深入讲解概念都有解释并使用了综合性的图表使其对任何高级别的人都很容易理解。 “Grokking the System Design Interview” by Design Gurus - 这可能是互联网上最著名的系统设计面试课程与大多数其他课程的不同之处在于它完全基于文本这对于更喜欢阅读而不是观看视频的人比如我自己是非常棒的。它包含了流行的系统设计问题的仓库以及系统设计基础知识的词汇表。我个人已经完成了这个课程并推荐许多其他人使用它。强烈推荐 “System Design Interview Course” by Exponent - 该课程涵盖了系统设计基础知识并具有大量流行系统设计问题的视频模拟面试。一些问题有文本答案以及数据库模式和API的参考我觉得这很有帮助。虽然订阅价格可能对于仅仅涵盖系统设计面试内容的课程来说有点昂贵但他们还提供质量很高的数据结构、算法和行为面试的技术内容。一站式平台的便利性覆盖了技术面试准备的所有方面非常诱人。 “Grokking the Advanced System Design Interview” by Design Gurus - 我还没有尝试过这个但它是由创建《系统设计面试课程》的同一团队制作的所以应该很不错在我看来除非你是非常高级的候选人或者是专业职位否则你可能不需要这个。
在这里查看其他系统设计准备指南和资源。
5. 准备行为面试
每家顶级科技公司都至少有一轮软件工程师的行为面试。通常软件工程师的行为面试包括分享简历上过往经历的细节提供过去展示某些行为属性的情况和行为示例例如冲突管理、数据驱动分享抱负和职业规划。
尽管这些面试看起来“空洞”或者没有结构但实际上有一种结构化的方法可以为行为面试做准备 了解STAR格式来回答问题 STAR格式帮助你组织回答行为问题。这最适用于需要叙述过去经历或行为的问题。 情境Situation分享引发任务的情况的详细信息任务Task解释你需要实现的目标或你需要解决的问题侧重于范围、严重程度、具体的基准/结果要求行动Action解释你为实现目标所做的事情描述你的选择和决策过程结果Results描述你行动的结果以及你学到了什么行为问题的STAR格式回答方式 练习软件工程师最常见的行为问题 参考软件工程师最常见的30个行为问题
有关更多行为面试准备的提示请参阅我的完整行为面试准备指南。
6. 为软件工程师的职位报价包进行协商
最后在面试之前你绝对需要准备的是对软件工程师的薪资谈判。在面试过程的任何时候关于薪资的谈话都可能出现。我们还有关于谈判策略和软件工程师薪酬的深入指南。
这就是我所能提供的一切 - 对于软件工程师面试准备过程的每个步骤的更多细节请通过侧边栏或导航到下一页中的每个主题进行深入了解
参考
https://www.techinterviewhandbook.org/software-engineering-interview-guide/