谷歌的 slow hiring 导致今年岗位放开时间较晚,很多同学最近才陆续拿到 offer 。
一边有人反馈面试bar 拔高,算法偏难、加试普遍;也有人却说写了个 bug,依然过了面试...
不少面试者有此疑问:Coding 面试中出现 bug,是不是就凉凉了?
答案是,**不一定!**最顶尖的工程师也很难在面试中一次性做到 bug free,所以通常面试官不会因为代码出现 bug 就挂掉你的面试。他们往往更注重考查:
是否能够意识到有 bug
是否知道如何识别和修正 bug
Coding 面试实际上就是个示例,主要为了考察求职者的编程能力,所以不要求严格意义上的 bug free。
如果写出 bug,但自己跑过 test case 后改正了,一般也不影响面试通过。
来源:1024bbs
再比如这段 Java 代码:
第 2 行中有一个“大” bug,应该写 add,而不是 insert 。
但大部分面试官并不会吹毛求疵,他们会通过这个代码示例推测:面试者可能不会使用内置的链表类。这一点,面试官有可能根本不 care 。
不过有些短板,可能是致命的,直接让你 fail 掉面试。下面这段简单的代码一共出现了 4 个问题:
1. 如果数组为空,此程序将在第 2 行崩溃。 2. for 循环开始于 i=0,但没有必要,应该在 i=1 开始。 3. for 循环的循环条件为<。长度,每次都要提取数组长度,增加步骤。 4. 第 4 行为>。不好
这种情况下,面试官可能会认为:面试者会写代码,但不常写(因为问题 3 )。而且连这样一个基础的 for 循环程序也写不好,简直不靠谱!
以下是面试中的一个真实代码:
这段代码就不仅仅是粗心的问题了,它根本毫无意义。想通过面试几乎是不可能的!
好些人在面试过程中自我感觉良好,但却收到了拒信。他们或许很惊讶:我写的代码“完全正确”怎么会被拒呢?
来源:1024bbs
事实上,仅仅有正确度(做出题目)是不够的!
面试当中,被考察的能力是方方面面的:可能是你的技术知识、代码风格、模块能力、严谨能力等。
虽然你在一个题目上做到了 bug free,但如果你在 coding 过程中不小心暴露了你薄弱的分析能力和 coding 技能,也逃不过面试官的“火眼金睛”。
在日常 coding 中,培养良好的 coding style 可以帮助你避免面试中不该出现的 bug 。推荐一些资料:
##1. Google Style Guides
谷歌只有一个代码仓库,源代码都放在自行开发的版本管理系统 Piper 中。如此庞大的代码库,没有统一的代码风格,阅读起来是相当困难的。
因此,内部必须遵循《 Google Style Guides 》,而它的代码风格也被业界默认为标准。
##2. 九章算法班 2020 版
刷题超过 3000 道的令狐冲老师,在《九章算法班》中强调过,想拿到大厂面试的 hire 和 strong hire,良好的代码质量是基本要求。提升 coding style 的途径有:
更具体的构建优秀 coding quality,欢迎来试听令狐老师近期新改版的**《《九章算法班》戳我即可报名免费试听前四章**~