文章目录
一、Java基础
- ThreadLocal为什么会发生内存泄露
二、Spring
- IOC(一定会生成代理吗、循环依赖)
- 三级缓存的作用分别是什么
- 循环依赖为什么可以解决set注入,但无法解决构造器注入(doCreateBean中先createBeanInstance进行实例化,再addSingletonFactory放入的三级缓存,再populateBean进行set注入)
- AOP(在扫描bean的时候如何织入的)
- 事务如何实现(事务失效场景)
- Byname和ByType区别
- Spring的生命周期
三、Springboot
- auto-configure原理
- 启动流程
四、Dubbo
- SPI
- 服务注册与发现
五、多线程
- ThreadPoolExecutor的参数以及作用
- submit和execute的源码以及区别
- AQS
- ReentrantLock和ReadwriteLock
六、Mysql
- 常见数据库引擎
- 事务如何实现的(binLog undoLog redoLog MVCC)
- 索引原理(B+树)
- 什么时候不走索引(最左匹配等)
- 覆盖索引
- 隔离级别
七、JVM
- 双亲委派的机制、作用、什么时候需要打破
- 常见垃圾回收机制
- 运行区域(五个)
- 垃圾回收区域(老年代,新生代)如何进行回收的
- FullGC和YoungGC
八、集合
- 线程安全的list(三种)
- COW的实现方式,为什么线程安全
- hashSet为什么能去重(为什么要同时重写hashcode和equals方法)
九、数据结构
- hashMap
- concurrentHashMap
十、非关系型
- Match、filter、term、bool等区别
- 倒排索引原理
- 缓存穿透、雪崩、缓存击穿
十一、Netty
- 什么是沾包、拆包以及如何解决的
- epoll io多路复用
- 零拷贝、是否是单线程
十一、Http
- 三握四挥
- 网络分层
- 长连接
十一、MyBatis
- 三级缓存
十二、Zookeeper
- 选举机制(myid、zxid,取zxid最大的,flower、leader、observer、looking)