Java能力和面试能力,这是两个方面的技能,可以这样说,如果不准备,一些大神或许也能通过面试,但能力和工资有可能被低估。再仔细分析下原因,面试中问的问题,虽然在职位介绍里已经给出了范围,但针对每个点,面试官的问题是随机想的,甚至同一个面试官在两场相似的面试里,提的问题也未必一样。
也就是说,如果让面试官自由提问,那么一旦问到你不熟悉的点,你可能就答不上,如果运气不好,再外加上不知道面试引导技巧等因素,真有可能面试官的提问全落在你不熟悉的范围内,这样就非常可惜了。与其这样,还不如事先准备外带面试引导,这样或许你的能力未必行,但你可以尽可能地通过引导展示你的亮点,从而提升面试通过的可能性。在本文里,就将讲述事先准备java亮点和面试中引导面试官提问的技巧。
一 根据职位介绍微调简历,这关系到能否有面试机会
虽然这点和本文的主题无关,但如果没有面试机会,那甚至无法展示引导技能,所以还是来啰嗦一下。筛选简历的人,除了会看学历专业等硬条件外,更会看相关经验的商业项目经验,这在职位介绍上一定能体现出来,比如初级开发,一般需要SSM等框架的1年经验,高级开发一般需要3年,再外带些诸如Netty,数据库调优等方面的技能。
如果看到一份简历上,没有明显的相关商业项目经验(学习项目不算),那么这份简历甚至没面试机会,这就是为什么很多初级开发简历大多石沉大海的原因。其实职位介绍上提到的技能,甚至很多初级开发应该也有项目经验,但这些人就不写清楚,这可能只能怪自己了。这块给出的经验如下。
1 简历上多积累商业项目经验,而且里面用到的技术尽可能是Java的,如果你可以凑出半年商业项目经验,那绝别写5个月。如果是毕业生缺乏商业项目经验,也得多找些学习项目写到简历上,至于帮老师干的项目以及实习项目,那当商业项目写。
2 一般职位介绍里,大多提到SSM,Oracle等技术,这些技术在你的项目里,至少应该用过其它类似吧,那么别客气,这些技术关键字尽可能地出现在你简历中的项目介绍里,比如人家要有Oracle经验,你哪怕是有MySQL,也写上,不写就说明你没数据库开发经验,写了就算有相关经验,类似技术点也照此办理。
3 每份工作的技术要求一定不同,那么你在投简历前,一定得微调,在你项目里做过的前提下,尽可能在你这份简历中,体现出相关技术。
一般对出初级开发,如果没至少半年Java(可能再具体下是SSM等框架)商业项目经验,而且简历里看不到职位介绍里出现的数据库,框架等技能关键字,这份简历基本没机会,高级开发一般是要3年相关经验。
这里不提倡编项目,也不提倡编技术,即你项目里没用到的技术你写到简历中,但话说回来,一般公司要求的技术都很普通,你在项目里哪怕没做过,好歹同事有人做过,你可以看下相关代码,或者你参与过调试此类问题。所以哪怕是初级开发,你的技能应该能对上大多数职位介绍,如果对不上就学,也应该很快能对上,只要你的简历上有足够的java商业项目经验,而且出现大多数技术关键字,至少能有面试机会。
二 结合项目和线上问题,优先准备分布式组件的亮点
面试一般从介绍项目开始,比如可以准备通过看日志,解决过redis,dubbo等方面的线上问题。这块其实连初级开发也有机会接触,比如Dubbo方面,超时时间没设好,比如设了10秒,平时没事,但一旦订单模块调风控模块出错,过了10秒再返回出错,这样导致整条(基于http的)链路长时间保持,累计起来就导致资源耗尽最终系统崩溃,或者redis超时时间没设或设置很长(1个星期),导致redis的内容在内存中缓存过多,导致OOM问题。这些问题,哪怕是初级开发,应该也有机会接触。
这方面该怎么准备? 1 简历上写上在项目里用过Redis或Dubbo组件,并排查过类似问题 2 看些基本的redis和dubbo接口方法 3 尤其看些可能导致问题点的配置,比如超时时间怎么设 4 复习下linux命令,了解如何通过linux命令看日志排查问题。
上述是最基本的,如果有MyCAT,Netty,Kafka方面的经验,比如Mycat分库字段怎么设,解决过Netty半包和粘包问题,Kakfa解决过因消息重发而导致的不幂等问题,你都可以写到简历上作为亮点。但本文给出的保本技能亮点,比如redis和dubbo超时而导致的问题排查,应该大家都有机会接触。