通过技术面试的注意事项
技术面试不仅仅测试您对数据结构和计算事件发生概率的算法的理解。
这些面试旨在了解你在之前项目中的责任级别、你的沟通能力,并评估你过去的经验,看看你是否能够独立做出正确的决策。这就是为什么像亚马逊这样的公司会制定14条领导力原则。他们不想只是雇佣一个数据科学家或软件工程师。
对于许多第一次或第二次面试的求职者来说,这可能不太明显,因为他们会非常专注于回答面试的技术问题。然而,在进行技术面试的过程中,我们想提供一些建议,帮助你更好地准备接下来的面试。
技术面试注意事项
准备好数字
照片由 Mika Baumeister 在 Unsplash 上拍摄
我记得我第一次采访 FAANG。
在我完成第一轮技术面试后,一位技术项目经理(TPM)对我进行了面试。他们开始问我一些工作经历以及过去做过的项目。一开始,情况还好。然后他们开始问我在目前职位上发挥了什么作用。
在我最初的回答之后,他问了一个我之前从未想过的问题。
“该项目节省了多少时间?”
我以前从未想过这个问题。在我职业生涯的那个阶段,我几乎只是按吩咐做事。从未考虑过诸如影响力和节省时间之类的宏观概念。当时我还是个年轻的开发者,只想着编程以及如何满足我所支持的人的需求。突然间,这一切都抛到九霄云外了。
剩下的谈话也遵循着类似的模式。我回答的每一个问题都会被反复询问,以评估我除了编程之外还有哪些技能。他们看重的是自主性和独立思考能力,但说实话,我在目前的工作中并没有花太多时间去做这些事情。
我的建议是,一定要准备好数据。像亚马逊这样的公司非常注重指标。他们想要的开发者和工程师不仅仅是开发。这意味着你需要做好准备。当你去面试时,准备好的不仅仅是一两件关于你做过的事情的轶事。确保你准备好解释这些事情的影响。
想想你过去的项目,即使你的公司没有直接计算其影响和/或估算它节省了多少时间。你应该花点时间自己估算一下。
准备好一些指标表明你具备全局思维,并且对自己的任务有主见。这能让你脱颖而出,并帮助你更好地理解如何在 FAANG 中运营。
在开始之前,请先讨论一下你的问题
大多数人最初几次白板面试都会遇到一些困难。你可能会因为在开始之前就试图在脑子里想出一个完美的答案而感到不知所措。又或者,你可能在没有和面试官沟通你的计划的情况下就开始写下答案。
立刻开始寻找解决方案可能很诱人。但这可能会让你一开始就走上错误的方向。你可能会发现自己花了15分钟才解答第一个问题,却离答案还很远。
所以,提前花几分钟构思一下你给面试官的答案。概述一下你将使用哪些方法、数据结构和算法来得到解决方案。这不仅能帮助你解决问题,还能让面试官了解你的思维过程。
即使你没有给出最佳答案,有时面试官也会对此持更积极的态度。沟通非常重要,能够完整地阐述你的过程可以展现你传达解决方案的能力。
此外,如果你遇到一位出色的面试官,他们通常会引导你找到答案。我们并不是说他们会把答案告诉你,但他们可能会问一些问题,确保你考虑到可能出现的极端情况,避免重大陷阱。
说实话,我记得最好的一次面试完全不像面试,感觉就像两个工程师一起解决一个问题。当然,也有一些面试官根本不会帮你。
准备好要问的问题
这或许是老生常谈的技巧,但如果面试官没有问任何关于工作的问题,确实会让人很不舒服。遗憾的是,对于你的第一份工作,你可能并不在意这份工作本身。你只是想要这份工作。所以,想出一些真诚的问题很困难。
这并不意味着你不应该准备一些问题来表示对这个职位的兴趣。
我不建议你问一些泛泛的、公司层面的问题,因为这些问题你用谷歌搜索一下就能找到。相反,你应该专注于向面试官询问他们的角色相关的问题。例如:
你最近面临的最大技术挑战是什么?
你觉得在这里有良好的发展机会吗?
你会如何描述这里的工程师文化?
等等。
这些问题表明你个人对这份工作很感兴趣,也能帮助你与面试官建立更紧密的联系。
现在我长大了,我会问这些问题,因为我知道这不仅仅关乎薪水。我真正需要的是既有挑战性又能对公司产生影响的问题和项目。
当然,研究最酷的技术很有趣。但酷炫的新技术永远都会出现。我更关心项目带来的影响,而不是所使用的技术栈。
与朋友或在学校练习
读这篇文章的人可能有些人还在读大学,有些人可能已经不在了。对于在校学生,你的学校可能会提供模拟面试服务。如果有的话,你应该接受他们的服务。对于不在校的学生,可以找个朋友帮忙。
这些服务通常配有导师和员工,他们会持续提供模拟面试,并且对面试流程了如指掌。这意味着你将获得最接近真实面试的体验。
如果你没有这些,那么希望你有一些计算机科学的朋友,或者已经在科技公司工作的朋友可以提供帮助。你越习惯于在白板上讨论问题并解决问题,而不是在电脑上解决问题,你的表现就会越好。
面试官通常会假设自己擅长编程,所以面试时也会很擅长。可惜的是,这些技能并不总是能转化为实际的技能。
所以一定要多加练习!
技术面试禁忌
不要让一次糟糕的回合打败你
一旦你最终收到面试邀请,通常要经过几轮面试。面试内容可能涉及数据结构、系统设计、行为设计,以及这些大公司想用的各种新方法。
关键在于,事情进展顺利的机会很多,也有很多出错的机会。
您可能会整整一轮都陷入同一个问题。
你可能完全不知道他们引用的是什么面向对象设计。
技术领域很广阔,所以很难了解所有事情。遇到毫无准备的问题也很常见。
关键在于,不要让一轮糟糕的面试影响你接下来的面试。即使你内心深处知道自己搞砸了,也要保持积极的态度。
这是有多种原因的。
第一,如果你在其他面试中表现足够好,公司可能会在几个月后再次面试你,甚至可能换个职位。保持积极心态可能很难,但你永远不知道它会对你产生什么影响。
第二,这只是很好的练习。没错,我们都希望技术面试不是面试流程的一部分,但事实并非如此。所以,你练习得越多,就越能为下一次面试做好准备。
即使你失败了一轮,你也需要保持积极的态度。
不要假设你知道会被问到什么类型的问题
在我们最近关于数据科学面试的文章中,我们讨论了不同的公司和团队在寻找数据科学家时如何寻找不同的特质。
对于软件工程师来说也是如此。
你永远不知道面试时会被问到什么问题,所以最好问问你的招聘人员。大多数 FAANG 都会提供一些学习资料,这很好。但如果你即将前往现场面试,而招聘人员却没有任何提示,那么你应该问问他们面试时应该注意些什么。
有些公司非常注重数据结构和算法。有些公司则将面向对象和系统设计问题混在一起。你最不想遇到的情况就是,你是一个只研究过决策树的数据科学家,却被问到涉及反转链表或遍历树的问题。
这真是尴尬又让人沮丧。说实话,每个人的时间都浪费了,如果公司没有提前准备好这些问题……那我得把很大一部分责任推到他们身上。不过你还是应该问!
您希望在参加面试时获得一切可能的优势。
不要太纠结于解决方案
我们有些人有一个坏习惯,就是过度投入于解决方案。当你谈论一个问题时,面试官可能会试图提供一些提示,以确保你继续朝着正确的方向前进。
然而,当我们全神贯注地思考一个问题时,我们常常会沿着同一条路走下去,即使这条路显然是错误的。
要乐于接受提示。如果你在同一个问题上花了15分钟却没有任何进展,不妨深呼吸一下,努力确保自己走的方向正确。
如果你花了很长时间才找到正确的解决方案,而且你知道还有三四个问题需要解答,那么可以考虑花一两分钟来确保你真的走在正确的道路上。这很难做到,但你肯定不想过度依赖错误的解决方案。
不要说技术栈的坏话
瞧,我们懂了。你喜欢 Hadoop、Go 或其他特定的语言或基础设施。你甚至可能讨厌其他的。
这并不意味着你需要公开表达你对某种特定语言的厌恶。这常常会给人一种精英主义的印象。就好像你比别人更了解,因为你的语言显然是最好的,而其他人的编程都停留在石器时代。
团队和公司使用各种各样的语言。如果你开始贬低某个特定的技术栈,那么你可能也在贬低他们的技术栈。
现在,如果你喜欢某些语言,那就尽管说吧。但一般来说,发表负面意见可能会让人觉得不对劲。
不要让一次糟糕的面试毁了你的接下来的几次
这听起来有点像“不要让一轮面试定义你”,但意义更大。不要让一次糟糕的面试定义你。我们很多人都经历过多次面试,也失败过很多次。
收到一封邮件或电话,如果感觉像是:
“抱歉,你不够好”
感觉太糟糕了。
但是,你不能让一两次糟糕的面试打倒你。我们见过有人在同一年里多次接受同一家公司的面试,直到最终获得这份工作。让一次面试决定接下来的面试经历是错误的。
我们最近在 Reddit 上发布软件面试指南时,确实注意到了一些负面情绪。我们想对所有面试者说的是,不要放弃。
有很多东西要学,你可能无法全部学完。没关系。只要保持积极心态,正确的大门就会打开。
结论
技术面试很难。面试官不仅在寻找程序员,他们通常也在寻找能够独立思考、能够承担项目和工作责任的人才。职位描述似乎要求程序员拥有五年以上经验,能够使用 30 种不同的语言编写代码,并且知道如何使用各种云技术。
别让这件事吓到你,也别灰心丧气。继续申请吧!
不要放弃!
如果您对更多有关数据、软件和技术的视频和帖子感兴趣,请阅读以下内容!
动态批量插入 CSV 数据到 SQL Server
高效程序员的 7 个习惯 数据科学家
如何获得你的第一个咨询客户 算法
如何变得不道德和带有偏见
数据科学咨询;如何获得客户
如何开发强大的算法
数据科学家必须具备的 4 项技能
SQL 最佳实践 — 设计 ETL 视频