毕业生开发人员可以接受缓冲区溢出吗?我们将标准设置得太高吗?研究生/初级工程师的预期能力是什么?
内容:
我们目前正在招聘主要在Linux上的C语言中工作的初级开发人员职位。
作为该过程的一部分,我们要求应聘者在闲暇时完成C语言的代码测试。
到目前为止,我们已经拒绝了两个候选对象,因为它们的代码虽然可读且在某些情况下是惯用的,但是由于无限制的缓冲区写操作而遭受了缓冲区溢出错误。
[编辑]:
- 我们明确要求提供经过错误检查的生产质量代码。
- 我们为候选人提供测试和构建框架
[更新]:
由于这一线索,以及我们与其他开发人员的亲身交谈,我们正在改变执行代码测试的方式以及招聘人员的目标。
我们认为,候选人无法解决或无法理解缓冲区溢出问题,意味着他不适合我们进行的工作,尤其是他所接受的指导比我们所能接受的还要多。因此,我们仍然会拒绝最终无法提交可靠代码示例的候选人。
但是,我们已经采取了一些措施来使招聘过程对我们和候选人都更有效率。
尤其是:
- 我们使期望更加明确,对生产质量的含义进行了清晰的解释,并警告该代码在输入和错误方面应该是可靠的。
- 现在,在代码测试的描述中,我们将候选人链接到防御性编程和C标准库的资源。
- 我们将目标受众从初级开发人员和毕业生转变为具有相关经验的目标人群。
- 如果提交的代码以某种方式失败但被接受,我们现在提供一个导致错误情况的最小测试用例,并为考生提供改正错误的机会(除非由于其他原因而被拒绝)。如果合适,我们还将指出有问题的行/功能。
- 现在,测试的目的已经从前端过滤器稍有改变,从而有机会建立更好的候选图片,特别是它将为我们的电话讨论提供信息。也就是说,我们仍然愿意仅基于代码拒绝。
[更新2015-07-09]: Nujob的Andy Davis从应聘者的角度撰写了一篇有趣的相关文章,介绍了如何使用代码测试,并且值得一读。在这里找到它。