Java集合比如说HashMap和ConcurrentHashMap我觉得,你最好在平时能去耐心读一下源码,搜一搜相关的博客,

最好能知道每个参数为什么设置成这么大?有什么好处?为什么?你会发现不少东西,网上也有很多视频可以去学。

JUC包,毫无疑问的,你得去学,哪怕你平时编程根本不去用,但是你得会,只得知道有这个东西,

你至少得知道aba,cas,aqs,unsafe,volatile,sync,常见的各种lock,死锁,线程池参数和如何合理的去设置,

你必须明白自旋,阻塞,死锁和它如何去定位,oom如何定位问题,cpu过高如何定位等基本的操作,

你可以没有生产调试经验,但不代表你可以不会top,jps,jstack,jmap这些可能会问的东西。以及可能衍生的jmm模型和mesi协议等。

JVM毫无意外,大厂必须问,垃圾回收算法,垃圾收集器,jvm内存模型,每个区域用途,各种oom的种类,

jvm调优经验,没有你也要做过,自己去设置启动参数,知道常见参数的含义,类加载过程,双亲委派,

什么时候young gc,full gc,各种情况进入老年代的方式,你知道的越多越好,因为吹起来就越自信,举个例子,逃逸分析是什么?markword里面有什么?

Spring,最好能抽空看看源码,最起码bean的生命周期,如何解决循环依赖,父子容器,还有boot的启动流程,事务实现原理,动态代理原理等,你知道越多越好。

Dubbo,因为我用的是dubbo,而且我写了,这个也是高频,写了必须问的,他的设计框架,负载均衡,spi机制,

一般顺势会提到zk,选举算法,分布式锁等,一些常见的dubbo问题可以去搜,网上的基本都有。

可能会顺带去问cloud的问题,生产没用过不怕,你现在可以自己clone一个项目,最起码,互联娃,

你得知道还有这个玩意儿,还有他集成了啥,比如erureka,hystrix,ribbon,feign,zuul这些常规的东西吧,他们做什么的?

Redis,必须会的,我这方便还算懂得多点,可以和面试官大战几个回合吧,应该不至于上来被打趴下,

单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型,不要再说常规的5个了,多说几个让你区别其他小哥,

包含一些缓存常见的问题击穿、穿透、雪崩、数据一致性等,你必须会,不会基本没戏,一致性hash,

布隆过滤器的原理,为此我还去了解了geohash的原理以及google s2的原理,底层数据结构sds和跳表等,你多学点,准没错。

Mysql,事务,锁,索引,b+树,主从这些你必须会

Mq ,我用的rocketmq,你得知道为什么用,重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,

整个消息发送消费的流程,读过源码更佳,更好吹

Netty的话,零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好

算法,建议去刷题,我运气好,简单的算法让我碰到了,一些快排,堆排,二叉树相关的,链表反转,成环,环节点,

跳楼梯等常规的简单算法建议刷刷,双指针,dp,递归这些还是多找找感觉,大数据内存有限的场景的统计,

有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。

网络,http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。

还有就是一些分布式事务实现,架构实现,比如抢红包,高并发下单等常规的场景设计,你来设计,你怎么去设计?

多找一些大牛或者上网自己查,帮你看看有哪些漏洞,有那些解决方案?业界有哪些好的中间件?

关于面试题的答案请看以下三个链接:

​https://gitee.com/java_wxid/Java-knowledge-system-induction​