我意识到有很多关于这种事情的讨论,它们经常演变成教条,围绕着您问“ 100名逻辑海盗”类型的问题还是让他们写“嘶嘶声”。
我感兴趣的是技术和问题一直有效,你的职位面试潜在的开发商时。
每个答案一种技巧,所以我们可以对它们进行投票。
我意识到有很多关于这种事情的讨论,它们经常演变成教条,围绕着您问“ 100名逻辑海盗”类型的问题还是让他们写“嘶嘶声”。
我感兴趣的是技术和问题一直有效,你的职位面试潜在的开发商时。
每个答案一种技巧,所以我们可以对它们进行投票。
Answers:
除了实际的技术问题外,通常在访谈结束时,我还会尝试通过以下问题了解他们对行业及其文化的关注程度:
您最近是否发现过与编程相关的任何有趣的东西,并想推荐给其他程序员?新的语言,工具,平台,技术,网站?
您能说出我们行业中任何您喜欢或喜欢的人吗?为什么?(开发人员,网站创始人,作者,演讲者等)
您现在正在阅读什么,或者您最近阅读的与软件相关的书是什么?
您经常访问哪些与编程相关的网站?
尽管根本不回答这些问题(不幸的是,它经常发生)对我来说并不意味着“不雇用”,但他们对人接触软件开发专业的方式说了很多。
让他们写代码,真正的代码。
面试官可以让您选择最喜欢的编程语言,无论是C ++,Java,C#还是其他,并要求您解决一个简单的问题,例如,使用字符串或双向链表或其他方法进行某些工作。如果您无法使用最好的语言解决一个简单的问题,那就有问题了。请参阅Steve Yegge的博客文章,尤其是“心理准备”部分。
让您团队中的几个人独立采访他们。之后分享您的想法,在采访之前不要在中间谈。在两者之间进行交谈将影响您的判断力,并且您将没有独立的帮助。
对于面试的技术人员,他们可以编写代码。对于非技术人员,不要尝试问您没有经验的事情。但是,请确保至少有一些技术人员在面试。
面谈不应仅由管理人员进行,这对将来与之共事的每个工人都至关重要。
我喜欢让受访者解释他们以前的项目以及他们的工作。从这个答案中,我可以提出后续问题:为什么他们以某种方式做事,如果他们提到一个问题,他们如何解决一个特定的问题,但是最重要的是项目的目的是什么,解决了什么业务问题。
我这样做是为了查看他们是否可以以一种使我理解他们正在做的事情的方式进行表达,以及看看他们是否也理解他们正在做的事情。
令人惊讶的是,有关项目目的和业务问题的最后一个问题解决了很多人。他们根本不知道为什么他们正在从事的项目已经完成。如果您不知道为什么您的项目最初存在,那让我想知道您是在提供解决方案,还是只是按提示进行操作。
(如图所示,我把这个扔到了那里,因为其他所有答案通常都是技术性的。我希望人们知道为什么他们也在解决自己正在解决的问题,否则,他们往往会解决最终用户没有解决的错误问题。不在乎:)
要求他们做出重要的建筑决策
例如。这是同时运行y个子任务的程序x。您将选择多进程或线程结构。
两者的优点/缺点是什么?它们的性能如何,如何被用于利用多核,多处理器平台,您个人的喜好是什么?个人偏见可以帮助确定他们是否曾经实际应用过知识,并为他们提供了分享经验的切入点?
面试官可能会提出很多这样的问题:
这些主题中的大多数都是涉及计算机系统如何/为什么工作的深入知识。它们都是没有明确答案的问题/解决方案,因此它们使人感觉自己能够很好地适应或克服当前的挑战。如果没有一些实际动手经验,那不是很容易理解的概念类型。
注意:也必须让申请人写一些伪代码,但是已经回答了。
只需给他们一些在白板上要做的基本代码-例如,链表的实现,排序或类似的操作。
您可以在没有编译器帮助的情况下判断他们对语言的适应程度,并且可以判断他们的思维过程(尤其是如果他们从未实现过这种事情-大多数“新”程序员都从未这样做过)。