为什么面试官不要求申请人阅读一些代码?[关闭]


13

我一生中有十几次面试(我即将毕业),我想知道为什么只要求我阅读和解释一些代码。大约90%的工作主要是关于维护现有系统。IMO读取他人代码的能力是一项重要技能。

为什么面试官不检查它?*

* 在我的朋友中,我是唯一被要求检查一些代码的人。


4
一次面试时,我被要求阅读一些C代码,并指出了代码中的许多不良做法:在此处分配内存并在其上释放方式,等等。这是他们的生产代码。我没有报价。
凯文·克莱恩

1
投票结束是因为我们无法回答别人为什么做某事或没有做某事。就我们所知,在他们进入源代码阅读阶段之前,他已经从招聘过程中被淘汰。如果将其更改为“面试官需要……”,这可能是一个合适的问题。
2012年

1
@GrandmasterB采访者也出现在此站点上。如果他们有意不寻求代码阅读技能,则可能有充分的理由。
Izkata 2012年

请避免在评论中进行更多讨论。如果您想进一步讨论此问题的优缺点,请在Meta上打开一个讨论所属的问题。谢谢。
maple_shaft

我想补充一点,我被要求先阅读代码,并指出不良做法和任何错误。
安迪2012年

Answers:


10

当我问面试问题时,我最初是做过,但后来逐步淘汰了。能够在面试中编写良好代码的申请人都可以在面试中很好地阅读代码。无法阅读代码的申请人也无法编写代码。阅读代码所涉及的问题并没有真正区分任何申请人。


4

精简版

如果工作包括维护应用程序,那么在面试期间需要测试的技能是:

  • 能够理解大型代码库及其文档,单元测试等。

  • 的能力,重构代码,并带来改变,而不破坏一切。

要求人们阅读代码不会帮助您评估这些能力。

长版

您是否要求编写代码?如果是的话,正如Sign在他的回答中指出的,这就足够了。如果我们概括一下,那么编写清晰,易于理解的源代码的人将能够阅读其他人编写的源代码。

如果不要求您编写代码,那么很可能,您曾接受过人力资源部门的人员面试。这样的面试不能太技术性,而且几乎一文不值,因为它们不重视您的技能和良好的工作能力,而是您上大学的时间和与工作无关的其他事情。

还有其他一些原因不要求读取维护工作的代码:

1.很难做到可靠

具体来说,如果您是面试官,您会怎么做?让您的应聘者阅读一些代码。什么代码?用什么语言?写得好不好?有没有评论?有无文件?

更重要的是,这对候选人有什么启示?它与代码库本身的关联程度如何?

假设您有一个旧版VB.NET应用程序要维护。您知道源代码通常很丑陋且未经测试,并且一些注释已过时或具有误导性。在过去的三个月中,您有一个非常熟练的开发人员来开发该解决方案。他对应用程序的最关键部分进行了重构和单元测试,在需要注释的地方添加了注释,最重要的是,撰写了有关总体体系结构,关键部分和陷阱的详细文档。

您现在正在雇用开发人员来维护此代码库。在面试过程中,您会给出一段遗留(未经测试的丑陋)代码,还是先前开发人员重构的那段代码?

您会提供文件吗?为了阅读文档,候选人将需要花费至少几个小时。这使得在面试中无法做。

2.读取短代码与读取熟悉项目的代码不同

记住,工作就是维护一个项目。当您不熟悉项目时,很难在第一天或几周内维护大型代码库。在编写所有文档并清楚了解整个代码库几个月后,这样做会容易得多

要测试的最重要的事情是该人在那几个月内是否有效率。您不在乎此人是否在头两天都听不懂任何内容。

通过要求某人从头开始阅读一小段代码,您并没有测试该人如何处理熟悉的,有文档记录的成千上万的LOC

3.维护源代码不只是阅读它

维护代码库时,您正在对其进行修改仅仅阅读代码的开发人员不会为公司带来任何有用的东西。

有用的技能是重构代码添加单元测试预测更改的影响等的能力。您不会通过要求某人在面试中阅读代码来测试这些技能。


2

阅读是一种基于存在写作能力的假设。考虑任何语言的概念。编程只是人与机器之间进行交流的一种语言。考虑人与人之间的交流。如果您正在雇用某人担任日语口译员,那么,如果他们能够就某个特定主题写一篇1000字的文章,那么他们就能读懂吗?

作为程序员,我们的主要活动是创建代码并将抽象的思想转换为具体的实现。这通常意味着写作。我同意阅读同样重要,但是在大多数情况下,存在书写能力的人也存在阅读能力。我可以看到明显区别的唯一真实案例是在环境中,随着时间的推移,有许多高度复杂的案例在演变。即使给出了这些信息,您也不会期望某人无需至少学习就能阅读和理解它们。

另外,阅读代码并解释您的想法并不能真正向面试官表达您如何使用批判性思维技能。它显示了一些分析结果,但是大多数雇主都想看看您是否可以不放在盒子里思考。他们想知道您是否可以在没有现有代码的好处的情况下掌握这些概念(甚至没有好处)来告诉您做什么或如何做。


阅读它,是的,了解它吗?...不一定。
jmoreno,2012年

1
@jmoreno:也许不是,但是鉴于时间是多么宝贵,如果您要求应聘者写类似的东西,您可以获得的知识要比观看他们阅读复杂的东西多得多。
乔尔·埃瑟顿

我不同意。一旦您摆脱了琐碎的实现,读取代码就比编写代码难得多,并且有很多开发人员可以编写代码但不能读取现有代码,这主要是因为代码必须紧迫。要使用外语的隐喻,开发人员主要是有钱的游客,他们需要被足够的了解才能获得他们想要的东西,但是却不需要理解周围人们在说些什么。
Dan Monego,2012年

1
@DanMonego:我理解您的意思,并不是我完全不同意,而是问题在于,为什么大多数采访都没有纳入阅读,而不是阅读的价值。由于时间的限制,无论是在阅读还是纠正,大多数采访都只涉及琐碎的实现。
乔尔·埃瑟顿

1

过去,我曾经认为阅读代码应该在面试中得到证明,但是随着时间的流逝,我已经意识到,这对于面试官和被访者来说都是浪费时间。为什么?因为即使是错误的编码人员也可以读取代码片段。

仅当您查看复杂的事物或跨越许多类和文件的代码时,才能够判断某人的代码读取能力才有意义。能够跟踪代码找出正在执行的操作是一个理想的特性,但是没有足够的时间让别人提出一个很好的示例(不是生产代码),也没有时间在面试中提出这样的问题。

因此,不良的编码人员可以读取代码,但不能很好地编写代码。要求查看候选人工作的例子或要求候选人在面试中编写代码是更好地表明其技能的方式。如果他们能写出简洁明了的代码,那么他们阅读代码的机会就很好。

我问每位面试FizzBu​​zz问题的候选人。它快速,简单,通常可以比我发现的任何其他东西更快地挑选出错误的编码器。优秀的程序员可以非常快速,轻松地获得它,并且可以让您快速了解他们的编码风格和思考过程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.