先说结论:企业对员工的技术水平要求真不高。但Java技术更新的太快了,就很容易造成面试难度与实际开发难度不匹配,外加求职人数逐年增加,怎么办?提升面试难度。
1、高校毕业人数激增,初级人才饱和
这几年互联网行业进入平稳发展阶段,但高校毕业人数却逐年激增,光2020年,就有874w应届生毕业。但现在国内IT行业已经不缺初级技术人才了,从培训出来的部分人,也没有足够的上岗能力。
2、前浪带头摸鱼
大部分前浪已经不愿意把心思花在工作上了,这就导致出现了一种“占着茅坑不拉屎”的错觉,阻挡了很多技术精湛的年轻人入场。后浪在门外哭泣,感叹面试难度太高。
3、后疫情时代,坑位有所减少
疫情让很多小公司雪上加霜,或干脆倒闭破产了。岗位跟找工作的人数严重不匹配,让很多中小企的HR都开始“优中选优”,激化内卷矛盾。
所有的这些因素好巧不巧赶一块了,就显得今年的难度格外高。
下面来分享一些我的破局观点,感兴趣的同学也可以听听我的《Java高级工程师》免费讲座,里面会详细介绍目前java的学习资料和不同职级的能力要求,并带大家掌握后端高频题。
3年前我从FB回国落地阿里担任后端技术专家,大大小小也面试了百人。在我的团队里,有刚踏出校门的应届生,也有转岗/跳槽来的优秀伙伴。我从他们的学习方式上找到了很多共同性,想展开分享给大家。
P5
Java语言的高级特性:并发、算法、线程、模板使用
关系数据库:索引怎么建,索引算法是什么,怎么调优,百万到亿级数据量之间要做什么工作
面向对象/设计模式:一般通过项目讲解
总结:需要掌握算法/数据结构,高效运用关系数据库、设计模式
P6
抓住简历中的项目,不断深挖技术,主要看你是不是真的理解,考察Spring框架、并发/多线程编程、动态代理、RPC框架等。
总结:主要考察独立架构能力,喜欢刨根问底问源码、底层实现的方法
P7
高可用框架(非常重要),JVM原理和优化,Spring cloud面试官一般会深入了解,云计算说得好非常有含金量。
总结:主要考察技术专家的能力底蕴,和微服务架构的理论和实践等
不难看出吧,从P5到P7需要掌握的可不仅仅是基础知识和架构能力,底层逻辑、实现原理、微服务架构都!要!明!白!
大家可以根据自己目前的技术水平去跟公司的职级要求一一对应,查漏补缺,也可以来我的《Java高级工程师》免费讲座,或许我能帮助到大家。
如果你参加过大厂面试,这些问题应该耳熟能详:
是不是跟你私下准备的“面试高频题”有点区别,如果有这种感觉的话,你还需要更努力的去学习。
这里我总结一些我在面试中常问的问题,大家可以根据自己的薄弱项去准备:
Java常见基础题(八股文)
容器
多线程
反射
对象拷贝
Java Web
我划分的比较细,篇幅有限这里就不一一展示了,感兴趣的来我的《Java高级工程师》讲座免费听吧
其实Java面试可以通过“死记硬背”完成
举个例子:
“JDK 和 JRE 有什么区别?”
这么简单的问题相信大家都会,等你答上来了面试官就会继续追问:
“除了javac你还了解些什么命令行工具,它们的用途是什么?”
很多人只答得出jcmd、jps、jinfo、jstat、jmap以及jstack等工具,但对应的用途却记不清了。答出来的也不要太得意,后面还有灵魂拷问。
“你用过jstat吗?你了解哪些参数?”
详细参数请看下表
到这已经难倒95%的人了,但面试官可能还会追问:
既然StringBuffer具备线程安全性,迭代开销又小,那我们实践中首选它就ok了吗?
这正是大厂面试Java程序员的基本套路——从简单题入手,再慢慢的挖掘背后的原理,从而判断求职者的技术水平,目的是考察对源码的深挖意识。
所以,想搞定Java面试,一定要拥有精益求精的精神,深挖底层原理,把技术栈学通透。
举个例子,在“Java 中操作字符串都有哪些类?它们之间有什么区别?”这道题上,如果能答出“StringBuffer和StringBuilder都继承自抽象类AbstractStringBuilder”,面试官就知道你是读过源码的人,能给你加不少分。
Java面试真题解析
从开篇展示的真题中,我挑了几道最近经常出现的,带大家一起分析下。
1、Java基础:final 在 java 中有什么作用?
2、容器:List、Set、Map 之间的区别是什么?
3、多线程:并行和并发有什么区别?
所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。
4、反射:动态代理是什么?有哪些应用?
动态代理:
当想要给实现了某个接口的类中的方法,加一些额外的处理。比如说加日志,加事务等。可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的,是动态生成的。具有解耦意义,灵活,扩展性强。
动态代理的应用:
5、对象拷贝:深拷贝和浅拷贝区别是什么?
6、Java Web:jsp 和servlet 有什么区别?
7、异常:try-catch-finally 中,如果catch 中return 了,finally 还会执行吗?
答:会执行,在return 前执行。
示例代码
8、网络:tcp 为什么要三次握手,两次不行吗?为什么?
为了实现可靠数据传输,TCP 协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方收到的。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤。
如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认。