1 从应聘者简历里挑出我最关心的技能,比如最近我希望招一个JS高手,最好精通Dojo。 如果有这方面的技能,就针对这些技能提问一些问题,验证是否真正具有这方面的能力。
2 问他最擅长的技术(如果此技术不是我们最需要的那个),一般一个职业程序员都会刻意的在某一方面有所特长,并有志于在这方面进行专研。也就是所谓的牛人。
3 针对某种技术,提问应聘者对这种技术的整理理解,比如会让对方谈谈Dojo的整个架构,是Dojo是怎么解决JS领域的一些核心问题的。
4 问一些技术细节,比如Spring的声明式事务处理是怎么实现的,因为这一个问题就暗含了AOP的概念和如何实现,代理模式,线程,JDBC事务处理。如果应聘者看过Spring的源代码,那么说明此人能够花心思追究技术更深层次的东西,具有优秀程序员一个优秀品质:好奇心。如果应聘者没看过 Spring的源代码,他能回答上来,说明此人各方面基础知识扎实并能融会贯通去解决问题。同样我会问Hibernate的延迟加载是怎么实现的。
5 问一些工程性问题,比如Spring的依赖注入,Scope为Session的Bean如何注入到Scope为Singleton的Bean。比如如何调整Hibernate查询性能。比如数据库索引会在什么情况下失效,原理是什么。
6 我会问一些解决方案来考察应聘者解决问题的能力,比如如何重启服务器后,依然能够保持Session。
7 我会问一些企业开发中特别重要的问题对方是如何理解和实现的的,比如事务,并发,内存管理,异构系统整合,数据库性能优化。
8 我会问一些特别基础的问题来考察应聘者基础知识掌握情况,比如HashSet是如何判断新添加的对象是否已经存在的,如果已经存在,它是不再放进去,还是放进去覆盖之前的。比如ClassLoader的工作原理。