八股文
java基础
面向对象OOP特性?概念,和面向过程OPP区别?创建对象方式、初始化过程√深、浅拷贝及实现?重载和重写区别?抽象类和接口异同?选用?
死锁?实例?产生条件?避免?悲观锁和乐观锁?场景?实现?问题及解决方案?
String创建方法区别?√特点及设计原因?拼接实现原理?与StringBuilder、StringBuffer区别?
java集合
java并发
ThreadLocal理解?场景?原理?ThreadLocalMap怎么解决Hash冲突?扩容机制?为什么key设计成弱引用?内存泄露问题及解决方案?父子线程怎么共享数据?原理?
JMM内存模型概念?为什么线程要用自己的内存?指令重排?happens-before、as-if-serial了解吗?单线程的程序一定是顺序的吗?
volatile特性、场景√原理/怎么保证有序性和可见性?√
保证原子性/多线程下i++??13个原子操作类√AtomicInteger原理?
CountDownLatch√CyclicBarrier区别?
JVM
常用的垃圾回收算法?Java堆的内存分区?√为什么新生代不用标记整理?JVM垃圾回收机制?对象进入老年代时机?Minor/Young、Major/Old、Mixed、Full GC概念?触发条件?
jvm垃圾回收器分类、jdk版本及作用?垃圾收集器选择(线上)及原因?jvm参数选用(线上)及原因 √
类的加载机制?过程/类加载器是如何加载Class文件?类的生命周期吗?jvm类加载器?双亲委派模型?作用?怎么自定义加载?Tomcat类加载机制?
Spring
iOC和DI
spring注册bean的方式?Bean生命周期?自动装配的方式?bean作用域scope类型√单例bean是线程安全的吗?√
bean循环依赖?如何解决?√为何使用三级缓存解决循环依赖而不是二级缓存?√
spring事务配置方式?隔离级别?原理?传播行为作用?实现?哪些情况下会失效?√Spring 事务如何和不同的数据持久层框架(Spring JDBC、Hibernate、Spring JPA、MyBatis)做集成?为什么在Spring事务中不能切换数据源?
Spring MVC
MVC、Restful执行流程?√核心组件?HandlerAdapter作用?√
Spring Boot
Spring Boot配置方式?读取配置的方式?bootstrap\application.properties区别?配置文件读取顺序?√
Spring Boot自动配置原理
Spring Cloud
MyBatis
Linux
计算机网络
MySQL
varchar与char、blob和text区别?DATETIME和TIMESTAMP异同?存储货币、ip、emoji😊?
delete、truncate、drop区别?
存储引擎及选择?InnoDB与MyISAM区别?
索引分类?原理√为什么InnoDB要使用B+树作为索引?不用普通、平衡二叉树、红黑树、B树√?B+树能存储多少条数据呢?Hash、B+树索引,聚簇索引与非聚簇索引区别?回表?覆盖索引?索引下推优化?最左匹配原则?
锁分类?如何解决库存超卖问题?行锁实现?意向锁?
MySQL事务特性?怎么保证?并发事务问题?事务隔离级别?默认?实现?MVCC实现原理?
数据库读写分离?分配怎么实现?主从复制原理了解吗?主从同步延迟原因?处理?百万级别以上的数据如何删除?添加字段?自增id用完怎么办?
Redis
[为什么快?I/O多路复用?实现方式?单线程模型?]
[数据类型?场景?指令?底层数据结构?从大量key中查找前缀key?]
[缓存穿透,击穿,雪崩及解决√布隆过滤器?/大量key同一时间过期?/热key重建及问题?如何保证本地缓存和分布式缓存、缓存和数据库数据一致性?√过期键的删除策略?内存淘汰策略?内存优化?/内存不足处理?/如何保证数据都是热点数据?/如何提高Redis命中率?预热?方案?无底洞问题?解决?大key和热key?判断?问题?原因?处理?]
如何实现异步、延时队列?事务?如何实现CAS操作?注意事项?原因?Lua 脚本?Pipelining?分布式锁?