筛选前编码测试-多长时间才合理?[关闭]


22

编辑

在对该主题进行了大量思考和自我反思之后,我意识到我在此问题中提出的大多数问题仅来自个人而非专业角度。因此,主持人由于我试图谈论的问题的高度个人化和主观性而搁置了这个问题。我当时正在考虑改写这个问题,但是我真的找不到以更客观的方式来表达这个问题的可能方法,因此它可能成为讨论的主题,其中可以用某种证据或参考来支持答案。

为了那些仍然感兴趣的人,我试图总结一下这个问题引起的讨论:

  • 面试前4个小时,通常不会进行场外编程测试,但是
  • 许多人指出,对于某些公司,您面试的时间要长得多
  • 是否进行测试是我们的个人决定,我们可以根据我们的情况和被公司聘用的可感知收益进行评估
  • 所有公司都不同,就像人一样。如果公司适合他们的需求或情况,则使用更长的面试前异地测试是完全合理的。

我想让我最初的问题是关于期望我有四个小时的合理性,以及提出问题的道德标准,以便可以为公司使用解决方案(不是代码,而是设计)。正如我现在所看到的,只能(最多)在论坛讨论中探讨这两个问题,而不是使用诸如stackexchange之类的问答型社区工具。

但是,我发现您所有的答案都很有价值,并感谢您的分享。

原始邮件

我正在面试几个职位,其中大多数包括预筛选阶段,在此之前,我必须先进行编码测试,然后才能进行电话面试或现场面试。我已经习惯了这个想法,并且发现公司希望我这样做是很合理的,这样他们就可以检查我可以自己生产什么类型的作品。

通常,我的经验是这些类型的编码练习大部分是小型编程任务。做一些逻辑,也许执行一个小的算法,打开一个文件并读/写数据,诸如此类。即使是最简单的任务,也可以通过逻辑,可测试组件等的良好分离来实现,以查看应聘者的编码方式,通常是他对公司要完成的工作类型的准备程度。

最近,我遇到一家公司,该公司向我发送了编码测试,并在整页上详细介绍了他们的工作情况,要求我解决其业务的现实生活中的问题(我不想说具体的内容来保护公司,但该测试差不多是关于他们的工作)。他们描述了一个非常复杂的系统,其中包含真实数据,并且最终得出结论,编码测试不应超过4个小时

一家公司期望我在业余时间花4个小时来完成他们的虚拟任务,这是合理的吗?(招聘人员向我发送了编码测试)

不要误会我的意思,我有找到新工作和新挑战的动力,但是大多数公司希望我在此类任务上最多花费1-2个小时,而这样的任务向来却不那么复杂。

我得出这家公司的结论是:

1)我的动力不好,可能他们在找别人

2)即使不对他们打招呼,他们也不尊重未来的员工会期望进行如此长时间的编码测试

3)他们只想给出他们正在解决的问题之一,看看是否有一个热情的年轻小伙子会免费为他们解决(再次,不要误会我不是阴谋论者,但我有听过这样的故事...)

您认为一家公司期望应聘者花时间进行虚拟编码测试而不与他们交谈是合理的吗?您一般有什么经验?



您的评论是公正的。但是,我对您的期望感兴趣,希望有人花4个小时来进行预筛查是合理的。
阿斯顿·2013年

1
这是一种经济命题,其合理性由市场承受力来定义。这将随条件而波动。如果这是一个雇员市场(即,许多公司都在招聘很少的候选人),那么与在雇主市场上相比,对这种事情的容忍度就会更小。我总共花了12个小时面试我现在担任的职位,因为这样做的潜在好处是预先明确的。十年后,它们是正确的,我花的每一分钟都是一笔值得的投资。
Blrfl 2013年

3
如果您曾经在任何一家主要软件公司进行过面试,那么您通常会飞往他们所在的位置(对我来说这是10个小时的旅行时间),然后花8个小时的时间(或者不听说过两个)进行编程/设计/面试 我怀疑问题在于您是否认为公司有要求的影响力。
史蒂文·埃弗斯

1
我对“主要软件公司”的经验是,第一阶段是一个1小时的电话采访,这很公平。我在这里想念的是,他们希望我有4个小时的工作,而没有任何投入。我做了更多的思考,我发现也许他们没有太多的时间,如果他们喜欢某个人,他们会从那四个小时的工作中雇用他。在那种情况下,我可以理解他们的方法(这与Dunk的答案有关)。
阿斯顿·2013年

Answers:


24

让我暂时站在公司这边,因为到目前为止还没有其他答案。从完全不了解其资历的人的4小时编码测试提交的联合体中,构建可用的代码库几乎是不可能的。创建足够详细的规范,审核响应并将其与其余代码集成,将花费超过4个小时的时间。更不用说最有用的企业级软件项目,需要数千个工时。坦率地说,将业务分成4小时的增量和数周的周转时间来建立业务的想法是荒谬的。

给出业务中的现实生活问题是确定某人是否会擅长于令人震惊地解决业务中的现实问题的最佳方法之一。我经常在面试中这样做(尽管我要求通用的设计原则,而不是花4个小时编写代码),而且每次都已经解决了这个问题。如果我还没有解决问题,那么测试将失去几乎所有的证明价值。

4小时的测试是否值得您自己决定。我总是被教导要把全职工作当作全职工作。当您失业或失业时,每天花8个小时寻找工作,那么4个小时的编码测试就没什么了。我花的时间比花在生锈的语言上,编写投资组合程序以及为特定职位定制简历的时间更长。

另一方面,一些最好的工人已经有酬劳,只是随便找更好的机会。在这种情况下,人们不太可能接受4小时测试的严格测试,除非机会良多。但是,这是公司的问题,而不是您的问题。

至于了解公司对员工态度的含义,我认为您真的不能说任何一种话,除了他们可能厌倦了与不合格的申请人打交道,以至于他们愿意抛弃他们。淘汰一些好与坏。


另外,OP表示测试应不超过4个小时。我在想,如果测试需要一个候选者= <4小时,他们可能根本不会感兴趣。
Tombatron

感谢您的回答。也许我是第二类,他们不容易有4个小时来完成这样的任务,所以也许他们正在寻找确实有的其他人。是的,由于您提到的原因,提出一个现实生活中的问题是有益的,而且我遇到了类似的任务,例如当我采访一家电视公司时,我需要制作一个频道订阅计算器,当我采访一家外汇公司时,我需要总结一下CSV文件中的货币,这很公平,但是该公司对我的期望超出了他们的期望。也许只是为了我。
阿斯顿·2013年

3
我认为这有点简单。并非所有解决方案都需要与其他系统集成-例如,这可能是一个数据解析过程。尽管公司可能不会直接使用该代码,但该设计很可能会被使用。测试过程应该从设计的角度看是肤浅的,我认为超过一个小时就是太多了。
柯克·布罗德赫斯特

2
仅当您失业时,才将求职视为全职工作。如果您正在工作但正在测试市场以查看是否有更好的产品,那么承诺水平是不切实际的,除非在短期内,否则您会精疲力尽。
丹·尼利

11

不,不是典型的,您为什么免费解决他们的问题?(4个小时)

编程测试通常需要1个小时。过去,我们的编程测试有4个问题。前3个问题用时1/2小时,后一个问题用时1/2小时。我们还对内部现有员工进行了测试,以确保我们在预期的时间范围内进行了测试,并且测试是公平的且已根据需要进行了调整。

前几个问题是“ Fizz Buzz”类型,用于清除无法编程的人。他们越来越难了。最后一个问题是解决问题的练习。通常,我们试图将编写的代码量限制为几百行(总计),并且不需要任何巧妙的技巧。我们还对错误处理,样式,语法,组织等方面的人员进行了评分。这些问题与我们的业务无关,而与当前平台编写的技能和技术有关。

通常,优秀候选人的完成时间少于分配的时间。有时,人们由于参加测验的压力而要求额外的时间,而我们允许这样做,但是我们将每个人的上限都限制在一定的范围内。测验是在当前的开发环境中进行的,人们可以访问Internet以获得参考信息。我们也将测验的期望传递给了每位候选人。

一次我们确实讨论了将代码库(真实世界)合并到测验中,但由于担心代码被复制/被盗/等(我们的老板有点偏执),我们最终放弃了该代码库。最终,我们只是quiz.sln在隔离的开发机器中单独使用了。

最终,我们发现很难提出一个公平的测试,但既不要太难也不太容易。参加测验后,我们总是向考生询问有关测验,并收集反馈意见,以针对将来的考生进行完善。


感谢您的回答。您的方法似乎很公平。我喜欢简单问题和困难问题的想法,因为即使没有进一步解释,它也可以使候选人很好地了解他们的表现。假设我完成了3个简单的任务而不能完成最后一个任务,我不会觉得自己失败了,但是我也能够承认我需要改进。在我看来,真正困扰我的是在公司外与我交谈之前的4个小时的异地期望。
阿斯顿2013年

@Aston-同样,如果您没有完成最后一个问题,也不会自动取消您的资格。也许您不会被雇用为程序员,但可能还有其他地方。在某些情况下,还聘用了其他职位的候选人(支持,质量保证)。我们首先进行了面试,然后进行了测验。我想您可以先进行测验,然后立即将该人排除在外,但也许您错过了一些潜在的优秀技术但非编程候选人。
乔恩·雷诺

8

我发现面试中的编码测试无论如何都是繁重的工作。除了最简单的例程,没有人会在没有压力的情况下编写任何代码,而没有通常的环境和工具,因此您获得的结果充其量是可疑的。

我发现对程序员能力的真正不错的考验是给他一些项目代码,并请他进行审查,如果代码中有几个明显的错误,几个明显的代码问题以及一些可疑的做法,则效果很好。一个好的编码员会告诉您所有这些,并且会与您一起讨论为什么某些代码不是“错误”的,但是可以做得更好以减轻维护负担。一个可怜的程序员会发现一个错误并停止。

期望您进行一项耗时超过半小时的测试的任何工作都花了很长时间,甚至没有花时间制定出良好的针对性测试,这为他们提供了对技能的模糊理解。(大多数公司发现很难花时间进行面试前的准备工作)。

如果给我像您一样的测试,我会用伪代码编写答案。这足以证明我对编码和设计的理解,而无需经历正常工作项目所需的整个编译,构建和测试阶段。


1
如果不清楚我很抱歉,但是我提到了面试之前进行的一项测试,因此我可以自己在家中进行测试。
阿斯顿·2013年

1
尽管如此,无论如何我还是会伪代码。他们或者想要我对解决问题的想法,或者想要您的免费工作。如果是后者,它将不是您想要工作的地方。
gbjbaanb

@gbjbaa:或者更有可能的情况是他们想查看您所做的工作类型。在这方面,琐碎的任务是不够的。伪代码不会削减它。另外,我敢打赌,花了4个多小时来定义问题,对其进行审核,完善和批准。因此,考虑到他们本可以以比问的时间更少的时间自己实现此目的,您为什么会认为自己从事自由工作呢?如果任务花了一周或2个小时,那么我可以看到您的意思,但是4个小时?另外,我采访了太多擅长表达思想但最终在解决问题上很差的人。
Dunk

1
如果任务太接近实际情况,我总是会有些怀疑。我听说过一些故事,经理们只是为了从越来越聪明的人那里得到有关如何解决特定问题的技巧而安排采访。不是他们自己没有解决问题,而是他们渴望看到别人将如何解决它。最后,他们不想雇用任何人,但这是另一回事。
阿斯顿·2013年

3

您可能没有4个小时,但肯定会对他们的公司更感兴趣。基本上,我是根据类似的任务被雇用的,该任务是公司事先要求我单独完成的。显然,编写干净且可理解的代码,详尽的测试用例以及可理解且一致的设计文档是一种异常。实际上,看到有人这样做会使人震惊。无论如何,在面试中与我交谈的每个人都对我的所作所为表示赞赏,我觉得我必须在面试中打动任何人,因为他们已经下定了决心。这只是我的问题,我没有给他们理由做一些愚蠢的事情。

因此,尽管我同意4个小时是一笔相当大的时间投入,但这也意味着该任务规模足够大,您将有机会真正展示自己的能力。您的工作说得好,可能比实际面试时说的更多。

附带说明:我最近尝试了类似的操作,但是使用的问题小得多,我对结果不满意。小问题对于展示足够多的人的知识是微不足道的。另外,琐碎的问题往往要求人们认识解决问题所必需的一些技巧/细节。因此,在花费过多的时间与没有获得任何实际利益之间存在某种平衡,因为任务是琐碎的。我认为4小时的任务可能是适当的时间,足够复杂,足以使求职者展示自己的技能,而且时间不要太长,以至于没人会打扰。


感谢您的回答。经过一番自我反省,您的回答以及试图将重点从我自己转移到公司上,我可以从他们的角度看这是合理的。也许他们的过程差不多,花了4个小时的时间,如果他们喜欢邀请他们的人,他们就会提出报价。也许他们以前有过糟糕的经历,即人们擅长于小事,但不擅长于较大的任务,或者他们花了太多时间采访那些最终没有成为好候选人的人。我仍然认为4小时太多了,但是我可以做到……
阿斯顿·2013年

1

我一次进行了6个小时的编码测试。当我参加这项考试时,我很有信心要被录用-虽然事实成真,但我对后续工作并不满意。

显然,有很多雇主每个人要4个小时都是过分的。在我参加的测试中,该人寻找的是我的编码风格-我被录用是因为我的人“最接近”他。在这种情况下,请从以下角度审视问题:首先,无论如何,值得您解决一个有趣的问题吗?毕竟,您可以学到一些有价值的东西。

其次,如果您可以“通过”考试,是否意味着您被录用了?如果这不是很明显,那么您必须决定是否还有其他原因要这样做。

第三,他们可能会估计需要4个小时,但您可能会发现不同的结果。他们真的知道这需要多长时间吗?答案很可能是否定的。因此,他们将继续在四个小时的截止日期之前对人员进行测试,直到他们意识到四个小时后才适合测试。在这种情况下,您就是在浪费时间。最好的方法是与招聘经理保持积极性,弄清楚您是应该在四个小时后停下来给他们提供您所拥有的东西,还是继续直到完成为止并告诉他们花费了多长时间。简而言之,可能会对此进行字符测试,仅尝试按照其条件接受它可能会显示经验不足。

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.