技术面试中要避免的七个错误

已发表: 2022-03-10
快速总结↬技术面试过程中存在不足之处已不是什么秘密。 它经常充满焦虑和压力。 在本文中,我们将看看应聘者在技术面试中最常犯的七个错误,并探讨避免这些错误的方法。

我在很多技术面试中都失败了。 年复一年地过去了,我的技术面试技巧会慢慢进步。 直到我收到了来自 Spotify 的梦寐以求的工作机会,并通过了谷歌的技术面试,我才意识到在过去的几年里我学到了多少。 终于,我的学习有了回报! 这也是许多开发人员因 COVID 开始失业的时候。

“如果我在通过计算机科学学位的数据结构和算法面试时遇到困难,”我想,“我无法想象这些概念对于自学成才的开发人员来说有多么难以理解。” 所以在过去的一年里,我的使命是让每个人都可以使用数据结构和算法。

我发现很难找到一种资源来学习有关技术面试过程的所有内容。 从招聘人员的电话到系统设计面试再到工作机会的谈判,没有包罗万象的技术面试资源,所以我决定创建一个。

关于远程采访的说明

由于全球大流行,许多公司已经完全偏远。 这很棒,因为它允许世界各地的候选人申请,但这对于几乎没有在线面试经验的候选人来说可能是令人生畏的。

以下是您的虚拟面试的一些提示。

  • 提前到达。
    没有什么比参加在线会议并意识到您需要下载整个驱动程序包才能运行程序更令人恐慌的了。 我建议提前使用会议应用程序创建一个帐户并与朋友进行测试会议,以确保您可以访问该应用程序并使用在线控件感到舒适。
  • 使用耳机。
    我总是建议您使用耳机进行远程技术面试。 它们将有助于减少背景噪音并确保您清楚地听到讲师的声音。
  • 为您的电脑充电。
    远程会议工具会很快耗尽您的计算机电池,尤其是在您进行实时编码的情况下。 为了解决这个问题,如果可能的话,让你的电脑在整个面试过程中都插上电源。
  • 测试你的相机。
    虽然远程采访让我们处于安全和熟悉的环境中,但我们经常会忘记从视频帧的背景中删除令人讨厌的项目。 我总是建议举行一次测试会议来检查您的视频帧并从背景中删除脏衣服。 如果您的背景不理想,您也可以使用虚拟背景进行远程面试。
个人工作空间的外观图片
投资个人工作空间是值得的:拥有不错的相机、良好的照明、良好的麦克风和舒适的设置。 (大预览)

技术面试流程

当您开始与公司进行技术面试时,您的招聘人员应告知您对该过程的期望。 技术面试如此令人焦虑的原因之一是缺乏流程标准化。 一家公司的技术面试与另一家公司的技术面试看起来截然不同。 但是你可以准备的技术面试过程之间有一些共同点。

这是您在即将到来的面试中可能会看到的技术面试流程的通用版本。

招聘人员电话面试

您的第一次面试将是招聘人员的电话面试。 在这次电话会议中,您将讨论工作、公司以及您对面试过程的期望。 不要掉以轻心:技术面试过程中的所有面试对于获得工作机会都至关重要。 如果您似乎对这个角色不感兴趣,招聘人员可能不会让您进入流程的下一阶段。

如果您要申请许多不同的职位空缺,我建议您保留一份包含职位、公司、招聘信息和任何相关信息的电子表格。 您应该在招聘人员电话面试之前回顾您的笔记,以确保您消息灵通并留下良好的印象。

技术筛选

如果招聘人员的电话面试顺利,您可能会进入技术筛选面试。 此面试可能是异步的,您不与人工面试官互动,而是在有时间限制的平台上完成编码挑战,或者您可能有现场面试官。

公司通常会进行技术筛选,以确保候选人具备在某个职位上茁壮成长所需的基本技术知识。 全面面试每一位候选人可能会很昂贵,因此技术筛选是减少候选人库的一种方法。

您将在这次面试中进行编码,因此对您的基础编程语言充满信心非常重要。

带回家项目

有些公司需要一个带回家的编码项目来代替编码挑战,或者除了编码挑战之外(同样,所有流程都不同,因此请咨询您的招聘人员以了解具体情况)。

编码项目是一个两极分化的话题:一些候选人喜欢它们,而另一些候选人则认为它们不公平。 一方面,编码项目允许您使用您喜欢的工具在更自然的环境中展示您的技能。 另一方面,这些项目可以成为公司获得免费(通常是无偿)劳动力的一种方式。

许多有家庭、多份工作或其他耗时承诺的候选人可能没有必要的时间来完成带回家的编码项目,这可能会给没有相同职责的候选人带来不公平的优势。

如果您的任务是带回家的项目并且没有时间投入到它上,您可以询问招聘人员是否有替代方案。 可能还值得询问您是否会为您在这次面试中花费的时间获得补偿(有些公司会付钱给您,尽管他们都应该)。

现场采访

“现场”面试阶段可能是最终收到工作机会或拒绝之前的最后阶段。 许多公司过去常常将候选人带到他们的办公室进行一整天的面试,但由于大流行,这些面试是虚拟进行的。

许多候选人发现现场面试压力最大,因为它需要您从当前职位休假一天才能完成。 您可能会进行三到四次面试(通常为半天),包括流程/价值观/协作面试(您如何与团队协作,如何解决冲突)和编码面试。

现场面试压力很大,因此请记住在每次面试前休息并减压。

面试过程注意事项

技术面试过程很紧张,可能会让你筋疲力尽。 确保你在每次面试后花时间减压并反思它是如何进行的。 有没有比其他人更难接受的采访? 如果是这样,请在下一次面试过程中关注这些领域; 一些招聘人员甚至会为你提供面试官的反馈,这样你就可以专注于学习。

您还应该反思您在面试过程中的感受。 面试官是否让你感到安全和舒适? 这甚至是你会在其中茁壮成长的工作环境吗? 请记住,技术面试是双向的。

既然我们已经详细介绍了技术面试过程,让我们深入了解候选人通常会犯的七个错误,以及避免这些错误的技巧。

跳跃后更多! 继续往下看↓

错误一:沟通不畅

技术面试应该衡量你的沟通和解决问题的能力,而不一定是你是否为编码挑战获得了最佳的、可行的解决方案。 解决问题的关键在于沟通,但您知道每种文化对“优秀沟通者”的定义不同吗?

有两种不同类型的通信:

  • 低语境
    非常明确,多余,直截了当。 信息表述清楚,应按面值解释。
  • 高语境
    更模棱两可的是,听众应该在字里行间阅读(或阅读空气)并解释隐藏的信息。

在技​​术面试中,无论您习惯于如何沟通,都必须练习低语境沟通。 如果你需要一点时间思考,告诉你的面试官。 如果您需要帮助,请寻求帮助!

候选人通常不会进入下一个面试阶段,因为他们未能有效地沟通。 如果您将面试视为对话而不是考试,那么您更有可能进行有效的沟通。

错误二:不知道答案时不承认

如果你不知道某事的答案,那就承认吧! 当候选人有自我意识和谦虚地承认他们不知道某事的答案时,面试官会很感激。 承认自己一无所知比“BS”通过它要好得多。

如果您不确定如何回答问题,您可以说:“老实说,我不确定。 如果我必须做出有根据的猜测,我会说……”人们不想与“无所不知”的人一起工作; 他们想与承认自己不知道答案的真实人类合作

错误#3:面试前一晚死记硬背

老实说:我们都在前一天晚上挤满了面试。 花时间面试很累,但现实是面试是一种技能(可悲),必须练习。

虽然你可能会觉得在面试前一晚的死记硬背中学到了一些东西,但这种学习是不稳定和肤浅的。 我们的大脑只会在面试前一晚塞进时将信息编码到短期记忆中。 这意味着你刚刚“学到”的所有信息都会在面试后迅速消散。 因此,最好在面试前的几周内做一点学习,而不是前一天晚上补习班。

此外,你更有可能反刍信息而不是真正理解它。 如果你只是背诵你记住的信息而不是解决一个解决方案,它会很快变得明显。

有效学习的一种策略是使用上下文切换作为工具。 虽然在学习新技能的过程中切换环境似乎无效,但它实际上是最有效的学习工具。 当你在学习过程中切换上下文时,我们的大脑更难回忆信息,最终加强编码信息,从长远来看更容易回忆。

如果您想了解更多关于有效学习方法的信息,这里有一些对我有帮助的资源:

  • “原子习惯”,詹姆斯·克利尔
  • “学习如何学习”,Coursera 课程
  • “让它坚持下去,”彼得 C. 布朗、亨利 L. 罗迪格三世、马克 A. 麦克丹尼尔

错误 #4:为算法和数据结构记住代码

候选人经常觉得他们必须记住算法和数据结构的代码,但现实情况是你可能不必从头开始编写这些东西。 反刍代码不是一项有用的技能,你的面试官将能够告诉你只是记住了一个解决方案。 相反,您应该旨在了解您正在完成的工作的过程。

此外,您不需要学习曾经发明的每一种排序和搜索算法。 相反,您可以确定不同数据结构的最佳解决方案并学习其背后的概念。 例如,如果要求您对整数数组进行排序,您可能知道像合并排序或快速排序这样的分治算法是一个很好的解决方案。 如果您了解算法或数据结构如何工作的概念,您就可以构建解决方案。

最后,大多数编码面试将使用基础编程语言进行(即使公司正在寻找 React/Vue.js 开发人员):您可能不会被要求使用框架或库进行编码,因此请确保您是对您的基础编程知识充满信心。

错误#5:忽略“文化契合”采访

整个技术面试过程中的所有面试都很重要,但是,似乎重点放在了数据结构和算法上。 虽然数据结构和算法是一个重要的研究领域,但你应该对过程中的其他面试给予同样的关注:不要将数据结构和算法优先于其他“更容易”的面试,如“协作和过程”。

“文化契合”面试旨在了解您如何在团队中协作和处理冲突。 您可能会收到以下问题:

“告诉我一个你正在从事的项目失败的时间。 为什么它失败了,你是如何前进的?”

要么

“告诉我你与团队成员发生冲突的时间。 你是怎么解决的?”

写下你对这些问题的回答并练习大声回答。 你不想听起来像排练过的,但你想要简洁而不是漫无边际。 保持你对几句话的回应。 此外,眼神交流和肢体语言也很重要。

尽量不要坐立不安,专注于与面试官进行眼神交流!

错误#6:从优化的解决方案开始

除非您对编码挑战的最优化解决方案有 110% 的信心,否则您不必从最优化的解决方案开始。 候选人通常认为他们必须从一个最佳解决方案开始,这让他们绊倒了。 他们被卡住了,无法前进。 相反,从非最佳解决方案开始,然后说:

“我知道这不是最高效的解决方案,但我想获得一个可行的解决方案,并在面试后期对其进行重构以提高性能。”

你的面试官会欣赏你的诚实和对表现的尊重。 您还可以更快地取得进步,并且在面试中,小小的胜利会对您的自信心和整体表现产生巨大影响。

错误 #7:忽略编程基础

前端开发人员角色的候选人忽略了他们的 HTML 和 CSS 技能以优先考虑 JavaScript,但更多的面试正在测试基础编程技能的知识,所以不要忽视它们。

我们经常忘记基础并跳到更专家级的框架和库,但这会阻碍我们的面试表现。 面试是用基础语言(即 JavaScript,而不是 React/Vue.js)进行的,所以不要忽视基础。

结论

每个人都对技术面试过程感到焦虑,但是通过注意这七个错误,您可以提高获得工作机会的机会。

一旦你收到工作机会,你就可以决定是否要谈判。 您可以协商很多事情:带薪休假:工作时间、股权、签约奖金、职位和薪水只是其中的一小部分。

在谈判工作机会时,进行研究很重要。 担任这个角色(以及在这个地理位置)的人每年赚多少钱? 您可以使用 Glassdoor 进行一些市场调查。

玻璃门截图
Glassdoor 已成为检查世界各地公司文化、薪水、流程和团队的地方。 (大预览)

您还应该认识到招聘人员有限制,可能无法为您提供更高的薪水。 相反,你可以要求签约奖金或股权,但要准备好让他们说他们不能增加你的报价。

你应该关注“为什么”你应该获得额外的薪水或福利; 你带来了什么别人不会的东西?

最后,不要给招聘人员最后通牒,即“如果你不给我这个薪水,我就走人”。 相反,请关注您加入团队但需要改进/更改要接受的提议这一事实。

这是您可以用来要求增加基本工资的示例电子邮件:

“非常感谢你的提议。 我真的很激动,并期待加入这个团队。 在我接受这个提议之前,我想讨论一下基本工资。 我是技术社区的活跃成员,并使用 X 学习平台在线教授大量课程。 我知道我对 Y 的广泛​​了解将使团队受益匪浅。 因此,我正在寻找 A 到 B 范围内的基本工资。如果我们能完成这项工作,请告诉我,我会立即签署报价!

如果你没有得到工作机会,别担心! 几乎每个人都曾因某个职位而被拒绝。 你不是一个人! 花一些时间来反思你的面试,并确定你可以在下一轮面试中改进哪些方面。

如果你想了解更多关于数据结构、算法、编码项目、文化契合面试、系统设计面试等的信息,请查看我的新书《De-Coding The Technical Interview Process》。 在过去的一年里,这本书一直是我的热情所在,它帮助许多开发人员(包括我自己)获得了工作机会!

对自己要有耐心。 你可以这样做!

关于 SmashingMag 的进一步阅读

  • 建立自己的个人学习课程
  • 在远程工作时代改善团队的沟通
  • 使用产品设计文档更好的文档和团队沟通
  • 使远程工作工作:有用的工具和资源