background image

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

 

一起讨论,这样可以看看大家是否可以在一起工作。

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

下面是一些面试的点:

 

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

 

 

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

 

 

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

 

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

 

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

 

等等。

 

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

慢而无知的面试官。

模拟实际中的挑战和能力

作为面试官的你,你应该多想想你的工作,以及你的成长经历。这会对你的面试很有帮助。你在工作中

解决问题的实际情况是什么?你写代码的实际情况是什么?你的成长经历是什么?你是怎么获得知识和
能力的?你喜欢和什么样的人工作?相信你不难会发现你工作中的实际情况和面试的情况完全是

两码事,那么,你怎么可以用这种与实际情况差别那么大的面试来评估一个人的能力呢?

所以,最为理想的面试是一起工作一段时间。当然,这个在招聘过程中,操作起来几乎不可能,因此,

 

这就要求我们的面试官尽可能地把面试的过程模拟成平时工作的 过程。大家一些讨论来解决一个难题,
和应聘者一起回顾一下他已经做过的事情,并在回础的过程中相互讨论相互学习。下面举一个例子。

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

1.

 

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

2.

 

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

3.

 

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

4.

 

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

 

所 以,当我们在考查应聘者的代码能力时候,我们为什么不能模拟这样的过程呢?比如,让应聘者实

现一个 atoi()

 

的函数,实现起来应该很简单,然后 不断地往上加新的需求或新的案例,比如:处理符

号,处理非数字的字母的情况,处理有空格的情况,处理十六进制,处理二进制,处理 逗号 ,等等,

 

我们要看 应聘者是怎么修改他的代码的,怎么写测试案例的,怎么重构的,随着要处理的东西越来越
多,他的代码是否还是那么易读和清晰。如果只是考查编码能力,一个小时,就问这一个问题,足矣。

真正的程序员每天都在和这样的事打交道的。

 

如果要考查应聘者的设计能力,同样可以如法泡制。不断地加新的功 能,新的需求。看看面试者的思

 

 

路,想法,分 析的方法,和你的讨论是否流畅,说没说在 点上,思想清不清晰,会应用什么样的知识,
他在设计这个系统时的经验是会是什么样的,面对不断的修改和越来越复杂的需求,他的设计是否还是

那么好?