在技术面试中避免11个错误

在技术面试中避免11个错误

错误1.傲慢

我问一个关于候选人解决方案的问题,候选人说:“啊,我看到你不明白我在这里做了什么(解释)。是否清除了你的困惑?”

你的面试官希望你展示你的思维方式。他们不太可能会感到困惑,因为他们采访了很多人,对这个问题非常熟悉,并且看到了很多可能的答案。即使他们真的不理解你的代码,也会发生这种情况,向他们解释你的结果而不会让他们感到不快,这会很客气。

重要的是:当你被雇用时,你将不得不与你的团队成员沟通。面试官希望确保他们的团队成员能够很好地沟通,无论是经验丰富的人。

错误2.在没有知识的情况下使用流行语

一个特里。NoSQL数据库。负载平衡器。一张图。一个集群。如果你打算使用它们,你必须解释原因。如果有人不知道散列是什么,很容易理解。

“我在这里放置一个负载均衡器”,说这个候选人在他的数据库集群旁边画了一个矩形。“它将每小时运行一次,并将查询所有数据库机器,处理数据并记录结果。”

嗯。这不是负载均衡器的功能。我想也许这是一个漏洞,并且提出了更多的问题。不,他们只是一直称它为负载均衡器。好吧。

“我正在使用一个trie”,另一位候选人说。当我要求更多地告诉我时,他们无法展示它的一个小例子。

同时,不要了解任何事情的细节。说实话吧。重点不是假装知道你不知道的东西。

重要的是:如果一家公司雇佣了一个在访谈中“流行”但却没有真正知识的人,他们会对工作成果感到失望。这就是为什么他们在招聘之前会面试候选人 - 以估计他们的知识。

错误3.没有理由

“我将在这里使用NoSQL数据库。”

“我的集群中需要50台服务器。”

“我每天运行一次,检索92条记录。”

太好了,告诉我为什么。我相信你有一些理由,利弊,我很乐意听到他们。为什么不是SQL?哪个确切的NoSQL数据库?在这个总称下有很多数据库,你真的想缩小你的答案的范围。图形数据库和面向文档的数据库适用于非常不同的目的。

为什么只有50台服务器,而不是70台?为什么每一天,而不是每一个小时?你从哪里得到这个92号码?

重要的是:面试官希望能够理解他们未来同事的决定。对你选择理由的解释将显示你根据逻辑,需求和数据做出决定的能力,而不是一时兴起。这里是我的关于为什么推理很重要的文章。

错误4.不要求澄清问题

你的面试问题很可能不会100%完成。它是故意完成的:模拟真实世界的环境,你不可能完整描述任务。您需要提出问题,所以请离开!

大声地谈论你的假设。有时你会承担一些事情,但面试官有一个不同的想法。如果你不谈论它,你的结果和他们的期望之间就会出现不匹配。

你也可能有时想问一下:我正朝着正确的方向前进吗?你想让我专注于这个还是那个?面试官会非常感激他们不需要打断你讨论他们需要什么。

为什么很重要:要求很清楚并且100%完成非常罕见。预计开发人员能够在实施前澄清他们。

错误5.忘记需求

我在开始时告诉候选人:“我们需要尽可能接近实时”。我在整个采访过程中重复这个。候选人每小时分批处理数据。

在另一个案例中,候选人询问将会有多少物品。我告诉他们很多 - 比如20M。该候选人设计了一个适合数千用户的系统。

我们需要多语言支持,但候选人的代码只支持26个ASCII字母。

候选人需要注意。列出的要求很重要,应予以考虑。如果你不知道如何处理它,你可以建议:“我记得还有其他的语言,现在我只有英语的想法,让我解决这个英语,然后看看怎么样我可以处理其他语言“。这表明你没有忘记,并且还展示了你的优先技能。

当你提出这样的事情时,有助于将这部分代码抽象出来。将它放入一个方法或组件中,以后可以轻松替换。这里有一篇文章解释为什么以及如何做到这一点。

为什么重要:如果用户有要求,他们不会忘记它。如果开发者忘记了它们,它们就不会开心。如果你绝对不能支持它,请明确告诉面试官。然后,您可以进行权衡,就像在实际工作中一样。

错误6.缺少角落案件

“我在5秒钟内运行一次,并从最后5秒钟中选择记录”,候选人说。就在一分钟前,我们确定时间戳字段附带记录。这意味着刚刚7秒之前的新记录可以插入。这意味着我们不会处理这个记录 - 永远不会。

候选人解决了关于国际象棋的问题,忘记了有角落,在[-1,-1]处访问“棋盘”阵列。

有三个工作进程,都选择最后一个未处理的记录。他们在完成时将这些记录标记为“完成”。候选人没有想到将记录标记为“正在进行”。这意味着一个记录最多可以处理三次。

尝试从逻辑上思考:你的解决方案在所有情况下都能工作吗?您是否验证用户输入?你有无尽的循环?如果你通过0,-1,INT_MAX?您的系统如何从断开的网络连接恢复?如果你有一个请求的高峰怎么办?

试着在你的脑海中测试它,甚至在那里写一些测试。大声说出你的思考过程。面试官可能会帮助你。

这里有一篇文章可以帮助你更好地考虑角落案例。

为什么重要:来自用户的要求将很少包含任何角落案例。甚至有些基础案例可能会丢失。开发人员能够识别它们并确保代码始终工作,这一点非常重要。

错误7.深入细节

一旦我有一个候选人开始选择一个协议,系统的不同组件将用于相互交谈。TCP还是UDP?组件尚未定义。

它有助于询问面试官他们是否期望你用或多或少的细节描述某些事情。我找到一个很好的方法来首先构建高级概述,然后再详细介绍有关特定部分的更多细节。

为什么重要:展示一些东西时,你要确保每个人都遵守。对主要照片的细节过分分心。而且,从实用的角度来看,面试官没有足够的时间讨论他们想要的所有主题。

错误8.未提供足够的细节

“所以我们在这里存储数据,然后选择需要的记录”。

好的,我们在什么数据库中存储它们?以什么模式或格式?哪些记录被视为“需要”?有数以亿计的行,我们如何加快选择过程?

我已经说过,如果你解释了太多的细节,这可能是一个问题。但是,对主要部分的光泽也不完美。特别是如果面试官告诉你他们对某个特定部分感兴趣,那么你应该专注于这一部分。

重要的是:采访者想要对他们的头脑有一个相当不错的解决方案,以便能够正确评估结果。

另外,如果你没有足够的想法,很可能你会错过一些角落甚至是基本案例。以数据库为例。如果有数十亿行,他们可能不适合一台机器,所以你必须建立别的东西来解决这个问题。

错误9.隐含的假设

这个对话框通常是这样的。

候选人说:“这是太多的数据,我需要一个具有分片的集群,30个节点和3个副本,一个负载平衡器,以及......”

我问:“我们在这里有多少数据呢?”

候选人暂停并问道:“那么,我们有多少用户?”

看到?目前还不清楚数据来自哪里,有多少用户和多久,但我们已经有一个拥有90台机器的集群。昂贵!

问问题。有多少用户?多少数据?什么是我们可以容忍的响应时间?

经过一些计算后,通常我们只需要存储200MB的数据。繁荣!我们立即在该群集上节省了大量资金。

为什么它很重要:出于同样的原因,要求很重要。面试官,最终你的用户会记住一张照片,而你 - 一个非常不同的照片。除非你谈论它,否则你最终可能会执行错误的事情。

错误10.避免这个问题

“情况X会发生什么?”

“好吧,你知道,如果我要做Z,而如果A或B,那么C就会失败......”

“好的,那么X呢?”

“让我们看看,如果X ...哦,这让我想起,当我们有D ......”

很棒,你有很多想法可以分享。试着先回答这个问题,然后继续其他想法。

为什么它很重要:面试官问你一个问题的原因。他们希望更好地理解你的知识并熟悉你的思维过程。如果你不回答,他们不能这样做。当你被雇用时,你的经理和同事也会感激你给他们他们想要的信息。

错误11.对面试官不礼貌

候选人一直在看我的男性面试合作伙伴,只和他谈话,即使我提出一个问题。当然,这让我们两位面试官都非常不舒服。我们如何一起工作?

有传言说有些候选人完全无视女性面试官。有时他们认为所有女性都只是HR。有时他们对男性和女性都不礼貌。有时他们傲慢地拒绝回答问题。我真的无法想象为什么,但他们确实如此。

为什么重要:我想与尊重我的友善和礼貌的人一起工作。其他人也都这样做。如果一个候选人开始对他们周围的人发表粗鲁的评论,他们显然不适合 - 对任何球队来说。


分享到:


相關文章: