如何在编程面试中失败

2025-06-07

如何在编程面试中失败

我做过很多次采访。我拒绝面试官的原因有很多,但有一些是反复出现的主题。我想列出一些最常见的问题。其中一些我曾经认为是显而易见的,而其他一些可能不那么明显。

不了解编码的基础知识

这件事让我很困扰。

创建列表、拆分列表并对其进行迭代应该不是什么难事。函数、类、变量以及语言的基本结构对你来说应该一点也不难。如果在这些方面磕磕绊绊,我最快就会拒绝你。

我并不指望你能熟记整个语言及其标准库。不过,我说的是基础知识。面试的时候没必要查循环语法。我还发现,一个人掌握的知识越多,写代码的速度就越快。精通一门语言可以减轻压力,让你的大脑腾出时间思考问题本身,而不是纠结于语法。

也许你使用过很多种语言和很多技术。我理解这一点。我也是,而且我经常忘记用某种语言做什么。但这不是一个借口。如果你正在选择面试语言,你需要在开始之前复习一下基础知识。我知道 C++ 的基础知识比 Python 难,但我希望你了解你选择的语言。

当我进行现场编程时,我会为这门语言创建一个速查表。里面列出了我可能需要的所有东西——我可不想在观众面前犯一个 for 循环的错误!你也可以这样做,然后在面试前把它背下来。只要你事先了解这门语言,就没有任何借口。绝对没有。

不要说话,不要说不好的话,不要不感兴趣

面试就是谈话,所以说话的方式至关重要,这一点毫不奇怪。

如果我问一个开放式问题,那是因为我想要的答案不止几个字。抓住机会说出来。在一些句子之间留出短暂的停顿;这能让我有足够的时间理解,并在必要时打断对方。

当你编程的时候,我希望你能谈谈你正在做的事情。我不想读屏幕上的代码。告诉我你为什么选择这段代码,或者你目前的目标是什么。如果我不知道你在想什么,我就帮不了你。我不想坐在那里看着你苦苦挣扎。如果你说出来,我可以帮助你集中注意力,引导你找到正确的答案。如果你什么都不说,你就有可能把时间浪费在一些无关紧要的事情上,或者误解问题。

学习如何更好地说话。我遇到过一些人,他们总是不停地“嗯”和“啊”,我很难听懂。虽然没人期待世界级的演讲,但清晰的表达更容易被听众接受。你应该让面试官思考你话语的含义,而不是费力地去理解你在说什么。练习是关键。不需要太多努力就能取得显著的进步。

与说话粗鲁密切相关的是听起来漠不关心。听到一个内心死寂、工作如同牢笼的人说话绝对令人倒胃口。这也可能被视为不尊重。我正在抽出时间采访你,希望你能在采访过程中表现出些许兴趣。

说话清楚,并且充满兴趣。

过度思考,使问题复杂化

面试时间不长,你需要完成的所有工作都应该在规定的时间内完成。如果你的编程面试时间是一小时,那么你可能只有 35-40 分钟的编程时间。我们需要时间交流,而不仅仅是写代码。

我不会给你一个需要太长时间的问题。事实上,我给出的第一个问题只需要10-20分钟的编程时间。我更喜欢问一些后续问题,而不是一个大问题。然而,即使你被问到一个实质性的问题,你也必须假设它在短暂的面试中是可以解决的。

把问题复杂化、问太多假设、跑题,都会浪费你宝贵的时间。专注于眼前的问题。不要寻找隐藏的陷阱,也不要试图设计完美的系统。这就是为什么说出你的想法至关重要。这能让面试官有机会让你保持思路清晰。

按照给出的方法解决该问题。

对上一份工作一无所知

我总是会询问你的工作经验。不仅是一般经历,我还想了解你的具体职责。我想了解你如何融入团队。我会根据你对产品及其开发流程的描述能力来判断你的兴趣程度。

我在听具体的技术。很好,你是一名全栈开发者,但这意味着什么?你使用过 NodeJS 和 Angular 吗?你是如何与服务器通信的?你使用了哪种数据库?此外,你实际参与了哪些部分?我想了解你的参与程度。

如果你无法提供具体细节,我会假设你要么夸大了自己的职位,要么就是你对这个项目缺乏投入。无论哪种情况,都会对你产生负面影响。

我也会用这些信息来指导接下来的面试。如果你看起来像是顶尖开发者,我会减少一些有用的提示,给你更多自主发挥的空间。如果你是新手,我会更慷慨地提供帮助,避免不必要的压力。

编写草率的代码

这是一次面试。我并不指望你能写出完美整洁的代码。然而,可接受的代码和糟糕的代码之间还是有很大区别的。

我最大的抱怨就是糟糕的变量名。你为什么叫这个变量n?你正在现场采访,想跟我沟通。清晰的变量名能帮我理解你的代码。

如果这是在线采访,或者我提供了设备,我通常会原谅一些格式问题。有些采访编辑很难正确缩进或修复一些问题。但我确实看到了一些一致性问题,比如括号和分号的位置。

我很少因为面试官的马虎而让面试官失望。然而,我却见过很多次糟糕的代码拖慢了面试进度:要么是候选人很难理解他们的代码,要么是我不得不问他们到底怎么了。

侮辱某事或某人

千万别这么做!

无论你的观点或经验如何,都不要对任何事情发表负面评论。你对我、面试官或我的背景一无所知。你不知道我认为哪些概念好哪些不好。你不知道我和谁共事过,也不知道我经常和谁交流。

与面试官的世界观相悖的负面观点会立即损害他们对你的印象。即使我同意你的观点,现在也不是提出这个观点的合适时机。我是一个思想开放的人,但你选择在这个时候抱怨某件事,本身就给你带来了负面影响。我不想和消极的人共事。你来这里是为了提升自己,而不是贬低别人。

如果有人让你谈论一些不好的事情怎么办?这些问题可以直接问“X 有什么问题”,或者像“你最糟糕的经历是什么?”这种时候,你应该放下自尊,谈谈学习经历、差异以及团队的挣扎。你应该谦虚地谈论,并专注于积极的方面。我喜欢那些能把糟糕的情况变成积极故事的人。我喜欢和这样的人共事。

结论:很多软技能

编程面试是一个互动环节。你需要与面试官合作。即使面试官水平不高,你也需要与他合作。即使没有受过培训的面试官也会主动与你沟通,并尽力帮助你。此外,由于清单上的许多标准都是标准的社交技能,所以每个人都会根据这些标准进行评判。对于没有接受过面试培训的人来说,情况可能更糟,因为他们可能更难忽视面试压力。

如果你读过我的书,你就会知道我非常重视人际交往能力。你可以看到,很多失败都与软技能有关。但是,如果你想通过面试,你仍然需要有解决问题的代码。

本文的所有内容都旨在帮助您找到一个好的解决方案。通过确保面试顺利进行,您可以充分利用时间。您可以获得有用的反馈,并专注于编写正确的代码。我知道有些面试无论你做什么都会很艰难。但无论如何,请尽力而为,绝对不要让情况变得更糟。

如果你碰巧犯了这些错误之一?那就改正吧。这些都是可以练习和提高的技能。


阅读我的书《什么是编程?》,了解成为一名优秀程序员的必备素质。我关注的是人,关注软件存在的原因,关注软件核心的代码,以及你——键盘背后的人。

文章来源:https://dev.to/mortoray/how-to-fail-a-programming-interview-b5i
PREV
我不知道如何创建网站
NEXT
我如何写博客