在采访开发人员时,您使用什么技术?[关闭]


28

我意识到有很多关于这种事情的讨论,它们经常演变成教条,围绕着您问“ 100名逻辑海盗”类型的问题还是让他们写“嘶嘶声”。

我感兴趣的是技术和问题一直有效,你的职位面试潜在的开发商时。

每个答案一种技巧,所以我们可以对它们进行投票。

Answers:


21

除了实际的技术问题外,通常在访谈结束时,我还会尝试通过以下问题了解他们对行业及其文化的关注程度:

  • 您最近是否发现过与编程相关的任何有趣的东西,并想推荐给其他程序员?新的语言,工具,平台,技术,网站?

  • 您能说出我们行业中任何您喜欢或喜欢的人吗?为什么?(开发人员,网站创始人,作者,演讲者等)

  • 您现在正在阅读什么,或者您最近阅读的与软件相关的书是什么?

  • 您经常访问哪些与编程相关的网站?

尽管根本不回答这些问题(不幸的是,它经常发生)对我来说并不意味着“不雇用”,但他们对人接触软件开发专业的方式说了很多。


4
我可能甚至会说这是在任何软件面试中最重要的指标。您可能会认为编写代码更重要,但是最近或在大学学习过类似内容的人可以猜出它们的方式,而很难伪造真实的,真正的兴趣。
Mike B 2010年

5
我很惊讶这是该网站上的一个流行答案。根据定义,这里的观众是重视“程序员文化”的人。(我同意这个答案,但是遇到了一些优秀的程序员,他们会在测试中失败,尤其是在40
多人中

2
@AShelly:是的,我同意。这就是为什么我认为这个问题对于拒绝或接受程序员并不重要。这只是面试时可以使用的另一种技术。
塞尔吉奥·阿科斯塔

16

让他们写代码,真正的代码。

面试官可以让您选择最喜欢的编程语言,无论是C ++,Java,C#还是其他,并要求您解决一个简单的问题,例如,使用字符串或双向链表或其他方法进行某些工作。如果您无法使用最好的语言解决一个简单的问题,那就有问题了。请参阅Steve Yegge的博客文章,尤其是“心理准备”部分。


6
是的,但不要太多。
Damovisa'9

编写真实的代码将帮助您进入精英软件公司(Google,Amazon,Microsoft等)的大门,并随时选择其余的。
grokus 2010年

3
请详细说明您的答案。您所说的“真实”代码是什么意思?什么代码不是“真实的”?
MAK 2010年

+1 @MAK:同意,真正的代码是什么?如果您打算在生产软件中使用该代码...
Steven Evers 2010年

1
我会考虑使用“真实代码”,例如让受访者编写“ strdup()”函数。它具有实际用途,并且可以将他们的经验和态度公开给诸如内存管理和错误处理之类的人。
JBRWilkinson

11

让您团队中的几个人独立采访他们。之后分享您的想法,在采访之前不要在中间谈。在两者之间进行交谈将影响您的判断力,并且您将没有独立的帮助。

对于面试的技术人员,他们可以编写代码。对于非技术人员,不要尝试问您没有经验的事情。但是,请确保至少有一些技术人员在面试。

面谈不应仅由管理人员进行,这对将来与之共事的每个工人都至关重要。


2
对于“面试不应仅由管理人员进行”的+1。如果新员工不能像同事们一样削减代码,那么团队中就会发生动荡。
JBRWilkinson

7

我喜欢让受访者解释他们以前的项目以及他们的工作。从这个答案中,我可以提出后续问题:为什么他们以某种方式做事,如果他们提到一个问题,他们如何解决一个特定的问题,但是最重要的是项目的目的是什么,解决了什么业务问题。

我这样做是为了查看他们是否可以以一种使我理解他们正在做的事情的方式进行表达,以及看看他们是否也理解他们正在做的事情。

令人惊讶的是,有关项目目的和业务问题的最后一个问题解决了很多人。他们根本不知道为什么他们正在从事的项目已经完成。如果您不知道为什么您的项目最初存在,那让我想知道您是在提供解决方案,还是只是按提示进行操作。

(如图所示,我把这个扔到了那里,因为其他所有答案通常都是技术性的。我希望人们知道为什么他们也在解决自己正在解决的问题,否则,他们往往会解决最终用户没有解决的错误问题。不在乎:)


6

要求他们做出重要的建筑决策

例如。这是同时运行y个子任务的程序x。您将选择多进程或线程结构。

两者的优点/缺点是什么?它们的性能如何,如何被用于利用多核,多处理器平台,您个人的喜好是什么?个人偏见可以帮助确定他们是否曾经实际应用过知识,并为他们提供了分享经验的切入点?

面试官可能会提出很多这样的问题:

  • 是TCP还是UDP?
  • 动态或静态类型的语言?
  • 整体应用还是多个较小的应用?
  • 您将使用什么进行进程间通信?
  • 存储过程还是ORM?

这些主题中的大多数都是涉及计算机系统如何/为什么工作的深入知识。它们都是没有明确答案的问题/解决方案,因此它们使人感觉自己能够很好地适应或克服当前的挑战。如果没有一些实际动手经验,那不是很容易理解的概念类型。

注意:也必须让申请人写一些伪代码,但是已经回答了。


我要补充的一点是,要确保问题不是针对进行面试的公司的特定领域。
JBRWilkinson

1

只需给他们一些在白板上要做的基本代码-例如,链表的实现,排序或类似的操作。

您可以在没有编译器帮助的情况下判断他们对语言的适应程度,并且可以判断他们的思维过程(尤其是如果他们从未实现过这种事情-大多数“新”程序员都从未这样做过)。


8
我不同意。链接列表和排序都是众所周知的罐头问题到常见问题。任何写过一个书的人都知道他们是如何工作的,但是大多数人都不会为自己的书而烦恼,因为大多数语言已经做好了。
Evan Plaice 2010年

我同意埃文。实际上,了解不同排序/搜索算法和基本数据结构的性能通常就足够了。知道如何实现它们是很整洁的,但是最终没有用。此外,在大多数编程工作中,知道如何为任务选择正确的框架/库比在三行代码中实现QuickSort更为重要。
艾伦·梅

0

进行对话,让它沿着技术和专业路线走来走去,并在此过程中寻找有见地或愚蠢的评论。通过面试,评估以下各项,可以使您获得所需的3/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.