在聘用.NET Web开发人员期间,我给候选人一个编码测试。
我倾向于将候选人限制在测试服务器上安装的MSDN - 我认为它包含候选人完成任务所需的一切。
我承认,这不是正常情况,因为我不希望候选人在不使用网络的情况下完成工作。
另一方面,我不希望候选人谷歌找到一个完整的例子并复制粘贴它,我想评估他的技能。
问题是我是否需要在测试期间允许免费使用网络?
如果你认为整个编码测试是错误的 - 我想听听你可能有的替代方案。
答案 0 :(得分:10)
如你所说,'我不希望候选人在不使用网络的情况下完成他的工作为什么在测试期间也不允许这样做?如果他复制粘贴怎么办?我也这样做。当然,关键是要知道在哪里寻找,辨别你所发现的东西,然后智能地应用它。你想聘请一个有着极好记忆的人或能为你开发软件的人吗?
当我在学校时,计算器变得越来越实惠。由于他们的使用被认为是不可避免的,考试被改变了。简单的数字运算不再以之前的方式进行测试(当时很重要)。相反,解决问题的技术将被测试。
答案 1 :(得分:8)
我通常允许候选人使用他们想要的任何资源。完成后,我和他们坐下来一起完成他们的代码,询问他们为什么选择这种特殊方法等问题。
如果几分钟的谷歌搜索足以不仅仅复制一些代码,而是为了足够了解它能够捍卫内部的决定,那么他就足够聪明了!
答案 2 :(得分:6)
有些测试可以提供Web访问,而且有些地方确实没有意义。
允许网络访问的情况
不允许网络访问的情况
答案 3 :(得分:5)
我对采访期间的编码测试持怀疑态度。我认为我所看到的很多测试代表了非常具体的(人为的,非现实世界的)问题,你可以使用互联网来解决这些问题。
我认为知道如何用心去解决这些问题并不是很重要 - 通常情况下,知道如何以及在何处寻找答案更为重要。
如果你想在面试中测试这些人,我认为最好向他们提出一些概念性问题而不是特定的编程问题。例如:关于面向对象,多态性,n层应用程序设计等的问题等。
或者作为ASP.NET世界的一个例子,询问受访者的问题,例如:什么是ViewState,什么是回发,什么是会话/应用程序状态等。
答案 4 :(得分:3)
如果您想了解候选人在工作中的表现,我认为最好尽量使测试条件尽可能接近实际工作条件。
通过要求候选人解释他/她的代码,防止复制和粘贴者滑倒裂缝应该很容易。
答案 5 :(得分:2)
嗯,你要注意的一件事是,你雇用的开发人员可能不知道他在为你工作期间会抛出的一切。如果你问他一个他不知道的问题你会想要并期望他研究它并回到你身边,证明他理解他刚学到的概念。
我说让他们使用网络 - 但要求他们用自己的语言解释他们的代码是如何工作的。我的大部分知识来自在线资源。但是,我确保我写的每一行代码都是我理解的。
有一个基线知识,特定领域的开发人员应该知道;但你也想弄清楚他能多快学到新东西。一个好的测试IMO是提出一个你知道他不知道的问题,看看如果他是你公司的一名员工,他可以利用他将拥有的资源来解决这个问题。
答案 6 :(得分:2)
您的目标是了解候选人的基本知识,以及他是否可以在不从网络上复制解决方案的情况下进行编码,然后不允许访问互联网。如果你想看看他采用什么策略来获得解决方案,那么就让他使用网络。
如果候选人能够解决大规模问题而不仅仅是解决一个简单的编程问题,我个人觉得更有意思。所以我倾向于问他在编程时使用的方法(单元测试?曾经使用它吗?你怎么看?)。这比在面试情况下编码更能让我看到。
如果您事先要求候选人带上一页的编码样本来查看他们的编码风格,有时会有所帮助。这也节省了你在面试中的时间。
答案 7 :(得分:1)
确保候选人足智多谋很重要 - 你不希望你的程序员在遇到困难时坐在那里,而不是前进;你希望他们使用手边的任何资源 - 无论是MSDN,选择别人的大脑,使用网络等 - 来完成工作。来自网络的剪切确实看起来像作弊,但是(a)如果你仔细设计你的任务,那么它将是独一无二的,因为没有他们可以从网上复制的标准答案,并且(b)isn'重新使用现有代码构建软件的关键部分?它与使用第三方库没有太大区别,以避免重新发明轮子。当然,在缺点方面,您还希望他们能够展示他们可以开发算法,因此独特的任务需要包含一些需要在没有解决方案已经在网络上的元素。麻烦的是,论坛是所有这一切的致命弱点,因为他们可以简单地要求解决方案而某个地方的人会在不知不觉中交出答案!
答案 8 :(得分:1)
允许候选人使用网络,但事先告诉他,如果他使用网络,你将不得不评估他是如何解决问题的。
如果他使用网络进行简单的搜索,例如找到他忘记的语法或参数,请不要将他标记下来。这很正常。
如果他使用网络查看特定功能的使用方法,请不要将其标记下来。这很正常。
如果他搜索特定代码然后复制粘贴它,那么请询问他代码的工作原理。如果他能解释代码是如何工作的,那么没有理由让他失望。如果他不能在没有查看他获得代码的网站的情况下解释它,你必须将他标记下来。
如果他使用stackoverflow.com,请检查他的个人资料中的问题,答案和徽章。从那里,你可以检查他是一个多么优秀的程序员。
答案 9 :(得分:1)
这一切都取决于你想要的成功候选人。我认为知道如何谷歌让你成为一个优秀的程序员,因为简单的事实是,互联网充满了坏的例子和好的例子。你真的不希望你的代码库能够反映你的Google搜索者在网上剪下并粘贴所有代码的那一天是多么幸运。您希望它能够展示出良好的实践,经过验证的方法和方法。优雅,高效的解决方案,让您的团队了解并热衷于此。不是混杂的风格,彼此不相似。知道如何从互联网获得帮助有很多好处,但真正的知识和古老的智慧每天都在失去,那些不了解自己正在做什么的人会得到工作,因为他们似乎解决了问题他们“谷歌”的能力。
如果你真的想让你的候选人访问网络,那么一定要做,但要努力解决问题,仔细检查结果,看看他们是否选择了他们找到的第一个解决方案,或者他们是否选择了最好的解决方案解决问题。
答案 10 :(得分:0)
与其他许多受访者一样,我宁愿聘请资源丰富的开发人员,他们知道如何充分利用网络来吸取其他人的经验和以前的工作,而不是开发人员将自己和他的应用程序局限于MSDN的方式。做事。
我一直在复制其他人的代码 - 实际上是每天。它的诀窍在于快速找到正确的解决方案并将其整合到您现有的工作中。
所以让你的候选人使用网络,并问他如何找到他的解决方案。你可以从他的方法中了解更多关于他的知识,而不是他将如何记住以前的解决方案。
答案 11 :(得分:0)
我要做的三件事。
让申请人发送编码示例及其简历
让申请人制作一些真实的代码(甚至可以与团队中的开发人员进行配对程序),这将向您展示他们是否可以实际使用这些工具。互联网也是一种工具,因此他们应该可以使用互联网。
让申请人在面试期间解决黑板上的伪代码问题。在这种情况下,你可以通过帮助他们来成为他们的“互联网”。
这三种方法将向您展示不同的东西。第一个是良好的预警机制,但很容易被伪造(他们可以从网上某处下载oss代码)。第二个是很好看,他们是否可以实际编码,但如果他们不熟悉您使用的工具,他们可能会得分很差。第三个将向您展示他们是否可以解决理论问题,但如果他们确实是优秀的团队成员或他们编写可维护的代码,则不会告诉您。
答案 12 :(得分:0)
我最近有一个朋友开始和IM谈话,他正在接受编码测试工作面试。他有几个SQL问题。起初我想,你自己必须自己做。在面试中,我不会帮助你作弊。
然后我又想了想。作为他工作的一部分,我一直在回答问题并与他谈论多年来关于IM的各种技术问题。因此,如果他被聘用在现实世界中遇到问题,他就会做同样的事情。
我们不会谈论太多,但是拥有一个良好的朋友网络来提问,并且知道如何在网上搜索相关答案是成为有效的程序员或系统管理员的重要部分。我遇到了超级聪明的程序员,但他们并不真正知道如何在线查找信息。他们错过了很多,有点不合时宜。了解如何使用资源应该很重要。
当我进行采访时,我经常会询问人们他们阅读的网站,他们使用的开发工具以及原因。这是类似的事情。当然,这不是关于他们如何编写x行代码,而是关于它们如何工作。
没有人如何绕过某人只是复制并粘贴“答案”。首先,不要问有问题答案的问题。其次,在我面试的时候,我想给人们一些代码,让他们重构一下,让他们谈谈他们的想法。然后让他们写一些实现功能的新代码。与他们配对程序。配对编程时很难隐藏无法编码。虽然它们是配对的,但完全有理由说:“让我们去查看日期时间库中的api。”