纵观目前的Java面试套路,无非能够分为这么几个部分,Java基础
、主流框架
、分布式相关
、数据库
等。面试
最喜欢问的无非是HashMap,HashMap常问的无非也就是数据库
线程安全相关,为啥线程不安全?安全
怎么扩容的?JDK1.7和1.8的实现有啥区别?并发
引出ConcurrentHashMap
的实现原理,分段锁怎么作的框架
接着就是JUC相关的了,根据并发下的三类问题原子性
、可见性
、有序性
引出synchronized
、volatile
、CAS
、线程池等相关问题
。问到CAS
,通常又会问一下他存在什么问题,好比ABA问题,相关的解决方案等。分布式
细心的你会发现,其实范围并不大,来来去去就是这些题目,可是你发现没,你却老是答很差,仍是那句话,真的不是时间问题,就像女生说的“哪有什么直不直男,只有用不用心罢了!”线程
框架范围就很大了,通常也会挑你熟悉的框架问,好比最常问的就是Spring了,由于这个基本是标配了。Spring最常问的无非就是IoC
、AOP
、Bean相关的一些东西,好比生命周期,循环依赖解决等。code
固然除了Spring,建议你还要准备一两个本身熟悉的框架。索引
常见的一些分布式解决方案,好比分布式事务
、分布式协调
等,会根据你相关使用Dubbo、Spring Cloud问一些相关源码,好比问烂了的,注册中心挂了,服务之间还能不能通讯啊这类问题。生命周期
固然也还有幂等性,MQ怎么不丢消息,顺序消息等问题。
数据库最常问的无非就是锁
(表锁和行锁),索引
(索引分类,何时用索引,大家项目是怎么用索引的啊)等
数据库的套路比前面那些都要窄一些,固然若是面试官对数据库特别熟,还会各类深挖下去。