我上周和本周面了一些Java高级开发方面的候选人,不能说不好,但根据他们的工作经历和项目经验,完全应该发挥得更好。比如一些只要是做过项目一定会用到的技术,他们普遍都没回答好,而且很多看上去时临场发挥。

    而且根据我最近的面试经验,这不是个别现象,而是大多数候选人普遍存在的问题,这些问题包括:

    1 他们在简历上写得一些技术点,比如数据库优化,或Spring MVC框架,我相信候选人在平时项目一定做过,但不知道总结。比如我问在数据库优化方面做过哪些事情?很多人就直接说没做过,但我就不信他们连索引也没用过。

    2 我就拿java集合里的HashMap举例,我就问hashcode方法重写过吗?如果不重写会有什么后果?我想大多数候选人应该都用过HashMap,但能说上来的寥寥无几,我猜想原因可能还是只会用,不会总结。

    3 描述项目经验时,条理性不强,往往是想到什么就说什么,比如按我的思路,介绍项目经验时,先大致介绍项目背景,然后谈下用到的技术和框架,然后说下我做的模块,再可以说些亮点。但不少人叙述时基本没逻辑性,比如第一句在说用到某技术,第二句就说项目里有多少人,第三句再补充项目里还用到什么技术。

    4 回答问题始终无法切中要点,甚至有时候会用模糊语句蒙混过关。比如我问,如果出现OOM异常,该查哪些日志文件,然后该从哪些方面查?这问题不复杂,但有些人会直接说该扩展内存使用量,这就有些文不对题了。

    

    可能还有其它问题点,但上述4点给我印象最深刻。面试完给我的感觉是,候选人可能平时项目里也用到过这个技术,但不知道总结,所以导致在面试时没回答好。

    这很吃亏,因为面试官不得不根据候选人的答题情况来衡量候选人的能力。如果他们在面试前做过准备,面试结果一定会比现在要好。同时我就很奇怪,现在的候选人是不是大多在面试前不做准备?或者说不知道该如何准备?

    

    在我的博文里,很多文章是讲如何准备面试,在java web轻量级开发面试教程里,我也总结了一些简历和面试方面的经验。这里再根据我的一些面试经验,再总结下面试前该如何做准备,以及面试里的实战技巧。

 

    准备要点1:介绍项目

    你可以在家里列个发言提纲,着重说你用到的技术,以及你做的亮点,请注意,再介绍时,一定得准备些亮点,比如在微服务这块你如何做部署,在分布式集群方面,你做过哪些配置。总之这是你比别人强的地方。当你抛出亮点时,面试官会有意无意地接口问。我也知道,这其实是相当于被候选人牵着鼻子走,我在面试时也会注意,但这可能是人的思维惯性,我有时也会无意中接口问候选人提出的名词。

    也就是说,你如果准备好项目介绍,一方面能让面试官感觉你条理性很强,另外你甚至可以引导面试后面的问题。

 

    准备要点2:适当看些文档,夯实你的基础知识。

    我就拿Java里的集合来举例,大家可以看ArrayList,LinkedList,可以看些HashMap和ConcurrentHashMap,泛型,每个要点都适当深入,必要时甚至可以看些ArrayList或ConcurrentHashMap部分的源代码,面试时找机会说出来。

   面试过程中普遍出现的问题是,候选人会用这个技术,但说不好。出现这个问题的原因是候选人没做准备,其实在面试时,做不做准备给人的感觉就完全两样了。

 

    准备要点3:看些值钱的技术,这些技术小而言之是优化方面的,比如JVM优化,数据库性能优化,大而言之是框架,比如分布式集群,反向代理等,然后想办法把这些技术嵌入到你的项目介绍里,并准备些衍生问题。

 

    最后说下我的结论:

    1 面试前不做准备,哪怕你工作经验再丰富,通过面试的可能性很小。大家对此别抱有任何侥幸心理,这是从很多实例中总结出来的。

    2 我在其它博文里写过些做准备工作的方式,大家可以看下我的其它文章。

    3 积累面试经验不仅得靠准备,更得靠实战。比如你最近想要换工作了,你可以提前找些小公司练手,一方面看下最近流行哪些面试题,另一方面不断在实战中发现自己的问题,再不断准备。

    4 我也见过一些比较极端的例子,比如候选人只有初级开发的能力,但凭着能说会道,最终面上了高级开发,但毕竟这是少数,面试技巧大概占30%,最终还得靠实力,所谓一力降十会。

 

 

    

    

 

posted on 2018-01-25 22:50  hsm_computer  阅读(3580)  评论(3编辑  收藏  举报