尽管通常这是一个令人担忧的问题,但由于设置,我认为该问题不存在。
申请人向您发送了一些源代码。这是怎么发生的或为什么发生的?
显然,只有三种可能性:
- 您给申请人分配了一个解决特定(定义明确)问题的作业,以评估其技能。
- 申请人想炫耀自己写的很酷的东西。
- 申请人是混蛋,间谍或其他恶意的人,实际上对受雇不感兴趣。他只希望您足够愚蠢以运行他的代码。
关于2)和3)
主要风险是区分2)和3)。很有可能如果他写的东西值得一看,那是您可以在线获取源代码(从“中立”源)并且甚至已经熟悉的东西,或者您实际上不知道的东西不想看,因为您会侵犯竞争对手(以前的雇主)的知识产权。后者意味着您无论如何都不想雇用那个人。
如果您可以在线获取源代码,请这样做。如果您可以通过学分中某人的姓名来验证申请人对知名软件(包括专有软件)的贡献,请执行此操作。
在任何其他情况下,只需忽略他发送给您的任何内容即可。要么不值得研究,要么违法,要么高风险。
约1)
申请人给您发送了一些邮件,因为您给了他一个作业。如果您有任何能力(我假设您有能力!),那么对于典型的编程任务(...您甚至选择了自己!),您将能够判断出这是否是一个可行的解决方案,看起来似乎可行通过查看源代码的时间少于30秒(很可能是10秒)。
如果您不能确定该程序在30秒内可能会起作用(或根本不起作用),那么编写该程序的人就不是您想雇用的那种人了。您需要编写其他人可以理解和维护的代码的人。您既不想要试图变得聪明的人,也不希望那些经常赢得混淆不清的C竞赛的人。该程序是否有效甚至都没有关系。一旦另一个人不理解该代码,它就永远不会“起作用”。
如果该程序看起来可能可行,但是您发现任何看起来“怪异”的东西(例如,Java unicode转义序列,C ++原始字符串文字,看起来像三字母组合的东西,等等),则将赋值视为“失败”,移动转到下一个申请人。不必在所有程序的99%中包含类似内容(当然,不要在您的任务中-我希望如此)。因此,如果您发现像这样的“怪异”东西,那么申请人就不是您想雇用的人。
如果该代码通过了第一次分类,则您可能还需要花费2-3分钟的时间对其进行更彻底的研究。如果您对之后看到的结果仍然感到满意,则可以通过静态分析器运行它,并在警告级别很高的虚拟机中对其进行编译。
这应该会带来您在阅读源代码时可能错过的问题(例如,调用未定义的行为或缩小转换范围)。
编译将首先告诉您申请人是否具有必要的勤奋和对细节的关注,与其说他是否具有编程技能,不如说是。就像在您的申请表上正确地写上雇主的名字并在递交之前对您的简历进行拼写检查一样,最佳实践是您确保所提交的任何源代码都不会出错(最好没有警告)。如果某人没有做到这一点,则您不想雇用他。
在这一点上发生恶作剧的风险(利用编译器并破坏VM)可以忽略不计,看看您如何对代码进行合理性检查。不会发生。