每个面试官随着面试经验的积累,都会逐渐的积累自己的一套面试标准,当然,这套面试标准也会随着公司的需求、业界的发展而不断的变化和发展,面试标准反应了面试官对于各种级别技术人员的技术要求,在以前的一篇blog中曾经提及过面试官应营造好的面试氛围,而这篇blog则会谈及自己面试时采用的标准来衡量面试者的技术能力,抛砖引玉,大家多交流.....
个人觉得面试标准主要由纯技术方面的标准和符合公司产品/项目技术要求的标准两部分组成,当然,还有一些是性格方面的要求,这篇blog主要谈及下技术方面的面试标准,由于面试多和公司要求、面试官的判断标准有关,所以通常来说不能因为没通过面试就认为自己没有这方面的能力,需要多尝试。
面试时对于面试者我会根据程序员和设计师两种大的标准来问问题。
程序员
对于程序员级别,我会分成初级程序员、程序员和高级程序员三个等级来判断。
初级程序员
对于初程,在技术上其实我不会有过多的要求,对于初程我会更加关注他对于技术的兴趣程度(对于技术网站的关注、各种前沿技术信息的关心),而不仅仅是因为生活所迫;另外就是在技术方面的基本功和对于公司需要采用的产品/开源工具的了解程度。
根据这样的标准,在面试初级程序员时问的问题就集中在这两个方面,常问的就是:
1、经常上什么技术网站,论坛?
2、最近业界的最新技术出现了些什么?
3、根据公司采用的产品/开源工具来问,如公司采用webwork,可以问下面试者是否之前用过,或者是否用过类似的?
程序员
对于程序员,在技术上就要有所要求了,也许因为我更看重实战,所以对于程序员,我认为在工具方面上应该是很熟练的人员,其次就是对于工具的快速掌握能力。
根据这个标准,在面试程序员时我会常问的问题:
1、根据公司采用的产品/开源工具和面试者的经历来问,如公司采用webwork,但面试者以前只用struts,那么我会问他开发一个模块时,在采用struts下是一个怎么样的经典开发过程,开发过程中可能会碰到什么问题?
在工具的快速掌握能力上我现在并没有采用具体的考评手段,只会大概的问问面试者,但我觉得最好的方法就是让面试者当场采用一种未曾使用过的技术做hello world之类的东西,这样可以考察面试者学习工具的能力以及承受压力的能力。
高级程序员
对于高级程序员,在技术上自然要求就更高了,对于高程,除了需要熟练的使用工具之外,我觉得高程需要具备对于设计思想的深刻理解。
1、根据公司采用的产品/开源工具和面试者的经历来问,如公司采用webwork,但面试者以前只用struts,那么我会问他开发一个模块时,在采用struts下是一个怎么样的经典开发过程,开发过程中可能会碰到什么问题?(面试这样的问题是判断面试者到底有没有具备程序员的能力,具备了才继续往下问)
2、根据面试者的经历问设计模式方面的问题,如面试者采用过webwork、spring IoC、Hibernate这些东西,那么我会问一些MVC、IoC、ORM这样的实战问题,多是问如果让你自己实现一个webwork这样的MVC框架的东西,你会怎么做?
设计师
对于设计师级别,我会分成模块设计师、子系统设计师、专业系统设计师和系统设计师四个级别来考量。
对于设计师,在工具使用方面的考量会降低一些,但在对于系统理解方面则会加强考核。
模块设计师
对于模块设计师,我认为他需要掌握怎么样设计模块才能让程序员可以按照设计开展,以及如何考察设计的实现。
常问的问题:
1、根据面试者的经历,挑选面试者曾经做过的模块,问他会怎么样去进行设计;
2、怎么样去保证模块按设计的实现(可以问的问题是举例实现人员在实现时出现差错,他会怎么办)。
3、根据公司的需求,来问一些业务方面的理解能力。
子系统设计师
对于子系统设计师,我认为他需要掌握如何划分模块的能力以及如何去考评模块设计师的设计的能力。
常问的问题:
1、根据面试者的经历,挑选一个子系统问他怎么样去进行设计;
2、怎么去考评模块设计师的设计;
3、根据公司的需求,来问一些业务方面的理解能力。
专业系统设计师
对于专业系统的设计师,主要则需要考评其对于专业系统的理解程度以及知识的掌握面的程度。
常问的问题:
1、根据面试者的经历,如其有流程系统的设计经验,可以问流程系统的相关设计知识点,看其的掌握程度;
2、简单的介绍实现一个专业系统的关键点,同时说下自己对于该种专业系统的发展的想法。
系统设计师
对于系统设计师,则要要求更加的全面,考察其对于系统的架构设计的能力以及带领、组织团队的能力。
常问的问题:
1、根据面试者的经历,问其其中一个系统给他设计的话,他会怎么去做,这个主要考评其从需求推导设计的能力;
2、问面试者认为在进行系统设计时需要考虑的因素,或者就是以一个失败的案例,问他认为设计的失误出现在哪。
上面说的主要都是技术方面的考评,在性格方面需要考评团队合作能力、责任心这些等等,这些可以更多的让HR帮忙。
我从来就不认为根据面试标准就可以产生一套固定的面试题,我更看重根据这样的标准在面试时根据面试者的经历来调整,以更加准确的判断面试者的能力,在面试者,我不管面试者面试的职位,一般只会分成程序员和设计师两个类型来判断,而根据面试的情况来决定面试者到底具备了两个类型中哪个级别的能力,也就是说有可能面试者面试的只是程序员,但最后我会给高级程序员的职位,不过这样的现象好象很少,呵呵...
ps: 当然,面试其实只能大概的判断面试者的能力,更准确的判断还是要通过试用才能做出。