5 种经过实践检验的编程面试准备技巧
编程面试的难度参差不齐。这取决于公司、面试官、你的技能等等。无论我们多么希望,都没有万能的灵丹妙药能让你在面试中脱颖而出。关键在于你如何准备。
这看似微不足道,但你可能会惊讶地发现,很多求职者总是拖到最后一刻才开始制定准备计划。我们在这里列出了面试准备中最重要的五件事。不过,说到如何获得面试机会,像Triplebyte这样的服务可以大大简化整个流程。
大多数公司并不要求你只使用一种特定的语言,但会要求你参加面试并坚持使用其中一种语言。你应该熟悉该语言的语法、细微差别(例如内存管理)以及最常用的集合、库等。你还应该知道如何测试你的代码,以及如何应对各种极端情况。
但如果我对其中一种以上的衣服都感到舒服呢?
以下是选择语言的一些指南:
选择你最擅长的语言……你能轻松地从问题到解决方案吗?如果有人让你坐下来,在 25 分钟内写出一个问题的解决方案,你会选择哪种语言?仔细想想这个问题。有些语言有不同的内置类型和范式,这意味着你选择的语言可能会影响你解决问题的方式以及你遇到的问题。
例如,Java 中常见的面试题是关于操作链表的。然而,在 Python 中,列表是内置数据类型,所以你通常不会看到这样的问题。
最终,你不应该让这些因素决定你选择哪种语言,但如果你难以抉择,那就选择一种能让你的生活更轻松的语言。这也是为什么有些开发者选择 Python 而不是 Java 或 C++ 的部分原因;Python 的冗余代码更少。
各语言面试通过率
考虑使用动态语言进行采访
为什么?因为语法紧凑,类型灵活,而且它们被认为是宽容且富有表现力的,当试图将代码行塞进白板上时,它们是一个很好的选择。
熟悉操作
你应该非常熟悉可用的操作类型以及它们的使用时机。你应该了解字符串操作、数组操作和列表操作。例如,你应该知道如何拆分字符串、如何将字符转换为字符串,甚至一些更简单的操作,例如如何读取/写入文件以及如何声明二维数组。
最后,了解公司使用的语言,并倾向于使用那些
如果你计划使用的语言不是公司所使用的语言,也不用担心,尤其是如果你是应届毕业生,你会在工作中学习新的语言和技能。面试官可能会问你是否懂其他语言,这是为了考察你是否渴望学习并愿意学习。
一些顶级公司的常用语言:
- 微软:C++、Java、C#、Python
- Facebook:Java、Python、Perl、PHP、C++
- 谷歌:Go、Python、C++、JavaScript
- 亚马逊:Java、Javascript、Ruby、Python、Perl
这取决于你现有的知识水平和你的适应能力。时间可能看起来很长,但三个月通常是最佳的准备时间。从算法和数据结构到系统设计和面向对象设计,需要涵盖的内容非常多,所以最好安排好你的练习时间,花时间彻底理解每个概念。当你完成练习并准备好安排面试时,我们推荐你查看Triplebyte。
学习三个月,难免会有些日子缺乏动力,这时最好设定一个学习计划并坚持下去。如果你的最终目标是找到工作,那么你需要一直朝着这个目标前进。你可能听说过“没有零天”这个说法;小进步总比没有好,所以即使每天只花30分钟,也足以让你保持进度。
找到适合自己的日常安排。这里有一个经过实践检验、效果显著的日常安排,它对在 Facebook 和微软就职的软件开发人员都很有效。在开始练习时,请务必牢记以下几点:
-
开始给自己计时。理想情况下,你解决任何题目的时间都不应超过 20 到 30 分钟。(这可能无法立即解决所有问题。)
-
如果你没能在规定时间内解决问题,也不要灰心。即使花了几个小时,也要坚持解决,不要去看答案。这会帮助你建立自信,相信自己能够解决问题,这样你以后就能专注于更快地解决问题。
-
开始思考每个解决方案的运行时和内存复杂度。你需要在实际面试中清楚地表达这些复杂性,所以最好现在就开始。
每家公司的面试方式都略有不同。他们都有自己的价值观,以及面试方法和风格。例如,谷歌会等你拥有 3-5 年经验后才会问系统设计问题,而 Facebook 则会问应届毕业生这个问题。
研究公司
一些公司,例如谷歌和 Facebook,会直接在招聘页面上列出你应该学习的内容。这些信息非常有价值,可以减轻你准备面试时的焦虑。此外,几乎每家公司都会展示自己的价值观和文化供你参考。同样,这些信息也不容忽视。根据 Triplebyte 的数据,大约 50% 的公司面试失败的候选人并非出于技术原因。企业文化在公司评估你时起着重要作用,亚马逊的“Bar Raiser”就是一个很好的例子,他是一位根据公司 14 条核心原则评估你的专家。
了解他们销售的不同产品,如果还没有使用过,请尝试一下,并确保对自己喜欢和不喜欢的产品有一些看法(确保解释原因以及您会做出哪些改变)。
了解他们的面试方式
你需要参加在线评估吗?编程部分是用白板还是笔记本电脑?他们会看重候选人的哪些方面?了解一家公司的面试方式可以帮助你做好相应的准备,并大大减轻你的焦虑。想了解一些顶级公司的面试方式,可以访问CodingInterview.com查看详细的面试指南。
正如上一节简要提到的,行为/文化面试与技术面试同等重要,在某些情况下甚至更为重要。最佳做法是展示你的工作内容与职位的关联性,并根据职位描述进行调整,这样可以更好地展现你与该职位的契合度。此外,展示你的工作内容如何转化为他们的核心价值观也是一个好主意。
以下是文化契合度面试的一些基本规则:
-
表现出对产品的兴趣,并展示对产品的理解。
-
准备好描述你与队友或经理发生过冲突的场景,以及你是如何解决的。如果你已经做了几年软件工程师,请不要说你从未发生过冲突。
-
谈谈你想在公司实现什么目标
-
谈谈你作为工程师最近取得的一些/最重要的成就
-
谈论您遇到的一些特别疯狂/困难的错误。
在安排面试之前,最好先练习一下真实的面试场景。如果你有编程伙伴?那就找个他/她,让他/她陪你聊一个小时。Pramp 等网站也提供免费的模拟面试,让你更好地了解面试时间和评估的感受。
包起来
虽然准备编程面试的策略有很多,但以下这 5 个策略已被开发者用于在顶级科技公司找到工作。虽然这篇文章介绍了你应该如何准备,但并没有深入探讨面试的具体流程。说到这方面,像 Triplebyte 这样的网站可以大大缩短你的求职时间。
进一步阅读
-
文章:递归面试题内部指南
-
文章:权威的编码面试路线图
-
在线课程:深入理解编码面试
-
文章:递归面试题内部指南