前几天晚上,我想起了我在面试过程中最令人印象深刻的表现。然而,让这场表演特别有趣的不是我做得多好 ,而是我如何做得很好。以及如何让我对自己和过程感到不满意。
我正在面试一个软件开发职位,这个特定组织的面试过程是 (1) 电话面试,(2) 编程练习,(3) 面对面面试。电话面试进行得很顺利,招聘人员告诉我,公司对我很兴奋 — 这是一个温和的好兆头,不管它值多少钱。
无论招聘人员的评估多么准确,公司的感觉都足够积极,足以让我进行编程练习。这一切都发生在我读研究生的时候,在这次面试的时候,我在一个叫做 “高级数据库设计” 的课上,在这个课上,我们探索了传统关系数据库之外的持久性选项。在当时,这是一个有点前卫的课程,因为NoSQL运动还没有获得大量的动力。
当他们把编程练习交给我时,我刚刚在这堂课中总结了一章,我们在其中研究了使用R树来存储地理信息。这个研究单元包括它们是什么,它们是如何使用的,以及一些伪代码来真正推动这一点。就像命运一样,r-tree恰好是这次采访的编程练习的一个非常优雅的解决方案。
《赢得面试》
正如他们所说,这种练习感觉就像在桶里打鱼。我意识到我刚刚学到的东西适用于我的情况,我,嗯, 应用它。为了验证的目的,我对它进行了一些自动测试,然后很快就把这个练习转了过来。
公司欣喜若狂, 我不需要试图通过招聘人员了解他们的反应。他们直接伸出手让我出去接受采访,并直截了当地告诉我,这是迄今为止他们见过的最好的解决方案。我觉得自己好像是一部非常蹩脚的印第安纳·琼斯电影中的英雄,在这部电影中,这位古老的看门人已经等了几千年,等待有人来用R树解决编程问题。
我结束了面试,但只是因为更好的东西来了,因为我谈判的细节飞出去见他们。他们显然很失望,他们鼓励我让他们知道我是否改变了主意。我喜欢这家公司,这个序曲让我感觉很好。
然而,我离开了整个经历,感到奇怪的空虚。尽管这让我觉得给一家公司留下了如此深刻的印象,但不可否认,这在很大程度上是运气的问题。如果我在几周前做了编码练习,我就不会知道R树了。如果几个月后我做了这个练习,我可能已经完全忘记了R树作为一种选择。在这两种情况下,我都不会吹走我的面试官,这意味着我 “前所未有” 的表现是一个快乐的巧合,而不是我是某种超级程序员的反映。
程序员,不要担心 “失败”
您是否曾经参加过面试或编程练习,要求您根本没有的知识?著名的是,如果你有机会去谷歌面试,你会发现他们最初的电话面试基本上就像你本科CS项目高年级算法课上的口头期中考试。O符号。排序算法。所有那些有趣的东西。从长远来看,他们并不孤单,但他们的面试过程是标志性的。
为了防止措手不及,你可能会在进入就业市场之前进行研究,确保你能回答各种各样的技术问题。毕竟,你永远不知道他们会向你扔什么。但问题是,你永远不知道他们会问什么 — 或者你或其他候选人最近获得了什么知识,这些知识将是这次面试的最佳时机。
你可能会遇到像我这样的人,他碰巧读了一份白皮书,详细介绍了面试官引以为豪的确切问题的解决方案。如果是这样的话,你只是运气不好。
这就是为什么你不应该感到难过。面试过程实际上是令人沮丧的随机和非科学的。面试 “失败” 并不意味着你在任何事情上真的 “失败” 了。这只是意味着你还没有幸运地阅读那些能让你通过的材料。
公司,专注于正确的事情
你有这样的面试流程吗?你有没有一个过程,在其他条件相同的情况下,你最终会雇佣一个碰巧在R树上读到的候选人?如果你这样做,我建议你进行一些反省,以评估这是否可能是招聘过程中的气味。
根据我的经验,面试旨在了解以下三件事中的一项或多项: 这位候选人知道什么,这位候选人做了什么,这位候选人能做什么?它们在有用性 (最少到大多数) 和评估难度 (最少到大多数) 方面都是有序的。
候选人知道的东西可能是最没用的,因为人类一生都在学习,他们知道的东西很容易改变。但是很容易评估。将琐事测验等作为面试过程的一部分,你可以弄清楚他们知道什么。
候选人所做的事情有点棘手,但更有用。我的意思是,当然,他们有简历和轶事,但拆散总是有可能的。你可以更肯定的是,他们知道什么是R树通过询问他们比你可以肯定的是,他们已经实现了R树通过听他们做这个断言。但是,如果他们以前已经成功实施过,那比他们知道自己是什么更有价值。
但他们所知道的或他们所做的事情的重要性与此相比相形见绌: “这个人,面对一个需要R树的情况,会做必要的研究并将其转化为解决方案吗?” 这就是你真正想知道的。最后两件事只是试图了解它的代理。
我当然对进行面试的最佳方式没有任何前所未有的洞察力。评估候选人很难。但我可以告诉你,你越接近对应聘者能做的事情进行评估,你就越有可能成功招聘。