在面试中要求公司提供代码示例[关闭]


69

对于软件公司来说,让求职者显示一些代码是相当普遍的做法。但是,应聘者要求面试官给他看一小段他认为写得很好的代码是否可以接受?


14
我宁愿问编码标准,代码审查,等等
user16764

5
公司是否通过了“乔尔测试”:joelonsoftware.com/articles/fog0000000043.html
马丁·约克

2
@LokiAstari joel测试不直接涉及编码文化(仅工作环境)。
西蒙·贝格

8
@ user16764就像是向应聘者提出理论问题:这是很好的第一步,但并没有真正向您展示他如何应用这些知识。
西蒙·贝格

Answers:


69

由于多种原因,我总是要求查看一些代码:

  • 我想知道我要怎么做。当然,没有软件公司是完美的,并且我不希望每个人都一直都在吹嘘优雅的奇迹(因为我也不是),但是如果我要一个公司最好的代码,他们所能展现给我的就是低于意粉的混乱局面,我知道我度过了一段痛苦的时光,解开毛团,与技术债务作斗争以完成一切。查看公司可以显示的最佳代码确定了那里可能达到的质量上限;即使他们的所有代码看起来不太像那样,您仍然知道这是他们努力的目标。
  • 查看代码示例可以告诉我很多有关公司的编码文化的信息。他们是否使用文档注释?他们是否倾向于面向对象的风格,是否具有函数式编程倾向?他们是保守的还是进步的?他们通常重视一致的命名,正确的格式和缩进以及简洁的代码吗?代码容易遵循吗?他们如何组织项目?他们如何处理重要的事情-自动化测试,错误处理等?他们的编码风格有多防御?
  • 看到他们现有的代码将使您判断是否可以达到他们的标准
  • 原则上,公司愿意单独共享代码样本这一事实是一个好兆头。这意味着他们为我(申请人)提供了一些信任,因为他们的代码库是他们最有价值的资产之一。这也意味着他们不为自己的代码感到羞耻,他们有信心向我展示代码将有助于我与他们一起工作。
  • 如果他们不会向您显示任何代码示例,则不必一定要出示警告,但是明智的做法是,都问为什么不共享(很有可能,出于法律原因,他们根本无法共享),并解释为什么要看一些。我认为,只要您有礼貌和积极地询问,对他们的代码表现出兴趣就不会被视为消极信号。

然后还有更多的副作用:

确实同意向您显示代码的公司,出于明显的原因,不太可能仅仅向我发送包含整个代码库最新版本的源文件的压缩包。如果他们向我展示任何代码,他们将以一些演示的形式进行演示,这非常棒:这意味着我可以与潜在的同龄人交谈,它使我可以提出有关其编码文化,流程,和代码库,理想情况下,它将有助于开始专业的讨论,在该讨论中,我可以演示技能和知识,并且可以了解有关工作环境的更多信息。这也意味着我要看看他们使用的工具,这也是很有见地的-例如,如果他们向我展示的项目严重依赖于特定的IDE,则意味着每个人都可以使用它,无论好坏。最后,


1
如果潜在雇主向您显示明显不好的代码,请记住,这可能是引导他们改进其代码和流程的机会。俗话说“我只能完美地完成,但我可以修复坏的!”。另外,请记住,向候选人展示或由候选人展示的代码可能比其他代码要严格得多。
akton 2012年

@akton这是我对错误代码的态度。但是,当您独自一个人进行“修复混乱的代码”任务时,它是没有用的。要求查看一些好的代码可能有助于感觉您未来的团队是否喜欢SOLID之类的东西
Simon Bergot,2012年

1
“我总是要看一些代码”,但是实际上如何显示代码呢?您是要他们事先准备一些东西还是事后给您发送东西?无论您以哪种方式查看它,都似乎是不切实际的。
Burhan Ali 2012年

1
@BurhanAli:我只是问。许多人拒绝告诉我任何事情,通常他们会给我很好的理由,这很好。那些同意的人给我一个有监督的旅行;我怀疑有人会邮寄给我完整的资源来进行学习,但是在我观看的同时在IDE中单击项目通常是可以接受的。
tdammers 2012年

在很多情况下,我认为我真正希望看到的代码将被视为封闭式竞争优势。那将是对我来说最重要的代码...但是,如果他们同意向您显示代码,但很糟糕,这可能是他们不了解好的代码的标志。如果我是潜在客户,则可能不会向您展示任何无关紧要的内部代码。虽然只有我。
钻机2012年

14

但是,应聘者要求面试官给他看一小段他认为写得很好的代码是否可以接受?

我想这是整个“面试都是双向的”口头禅,但是我不希望得到任何口头禅。在面试室没有电脑的事实之后,知识产权问题是最明显的问题,而将您带到一个办公室有点尴尬。

而且,他们只是选择可以看的外观最好,意义最小的代码。最好的代码并不是真正的问题,最糟糕的是。这是从候选人那里获取代码样本几乎无用的同一原因。


10
看看他们是否可以挑选好的代码向您展示仍然很有用。处理不良代码的最令人沮丧的部分通常是没有人意识到它是不良的,应该予以修复。
JGWeissman'8

5
同样,面试官对好的代码的想法可能不是您对好的代码的想法。我认为尽早发现这一点将是有用的。
埃里克·金

1
可悲的是,当我尝试使用“双向面试”方法时,大多数雇主都感到恼火。我从未看到过代码。我要看的另一件事是数据模型,但那里也没有运气。
Antonio2011a 2012年

12

候选人要求面试官给他看一小段他认为写得很好的代码是否可以接受?

您可以问任何您想要的,但是:

  • 您可能不会得到它。

  • 如果您知道了,它不会告诉您任何有用的信息。如果他们的代码中有10%漂亮,其余的都是意大利面条,那么您仍然会主要处理意大利面条。

  • 您看起来像条聪明的裤子。如果您最终决定要在那里工作,那不是什么大帮助。

  • 这是浪费宝贵的采访时间。

  • 有更好的方法来找出您想知道的内容。提出类似的问题:

    • 什么是代码质量最重要的指标?
    • 我主要是维护现有代码还是编写新代码?
    • 您能否简要说明您的系统如何工作?
    • 您是否有编码标准文档,并且每个人都遵循吗?

好点子 !令人遗憾的是,诸如“代码质量的最重要指标是什么?”之类的问题也可能被视为聪明人。(从我的角度来看,这是一个合理的问题,但是许多雇主不希望自己被潜在的下属打扰)。
Antonio2011a 2012年

2
@ Antonio2011a如果您问对的话应该没问题-也许“您在这里寻找什么代码质量指标?” 只需说清楚,您想了解有关他们如何做事的更多信息。您正在了解它们,而不是进行测试。即使询问代码也可以工作:“我可以看看您的代码是什么样吗?” 而不是“我想要一个您认为良好的代码示例”。
Caleb

3

这要看情况。我一直很想知道我要去哪里工作。

我认为求职面试是双向的。公司找到您,您也找到公司。询问代码可能有点多,但是询问与开发相关的问题应该可以。

例如,我不会接受公司不使用敏捷技术或TDD或不打算接受和鼓励这种做法的工作。当一家公司为他们的产品和代码感到自豪时,我也很感激-面试官似乎在等您要求查看它,以便他有借口解释他们所做的所有出色工作。


同意 我试图研究他们使用的工具吗?管理层是否支付了许多地方没有的额外工具(组件,实用程序)。开源工具的态度永远也是一种好方法。
ozz 2012年

2

哈哈,这是一个有趣的问题。如果有人在面试时要求我提供代码示例,我不会感到冒犯,但是除非他们事先询问并且我有时间仔细计划,否则我也不会显示任何代码。

我绝对理解提出这样一个问题的意图。作为求职者,我之前曾要求乔尔测验给面试官。他们不知道那是什么,但是他们很乐意回答。

在某些地方,问这些类型的问题可能会增加您的机会,而在其他地方可能会损害您的机会。生活的美好之处在于,如果它能增加您的机会,那便是您想要工作的地方。如果它损害了您的机会,那么您无论如何都不会想要这份工作。

通过礼貌地询问并能够解释为什么要看到它,我认为没有任何损失。


“生活的美好之处在于,如果它能增加机会,那便是您想要工作的地方。” +1
Spidey

2

我曾在两次采访中问过这个问题,他们声称他们有高级开发人员正在迁移到asp.net mvc3或4,或者当他们说他们想要大量注释的代码时。由于缺乏他们对实际代码标准的了解,我在两次场合都拒绝了。我发现的唯一标准是,如果它可以复制并粘贴,那么它将起作用。我不会问这个问题,如果我正在做一个新项目,或者必须编写与团队中其他人无关的代码。如果我被雇用来修复现有软件或功能,我肯定会看到代码,除非我知道答案,否则我不会说是。假设您不问,他们说您可以固定日期选择器从今天开始。当您查看旧版代码时,您看不到jquery或jquery ui,而是一个自定义的日期选择器,该日期选择器将所有日期存储在xml文件中,并且每天晚上运行cron作业以更新其上未来的月份。由于实现此目的的代码少于本示例中的文字,因此这将令人头疼。如果您要处理他们的代码,请查看它。不询问就好像在引用客户认为它很小的工作。他可能拥有20英亩的土地,在他的1英亩的土地上园艺对他来说是很小的,但是gardner不能收取50 quid只是因为他所有的小工作都是从50开始。


1

我倾向于为至少部分工作是开源的公司工作,因此查找代码示例很简单。我找出谁在公司工作,然后找出他们的在线处理。由于人们倾向于一遍又一遍地使用相同的屏幕名称,因此无论是在Github,Bitbucket还是完全在其他地方,都很容易找到提交代码的位置。

我目前的公司在Github上托管了大量代码,因此很容易看到它们的工作原理,代码库有多大以及似乎不再感兴趣。

我绝不会索要示例,只是因为它们将向您展示他们拥有的最佳代码。这不是您要使用的代码。它可能装在一个上锁的房间的钟罩中。您将使用许多人不得不处理的混乱代码。


0

如果您能得到,那就太好了。有时没有NDA类型的协议是不可能的,但是尝试总是好的。为了增加您的获胜机会,请让您的面试官提前(几天)知道您要这样做,这样他们就可以向您展示一些想法。

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.