• 我们该从哪些方面面试一个JAVA程序员
  • 发布于 2个月前
  • 206 热度
    0 评论
曾经做过一段时间java面试,面过形形色色的人,从菜鸟到高手,也从中积累了一些零星的经验。

面试之前,首先要问自己一个问题,我司到底需要招哪些层次的技术人员,他们的人员配比是怎样的,相对应的,对于这些人的技能要求又是什么? 这个问题不想清楚,就相当于目标不明确,面试时再认真仔细,也总是显得毫无章法。人才市场上鱼龙混杂,行业对技术人员的需求都比较旺盛,要招到十全十美的人是不可能的事,只要达到相对应的要求即可。面试之前,可以快速过一下他本人的简历,对他本人有个大概的认识,如专业、学历、项目经验、工作年限、期望薪资等,并且在之后注意验证其真实性。如果有笔试,也可以大致看下他的答题情况,了解其基础。后面的大头就是面试了。

对技术人员的要求首要当然是技术能力,随后依次是沟通表达能力及其他性格因素,职业稳定性。姑且考虑这三方面。

技术能力
对技术能力的考察,首先需要根据公司的规模和项目情况罗列出相应的技术点,对java程序员的要求,在基础知识上都是大同小异的。如图是一份技能参考表,可以根据这些设计笔试或者面试题。

全面性
这些要点加上sql调优和设计模式方面的内容,选几个,如果基本能答出来,而且有过一两年技术开发经验的,就说明这个人掌握的技术还是比较全面的。这一过程可以把两类人区分开来,一类只会一般CURD和改改小bug的,甚至于只会写项目的某一个模块接口,连数据库都没接触过的,一类是对框架原理、集合、java高级特性有所了解的人。这里还可以问下有关代码优化和代码规范方面的问题,这大概可以看出他原来所在团队的技术规范性。如果面试者还有附加技能,比如作为java后端程序员,懂安卓,ios的,或者精通前端的,都是可以加分的。

技术特长
以上是对技术全面性的考察,还有技术特长的考察,即根据他项目中的某个点或者他自己认为研究的比较深的一个点深入询问,直到他答不出为止,这最能看出应聘者的实战能力、应变能力和技术底蕴,即使面试官没有这方面的实践,也可以直接问,如果应聘者能把整个过程的来龙去脉讲清楚,没有逻辑错误,也是一个亮点。

技术潜力
除了考察他的技术能力,他的技术潜力也是一个比较重要的方面,比如一个只有一年开发时间的人和一个有两年开发时间的人技能水平差不多,在同等工资的情况下,当然是选择前者,因为前者的成长更快,潜力更大。比如一个人虽然对框架原理,java高级特性一窍不通,但是却对于某道编程附加题想出了别人都想不出的巧妙办法来解决,这种人也要重点关注,他本身可能是非常聪明的人。比如一个人原本所在公司的项目虽然比较小,他平时可能会深入了解一些分布式的技术,说明他学习意愿比较强,这种人也是有潜力的。

业务
技术总是和业务挂钩,比如某个面试者一直是做金融系统开发的,而自己公司也是做这方面的,虽然技术钻研的不是很深,但对业务十分了解,能很快明白需求并且上手开发,

技术能力是面试中的一个硬性指标,直接决定本人薪资,可以根据他薪资的要求进行技术考察,两者差距较大,就要在面试过程中重新调整。


沟通表达能力及性格、态度因素

沟通表达能力的重要性仅次于技术,软件开发不是单打独斗,尤其是大的项目,他是需要团队合作的,越大的项目越是如此,明确需求需要沟通,讨论技术解决方案需要沟通,代码的合并提交,项目的发布等等都需要沟通,可以毫不夸张的说,除了技术开发外,第二占用的时间就是沟通了,不过这一点考察起来显得有点虚,只要面试的时候谈吐清楚一点,态度端正一些,这关大部分人基本都让过。

在面试中,或许可以看出其某方面的性格特质和态度,性格中正面的因素可以伪装,但负面因素一定是在不经意间流露出来的,从细节中往往可以发现其性格的一些弱点,可以从积极性、稳定性、抗压性三个方面进行考察。

积极性事例:
比如面试中接电话,让所有人等了三五分钟,可以看出他本人不是很重视这次面试或者缺乏时间观念。

稳定性和抗压性事例:
面对一定难度的问题不慌不乱,面对回答中的挑错态度平和端正,都是性格稳定和抗压能力强的体现。
对于一般的技术人员,性格是一个重要的因素,对于从事一定管理工作的技术人员,性格是一个十分重要的因素,一个斗志昂扬的技术管理人员可以激发一批人的工作积极性,提高整体的生产力。

职业稳定性

排除公司倒闭等特殊情况外,连续几次都是一年以内换工作的,可以看出本人心态比较浮躁,在某个地方呆不久,特别是新人,几个月下来,业务,框架都基本熟悉,可以独立负责一些东西了,突然要走,这是很尴尬的一件事。如果某个人其他方面确实特别出色,可以了解下他本人以前离职的原因,是不是因为加班太多了,或者工资太低,或者对项目不满意,然后把自己公司的真实情况告诉他,方便他抉择,这对双方都有好处,这对他的职业规划是有帮助的,同时也有利于我司长期留住人才。

知识点熟悉并不代表动手实战能力强

软件开发是实战性很强的工作,动手能力非常重要,曾见过有些人,面试的时候说得头头是道,知道很多东西,但真正上手实现稍微复杂的功能或者部署项目,就有些束手无策了。这类人有很大的迷惑性,需要通过某些方法来排除,比如可以设计若干编程题,让他临时写出来。另外,要重点看他的项目经历,看他是否真正参与过若干个大项目。因此,面试的时候,针对一些业务模块的实现细节和实现方法以及数据量和数据维护方面的内容,要深入询问。项目经历方面的内容,造假频繁,水分多,需要特别关注。
用户评论