it-swarm.cn

好的面试编程项目

我正在寻找一些小型编程项目,这些项目可以给潜在的员工评估他们的编程能力。这些将是刚毕业的程序员。我正在寻找需要花几个小时才能完成的项目,他们会在面试后通过电子邮件将答案发送回去。

一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后告诉我单词出现了多少次以及单词的情感程度。

有人有什么好的建议吗?

26
bigtang

我很久以前就得出结论,一个人在短时间内无法做的任何事情都可以告诉我有关该人的任何有用信息。但是每个优秀的候选人都已经写了个人项目,这些项目可以告诉您很多信息。因此,我用“给我一段令您感到自豪并乐意为您加盖您的名字的代码”代替了具体的挑战。

他们的choice项目可以告诉您比任何小时的任务更多的信息。然后,您可以花一个小时讨论它,以了解更多信息。

43
pdr

我对这种令人讨厌的胡言乱语感到厌倦。我去过一些地方,要求我提供代码示例,将它们撕开,然后请我解释their系统的示例代码,这些代码看起来像是由2岁的小孩子编写的。我被要求实施晦涩的排序算法,网络服务,GUI,数据结构(总是树或链表)。关于面试官认为什么的各种烦人的烦恼问题是编程中最重要的部分。

最后,这几乎毫无用处。评估员工的最佳方法是雇用他30天,并查看他的工作做得如何。将所有时间都花在要开发测试上,这不会告诉您有关某人日常工作的信息。

28
Satanicpuppy

允许某人自己做一个实际的项目并不一定意味着是他们自己做。

每个人都较早到达接受采访(至少应该如此)。我们有一个“等待时”工作表供他们使用,直到我们准备好看到它们为止。它有八(8)个问题,这些问题用我们主要使用的语言测试申请人的知识。

我们并不是在寻找万事大吉的答案,因为任何人都可以使用面前的计算机来正确解决问题。我们正在寻找过程,他们甚至尝试尝试问题,如何找到答案。

当我们参加面试时,我们会与他们一起讨论并回答他们可能遇到的任何问题,这也可能导致他们获得正确的答案。它还使我们可以问他们如何得到他们想出的答案。

我们发现,这与先前的工作相结合是筛选候选人的最佳方法。

更新2016/06/15

我们在雇用开发人员的过程中已发生了重大变化。

阶段1:15分钟的电话采访,我们问了7个问题。前两个是“您从事的最有趣的事情是什么?” (不必与编程相关)和“您在业余时间会为娱乐编写什么代码?”。

阶段2:一个小型项目,他们可以自己完成。然后,我们与他们进行屏幕共享,他们向我们展示他们的作品。在屏幕共享期间,我们还让他们对他们的项目进行两项更改,然后观察他们的工作并使其正常工作。

阶段3:亲自面试。

这个过程使我们能够立即找出文化适应性(阶段1)。如果他们能完成工作并实际发言(阶段2)。最后,确保它们的值与我们正在寻找的值一致(阶段3)。

12
RDL

您可能想看看 Jon Jagger 很棒 Cyber​​-Dojo

这是一个基于Web的集成环境,旨在执行 测试驱动开发故意练习 和了解团队动态。它具有许多小的编程任务(kata的),并且支持多种语言,从Python和Ruby到Java和C++。

与为生产力而设计的IDE不同,它没有代码完成,语法突出显示或自动重构的功能,因此您可以了解没有这些功能的受访者可以做什么。

最好的事情是,做完kata后,您可以回头查看每个kata的红色/绿色进度(如果他们不做TDD * 8',则可能不这样做)。每个编译/测试将所做的更改与测试结果一起提交到git存储库。

我认为将其用于面试编码测试不仅可以告诉您很多候选人解决​​问题的能力,还可以告诉他们解决问题的方法他们在不受外部因素约束的情况下所使用的流程,只需选择适合您希望考生花时间的kata。

如果您想要自己的Cyber​​Dojo服务器,则可以在github上找到 整个项目 ,甚至在那里还有一个Turnkey Linux设备虚拟机链接,这意味着假设您已经拥有 VMware PlayerVirtualBox 已安装,您可以在下载设备后的几分钟内启动并运行!

4
Mark Booth

我只接受过一次这样做的公司的采访。他们给出了一个6或7个问题的问题单。说明是要提供一种解决每个问题的方法。

任务之一是认识到您可以重用代码。问题可以使用其他解决方案中的代码。它也不是顺序的。例如,可以使用问题5所使用的方法来编写问题3。

我建议尝试这样的事情。

至于问题呢? 欧拉计画 网站上的一些起始问题很好。

如果您想了解他们如何将一个项目组合在一起,也可以尝试一个简单的游戏。

或者,如果您不想提出任何建议,请他们从最终项目中以一些代码发送给您。

3
Tyanna

为了要求人们完成一个项目,您应该记住一组要评估的特定技能,并设计项目以测试这些技能。

一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后告诉我单词出现了多少次以及单词的情感程度。

您在寻找什么问题?有多少种方法可以解决该问题,每种方法对编写答案的人有什么帮助?有效回答该问题所展示的技能是否与对您的业务最重要的技能相同?

我不想要这些问题的答案;我只希望您在对一组候选人进行处理之前考虑一下答案。如果您知道自己在寻找什么技能,那么就不难提出要寻找这些技能的问题。如果您使用别人的问题而没有完全理解要评估的内容(如果有的话),那实际上就是在自欺欺人,浪费了每个人的时间。

3
Caleb

一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后告诉我单词出现了多少次以及单词的情感程度。

他们会用什么语言写?如果他们来自一门专注于C的学校,那将不如教授Python/Perl/Ruby等的学校那么快写……甚至Java C#。尽管如此,这是一个很好的小测试。

我实际上在面试中建议了一些简单的方法。没有技巧问题。我在这上面与TMN在一起。给他们几个执行基本任务并询问他们做什么的功能(阅读其他人的代码)。然后给他们一些基本任务(<20行),用他们选择的语言编写。对于入门级来说,这足以知道他们是否可以编码(在入门级位置)。加上面试和GPA,应该使您对需要了解的东西有个好主意。

0
Awaken