我是怎么招聘程序员的
我以前写过一篇
”的文章(在
有很多人进行了回复)。今天,我想
再谈谈关于招聘和面试这方面的东西,主要是以下这些原因:
•
近半年来我在进行了大量的招聘工作,对面试有一些新的体会。
•
酷壳最近发布了几篇趣味面试题(
),从回复中让我有一些思
考。
•
我有一个同事最近面试了一家公司,他和我分享了一个博士专家对他的面试,也让我思考了一
些。
•
在豆瓣上看到
”(亮点是面试官现身知乎亲自
作答)
所以,我很想把自己的这些新的想法再次写下来的。还是和以前一样,这篇文章同样是献给面试官的。
我认为,面试的好坏完全在面试官而不是面试的人。下面是我对
”一文中的一些
加强性的观点。(关于一些点评,请参看
为了让我的文章有连续性,请允许我重申一下前文的几个重要观点。
•
只有应聘者真实和自然的表现,才能了解到最真实的东西
•
重要的不是知识,重要的是其查找知识的能力
•
重要的不是那个解题的答案,而是解题的思路和方法
操作,知识,经验,能力
我们有很多的面试官似乎分不清,什么是操作能力,什么是知识,什么是经验,什么是能力,这导致了
我们的面试官经常错误地对面试者下结论,我认为分不清这些事的人是没有资格做面试官的。所以,我
有必要在这里把这个问题先讲清楚。
•
操作。我们的面试官分不清楚什么是操作技能,什么是知识,他们甚至认为操作技能就是知
识甚至经验。比如他们会 问如下的问题,请问 Java
中的 final 是什么意思?怎么查看进程的
CPU 利用率?怎么编写一个管道程序?怎么查看进程的程序路径?VI 中的拷贝粘贴命令是什么?
包括面向对象的 XX
模 式是什么。等等。我以为,这些能够通过查况相关操作手册或是能够
google 到的东西只能说明这个人的操作技术,并不能说明他有知识或有经验
。
•
知识。知识是一个人认知和学习的体现,可能会是一些基础概念和知识。比如这些问题:TCP
和 UDP
的优缺点比 较,链表和哈希表的优缺点的比较。什么是堆什么是栈?进程间是怎么通信
的?进程和线程的优缺点?同步和异步的优缺点?面向对象的 XX
设计模式的主要原则是 什么,
等等。我以为,“
”
“
”
知其然 只是操作技术, 知其所以然 才是真正的知识。知识不够并不代
表他不能工作,会操作技能就可以应付工作,但是知识的欠缺一定会限制你的经验和能力,同样
会影响你的开发质量。
•
经验。经验通常跟一个人的经历有关系。一个人的知识范围,一个人经历过的事,通常会成
为一个人经验的体现。面 试中,我们会问这些问题:你解决过最难的问题是什么?你是怎么设
计这个系统的?你是怎么调试和测试你的程序的?你是怎么做性能调优的?什么样的代码是好的
代码?等等。对于工作年限不长的人来说,经历和做过的事的确会成为其经验的主要因素,尤其
是业务上的有行业背景的东西。但是,我更以为,经验可能更多的是你对知识的运用和驾驭,
是你对做过事情的反思和总结,是你对他人的学习,观察和交流
。