从上面的聊天记录可以看出,面试官的反馈有两个未通过的原因:
有人可能会觉得,这面试官太较真了,能力技术够用不就行了吗?干嘛还要求这、要求那的。这不是就是面试造火箭,工作拧螺丝吗?
这两年大厂的招聘现状确实如此!为什么呢?
因为大厂的岗位就那么多,而全国所有的开发者都想进大厂。
为什么?薪资高、待遇好啊。随随便便找一个大厂的工作,每年至少能拿大几十万,这种薪资待遇,是其他行业很罕见的。
这个时候你就会发现,一个关键岗位的名额,来应聘的都是各路大神,名牌学校、高学历就不用说了,各种耀眼的工作/实习经历,各种技术和中间件也都是聊如执掌。
那么,这个时候问题来了。我面试了10个人,只招1个人,但6个人都答上来了大部分问题。那这个时候,如果你是面试官,你会怎么选?你会选谁?
了解了上面的处境,你就知道为什么这两年大厂面试要如何严苛了。
那怎么理解上面的那两个问题呢?(自我思考一般和学习能力一般)
指的面试时,回答八股都是“标准”答案,没有自己的思考在里面。例如,当面试官问你,为什么CurrentHashMap不能插入null值,但HashMap却可以?
这个时候,你只回答了,因为JDK源码里面强制规定了,CurrentHashMap的key和value为null,就会抛出空指针异常,所以CurrentHashMap不允许插入null值,但JDK源码里没有对HashMap进行这样的规定,所以CurrentHashMap不能插入null值,但HashMap却可以。
那你说这个问题你的回答对不对呢?
当然是对的,但这种“标准”答案,大家都知道。所以这样回答就不能体现你的思考和技术优势了。
那要怎么回答呢?这就要求你回答问题的时候,不要浮于表面,要把更深层次的原因说出来,例如,CurrentHashMap是给多线程下使用的,而多线程下使用时,没办法证明null是因为本身就没设置值为null,还是因为设置null值,所以为null。这个问题,这就是二义性问题。
也就是说二义性问题,在并发环境下没办法被证明,然后再举例说明,为什么没办法被证明?这样才能让面试官知道,你是真的搞懂了这个问题。
类似的问题还有很多,例如,什么样的场景下索引会失效?
如果你只是照本宣科的说了哪些烂大街的“标准”答案,在遇到XXX时会失效,在遇到YYY是会失效,这就是思考力不足了。
你要回答遇到这些问题更深层次原因,为什么遇到XXX就会实现的底层原因是啥?这些失效的场景之间有没有什么共性?这些共性问题的原因是啥?等等,这才是这个问题的关键点,搞懂问题背后的核心原因才是关键。
所以只知道“标准”答案,应聘中小型公司还行,大公司就有点不够打了。
这一项是指你的专业技能水平一般,你会的技能,其他应聘者都会。例如,Java中的SpringBoot、MyBatis、MySQL、Redis,这些都属于基础技能,来应聘的人里有10个人,但11个人都会的这种技能,这种技能大厂肯定是不买单的。
所有公司都期望你会的技能是超越了日常工作中所有的技能的,例如,微服务SpringCloud、中间件MQ、ES、Netty、Dubbo这些,这些才是面试中能打动面试官的点,也是Java中的核心技术了。所以如果你想从事Java这一行,一定要把最核心的技术搞懂,这才是你的核心优势。
面试不是只准备“标准”答案就够了,需要你掌握答案背后深层次的原因才行;学技术不是工作中够用就行了,最核心的技术会对你找工作有巨大帮助的,所以Javaer从业者,一直干、一直学才是正确的姿势。进一步有一步的欢喜,学会本身就是意义,又何必在乎用没有被用到呢?