您现在的位置是:首页 >生活 > 2020-11-06 13:59:04 来源:

Twitter工程师分享了有关如何加快编码面试的5个技巧

导读 编码采访是一项艰巨的经历。您为自己的理想工作进行面试,一个随机的陌生人要求您用脚思考一个小时。您将被置于显微镜下,您所做的每个注释

编码采访是一项艰巨的经历。您为自己的理想工作进行面试,一个随机的陌生人要求您用脚思考一个小时。您将被置于显微镜下,您所做的每个注释以及编写的每个代码都将受到严格的分析。汗珠从您的手掌上滴落,您的思想跳动无处不在。我该如何解决这个问题?我的方法会处理所有极端情况吗?还剩多少分钟?我的面试官的表情是什么?

在 开始编写代码之前,您应该提出一个解决问题的计划。您应该在这部分上花费大约5到20分钟。通常,我的游戏计划包括绘制图表和测试示例。例如,每当我遇到图形问题或递归问题时,我都喜欢画一棵树来标识要访问的不同状态以及要访问的状态的顺序。更重要的是,绘制这些树突出了我可能需要执行的任何逻辑,例如回溯。

提出游戏计划有几个优点。首先,面试官可以告知您方向是否错误。如果是这样,那么您只需编写所有错误代码即可节省30分钟!其次,很容易确定解决问题所需的数据结构和变量。

如果您最初的游戏计划不是最有效的,那就可以了!难道不担心早早就确定最有效的解决方案。这是因为拥有有效的代码比损坏的代码更好,甚至没有代码也更好。这往往是众多面试候选人的败笔。

实施游戏计划后,您可以重新完善自己的方法以使其更优化。

2.经常沟通

因为面试官不知道您的内心正在发生什么,所以您必须将您的思维过程传达给面试官。这是一项重要的重要软技能,因为面试官正在评估您的解决问题的能力以及解决该问题的过程。

我之所以强调这种技能,是因为有效的沟通使我找到了一家顶尖公司的工作机会。在现场采访中,一位高级工程师向我询问了一次艰难的动态编程采访,历时45分钟。我绘制了一个2D矩阵和该矩阵中的不同状态。但是,在表达正确的递归关系方面,我花费了最长的时间。我将在众多边缘情况下测试我的递归关系,有时,我的方法会得出错误的答案。我将解释为什么我的递归关系是错误的,并讨论改进它的方法。我传达了我思考过程的每一步。

在会议结束时,我有一个已定义的重复关系,但是没有编写任何代码。零码。整个白板上都充满了一堆矩阵和箭头。当我走出面试室时,我确信自己没有通过面试。我会赌一辈子的积蓄,如果失败了。几天后,我接到一个电话,要求得到这份工作。

那么您什么时候需要沟通?

你需要沟通

当您提出游戏计划时

当您发现有几种解决问题的方法,并且您确定哪种方法是最有效的

当您在代码中看到错误时

当您通过测试用例逐步检查最终代码以验证正确性时

3.始终测试您的代码

一旦编写了最后一行代码,这就是一种令人愉悦的感觉。您在压力下解决困难的问题上感到很成功。但是,您还没有越过终点线。如果您对面试官说您已完成代码,而未使用测试用例对其进行验证,则可能会严重影响面试性能。

如果访问员在您的代码中发现错误并将其告知您,则访问员将在反馈评论中提及“访问候选人未测试代码,并且我确定了候选错误”。不测试代码并不遵循软件工程中最基本的实践。没有人会在第一次尝试时编写完美的代码。您始终需要验证您的代码以获取并保持客户的信任。

因此,请始终确保至少使用两个测试用例来遍历代码,其中一个应该是边缘用例。确保在测试部分进行沟通。