再谈“我是怎么招聘程序员的”(2)

发表于:2013-08-05来源:酷壳作者:陈皓点击数: 标签:招聘
我想,让面试者解决一个难题的真正思路是: 看看他对知识的应用和理解。比如,他是否会用一些基础的数据结构和算法来解决算法题? 看看他的整个解题

  我想,让面试者解决一个难题的真正思路是:

  看看他对知识的应用和理解。比如,他是否会用一些基础的数据结构和算法来解决算法题?

  看看他的整个解题思路和想法。答案是次要的,他的想法和行为才是重要的。

  看看他是如何和你讨论交流的。把面试者当成你未来的同事,当成你的工作伙伴,一起解题,一起讨论,这样可以看看大家是否可以在一起工作。

  这些方面才是考查应聘者的能力(思路,方法、态度,性格等),并顺带着考查面试者的经验和知识。下面是一些面试的点:

  应聘者在解算法题时会不会分解或简化这个难题。这是分析能力。

  应聘者在解算法题 时会不会使用一些基础知识,如数据结构和基础算法。这是知识。

  应聘者在解题 时和你讨论的过程中你有没有感到应聘者的专研精神和良好的沟通。

  应聘者在对待这个算法题的心态和态度。如,面试面是否有危难情绪。

  应聘者在解题时的思路和方法是否得当,是否是比较科学的方法?

  等等。

  在解难题 的过程中考查应聘者的能力才是最终目的,而不是为难应聘者,不然,你只是一个傲慢而无知的面试官。

  模拟实际中的挑战和能力

  作为面试官的你,你应该多想想你的工作,以及你的成长经历。这会对你的面试很有帮助。你在工作中解决问题的实际情况是什么?你写代码的实际情况是什么?你的成长经历是什么?你是怎么获得知识和能力的?你喜欢和什么样的人工作?相信你不难会发现你工作中的实际情况和面试的情况完全是两码事,那么,你怎么可以用这种与实际情况差别那么大的面试来评估一个人的能力呢?

  所 以,最为理想的面试是一起工作一段时间。当然,这个在招聘过程中,操作起来几乎不可能,因此,这就要求我们的面试官尽可能地把面试的过程模拟成平时工作的 过程。大家一些讨论来解决一个难题,和应聘者一起回顾一下他已经做过的事情,并在回础的过程中相互讨论相互学习。下面举一个例子。

  我们知道,对于软件开发来说,开发软件不难,难是的下面是这些挑战:

  软件的维护 成本远远大于软件的开发成本。

  软件的质量变得越来越重要,所以,测试工作也变得越来越重要。

  软件的需求总是在变的,软件的需求总是一点一点往上加的。

  程序中大量的代码都是在处理一些错误的或是不正常的流程。

  所 以,当我们在考查应聘者的代码能力时候,我们为什么不能模拟这样的过程呢?比如,让应聘者实现一个atoi()的函数,实现起来应该很简单,然后 不断地往上加新的需求或新的案例,比如:处理符号,处理非数字的字母的情况,处理有空格的情况,处理十六进制,处理二进制,处理“逗号”,等等,我们要看 应聘者是怎么修改他的代码的,怎么写测试案例的,怎么重构的,随着要处理的东西越来越多,他的代码是否还是那么易读和清晰。如果只是考查编码能力,一个小 时,就问这一个问题,足矣。真正的程序员每天都在和这样的事打交道的。

  如果要考查应聘者的设计能力,同样可以如法泡制。不断地加新的功 能,新的需求。看看面试者的思路,想法,分 析的方法,和你的讨论是否流畅,说没说在 点上,思想清不清晰,会应用什么样的知识,他在设计这个系统时的经验是会是什么样的,面对不断的修改和越来越复杂的需求,他的设计是否还是那么好?

  当然,因为时间比较短,所以,你不能出太复杂的问题,这需要你精心设计一些精制的有代表性的问题。

  <<<再谈“我是怎么招聘程序员的”(上)

  在上篇中,我们说到了一些认识人的方法(操作,知识,经验,能力),还有一些面试的方法(算法题,实际生产活动中的挑战),下面我们来说说,面试的风格,还有一些点评。

  把应聘者当成你的同事

  有些公司的面试官,在面试过程中问你一个算法题,然后等着你解答了,如果你给出一个答案,然后就会问你有没有更好的答案,如果你给出了正确的答案,他们就会问你一个更难的问题,如此循环下去。他们基本上很少给你提示,甚至不停地质问你,挑战你,搞得应聘者很紧张。

  另外,有很多问题是没有标题答案的,或者说是,同一个答案的描述方法有多种,很多面试官会觉得你没有回答到他想要的答案,因此表现得有对你不屑,并表现出你不行的样子,并觉得你的能力有问题。真是可笑了。比如我一个朋友在回答什么是异步的问题时,举例说明了异步调用就是不能处理完就返回,并且需要传递一个回调函数给调用方以便完成后回调通知结果。这样的回答并没有错,但是这并不符合面试官心里想要的答案,面试官对此并不满意,进而认为我这个朋友还需要去多读读书。

  我相信大多数面试官都会这样干的。我想问问这样的面试官,你们有没有用面试的方式对过你的同事?在你的工作场景中,你会不会用面试的风格和你的同事进行交流和说话?不妨让我们来问我们自己下面几个问题:

  你在工作当中遇到难题时你是怎么解决的?你会和人讨论吗?你只用15分钟就能得出最优解吗?

  你在工作当中解决难题时是否会有一个人在旁边质问你并给你压力吗?

  你在工作当中会为难你的同事吗?会让你的同事紧张吗?你觉得在紧张的状态下能做好工作吗?

  你在工作同觉得同事的回答并不是你想要的答案,不是符合你的答案,你会认为你的同事不行吗?

  大家都知道学校里应试教育的弊端,你觉得你的面试是不是一种应试呢?

  (看看这么多的应聘者们都在做各种各样的算法题,这不就是一种应试吗?)

  想一想你的日常工作,问自己一下上面这些问题,想一想你自己的成长过程,想一想你和你的同事是怎么相处的,想一想你的日常工作中是什么样的,相信你自己也能得出结论的。

  如果你把应聘者当成自己未来的同事,那么你的面试会有下面的收获:

  面试的气氛很不错,应聘者会放松,表现自然,更接受于真实的状态。

  面试中的交流和互动(而不是一问一答)会让你更全面的考查和了解一个人。

原文转自:http://blogread.cn/it/article/3725?f=wb