最近我听到不少人在说,Java八股文太多太难背。其实我倒想这样说,如果你面试时仅仅让背八股文,这绝对是你的幸运,因为比较资深的面试官绝对不会仅靠八股文来甄别求职者的能力,而且,如果在准备java面试时仅准备八股文,那面试小公司问题不大,但别想进好点的公司。
Java程序员一般可以分成初级,高级和架构这三类级别,所以我姑且也把java面试官也分成初级,高级和火眼金睛这三个级别。在这篇文章里,就将详细讲讲不同级别Java面试官考核求职者的方法,同时再说说广大求职者应对Java的准备之道。
先说说初级面试官的情况。一般初级java面试官,估计只有不到半年的技术面试官经验,一般来说求职者说什么就信什么,不会主动通过问问题来确认求职者的项目情况和技术情况。
比如某人经过培训班加持,包装成3年开发经验,只要项目细节业务需求说得到位,那绝对能蒙过这类面试官,因为这类面试官未必能知道甄别商业项目和学习项目的方法。
而且只要求职者说了在面试中用了某种技术,这类面试官估计马上就用八股文来确认了,而不会通过项目细节和来确认。比如求职者说在项目里用了redis,一般的面试官估计会问,你们项目并发量是多少?Redis是单机版还是集群,或者举个例子来说Redis的用法。但初级面试官往往就会用Redis线程模型,Redis数据结构,Redis持久化这类的八股文来确认求职者的Redis能力。
但是话说回来,不少Java求职者的面试技能一般也只是到初级的程度,初级对初级,所以这类面试官估计还真能甄别出不少能力差的求职者。而且不少培训班的就业辅导老师辅导就业的能力一般,所以这类初级面试官还真能甄别出培训班学员。
如果遇到了这类初级面试官,求职者只要拥有了“面试引导”技术,哪怕是零基础经培训班加持的求职者也能过面试。具体做法是,在自我介绍和项目介绍后,马上引导出自己的亮点说辞,比如数据库调优,OOM调优,熟悉底层源码等,然后引导面试官提问,回答好问题以后也多说一句引导,这样一般就能过面试了,具体的引导方法大家可以看我如下的文章。
再说说Java中级面试官的情况。一般来说,做个1年左右的Java面试官以后,面的人多了,或者见到的企图蒙混过关的人多了,一般就知道如何甄别项目经历和技术技能了。
遇到中级面试官,求职者如果只背了Java八股文,还真未必能过面试。比如在项目介绍以后,中级面试官一定会通过项目的日志、项目部署情况和项目管理等情况来确认是否是真实的项目,这时如果求职者的项目是来自培训班包装,而且又说不好,估计连说八股文的机会都没。
而且如果求职者说了用某种技术,还是以redis为例吧,中级面试官往往会从为什么要用?怎么用?用了以后能解决什么问题?以及遇到过哪些坑等方面来问,而不会由着求职者来说了。
比如会问,你们项目数据库并发量是多少?这个并发量是否要用Redis?
你们是用什么对象访问Redis?是用集群还是单机版?如果是单机版的话如何确保高可用?
你们Redis是怎么缓存数据的?举个业务例子来说明?你们缓存数据时是用什么数据结构?有没有遇到过缓存穿透问题?
从中大家能看到,中级Java面试官就不会仅仅问八股文了,因为八股文是脱离项目的,而中级面试官就已经会通过项目问技术了。
但是根据我面试官的经历以及我辅导面试的情况,大多数求职者准备面试时未必会结合项目准备,比如单背redis问题,而不会准备redis和项目整合使用的说辞,所以遇到中级面试官的话,一些求职者,尤其是培训班出来的求职者,甚至会在没有机会展示八股文能力的前提下就被fail掉。
这样说吧,零基础想转java,或者是零基础通过培训班积累了第一波的java技能,在包装了java项目经验的前提下,如果没准备项目说辞,很容易被Java中级面试官甄别出,而且如果某求职者本来是只用过redis和dubbo等组件但包装成精通,也能被中级java面试官甄别出。那么遇到中级java面试官怎么才能过面试呢?
第一要能通过介绍项目背景、项目管方式、项目部署流程等细节说明这个项目是真实的,而不是学习项目。
第二要能结合业务说明技术。
第三在上述前提下,才有机会通过八股文展示技能,所以八股文还得背。
最后说说火眼金睛级别的Java面试官的表现。本人大概前后大概有8,9年Java面试官的经历,应该能达到这个级别。这个级别的面试官一般能有什么技能呢?
1 通过看简历,一般就能看出求职者的项目是编的,还是学习项目,或者说是真实的商业项目。
2 能通过提问,明确知道求职者的spring boot,数据库或分布式组件的技能是来自项目还是自己编的,是只知道api,还是真在项目里用过,或者是真的是解决过实际问题。
3 对任何八股文或面试技巧免疫。比如求职者只具备资深java开发的项目经验,缺乏实际的分布式组件的项目经验,准备了不少分布式组件的八股文,去面架构师的岗位,这类的java面试官一定能甄别出相关经验是不是来自项目,而是事先准备的。这大家不要有任何侥幸的心理,本人另一篇高赞回答里已经给出了相关的方法。
4 (这个技能我自己有,但其他此类面试官应该也有)熟悉初级和中级Java面试官的面试套路,同时能帮助求职者高效地提升面试技能,从而提升面试成功的可能性。
关于这点辅导java面试的能力,我再多说句,当我还是处在中级java面试官的级别时,在5年前就写了如下的文章。
这篇文章被大量抄袭或转载,大家应该能在其他地方看到过此文,但本文的出处是我的书,我现在去告一些抄袭我此文的人绝对是一告一个准。我尚在5年前写的面试辅导文章,按这做现在还应该能过初级面试官的java面试,所以目前我辅导java面试的技能应该更不用自我吹嘘了。
Java求职者在准备面试时,绝对应该料敌从宽,就应该按对方是火眼金睛级别的面试官来准备,具体该怎么做呢?
1 如果项目是学习项目,还真应该斟酌好每个细节,项目细节就不说了,而且还要准备好若干个业务流程,准备流程时要准备好接口参数和异常处理等细节,以此证明该项目是商业项目。
2 对于每个亮点,比如数据库调优等,一定得结合项目的业务来说,而且得通过配置等细节来证明自己用过。
3 准备的面要全,Spring boot框架以及相关组件,数据库,java核心和分布式组件等方面,一定得准备全,而且每个点得结合项目业务准备。
4 同时八股文也必不可少,但绝不能单纯背,一定得准备诸如底层源码点亮点,同时引导技术也必不可少,这方面的细节大家可以看我如下的文章。
从violate到ConcurrentHashMap,我通过引导面试官,过了多场技术面试_hsm_computer的博客-CSDN博客这应该是2,3年前的事情了,不过本文给出的技巧比较有通用型,一些Java开发经验在3年以内,甚至是5年以内的程序员,在面试时,都可以采用类似的技巧在面试中高效展示实力。我们知道面试官喜欢问多线程问题,尤其在面初级开发的时候更会问,而在问多线程问题时,又会经常会问violate关键字。我们知道violate关键字本身有三大方面的说辞。1 能防止指令重排。2 能确保线程内存中的对象和主线程内对象同步,即确保线程内存中对象对其他线程的可见性。3 violate关键字不能当锁用,即在一个线程对象https://blog.csdn.net/sxeric/article/details/123646601?spm=1001.2014.3001.5502Java面试官的能力其实是小于等于面试官实际的java开发能力,比如一个初级开发,哪怕面了很多java求职者,但他的面试能力顶多也是初级。而哪怕面试官的java技能达到了架构师的级别,但如果缺乏java面试的经验,还真能让一些包装经历和包装技能的面试官过关。
而且,大多数Java中级和火眼金睛级别的面试官都在大公司或外企,小公司的面试官一般都是初级水准。原因很简单,知道怎么去甄别求职者的能力后,一般也知道怎么去准备面试了,有了这种技能,干嘛还继续在小公司干?
而大家也不用担心遇到比较资深的java面试官,因为一些转行或通过培训班入行的Java程序员,找的第一份工作一般是小公司,所以基本上遇到的都是初级java面试官,而且在挑战大公司时,本身也具备一定的java技能了,所以还真能通过实话实说过面试。
而且说到Java八股文,本人还真写过一本包含八股文和面试技巧的Java面试书,但还是这句话,单纯背Java八股文,绝不是好的准备java面试的方法。
具体该怎么准备Java面试呢?其实上文也都说了,这里再多啰嗦下。
1 通过项目细节等说辞,首先把项目准备成商业项目。
2 准备多个亮点,同时准备亮点引导话术。
3 对于各种java技能,如果有条件,结合项目需求说,这样能证明相关技能的项目使用经验。尤其是对分布式组件等值钱技能,更要结合项目说。
4 同时八股文也得背,而且得全面背java框架,数据库,java核心技能和分布式组件等的八股文,但要知道,当你能结合项目业务点展示亮点和技能后,准备八股文其实并不怎么重要了。
如果你照着上述方式准备面试了,可以说在面试技能方面就能达到“中级”的水准,这样遇到只会问八股文的初级Java面试官,就有较大的概率过面试了。