八股文知识汇总(常考)
语言特性相关
JAVA知识
- JDK动态代理为什么只能代理有接口的类?
- 说一下对象创建的过程?
- ThreadLocal是什么?他的实现原理是什么?
- ThreadLocal会出现内存泄露吗?
- String、StringBuilder和StringBuffer的区别
- 为什么重写equals方法必须重写hashCode方法?
- JAVA反射的优缺点?
集合相关
- HashMap如何解决哈希冲突?
- HashMap中的hash方法为什么要右移16位异或?
- ConcurrentHashMap底层实现原理
- ConcurrentHashMap的size()方法是线程安全的吗?
- HashMap什么时候扩容?为什么扩容?
- 为什么ConcurrentHashMap中的key不允许为null?
- HashMap与Hashtable的区别?
- 为什么HashMap会产生死循环?
- ConcurrentHashMap是如何保证线程安全的?
- ArrayList的自动扩容机制?
JVM相关
- 谈谈对JVM的理解?
- 什么是双亲委派机制?
- 如何破坏双亲委派模型?
- JVM如何判断一个对象可以被回收?
- G1垃圾器的原理,为什么低时延?
- JVM分代年龄为什么是15次?可以是25次吗?
- JVM为什么使用元空间替代了永久代?
- 常见的垃圾回收器介绍
- 说一下CMS垃圾回收器的回收原理?
- JVM中一次完整的GC流程是什么样的?对象如何晋升到老年代?
多线程与并发
- 谈一下CAS机制(CompareAndSwap)
- ReentrantLock的实现原理?
- 简单说一下你对线程池的理解?
- 如何中断一个正在运行的线程?
- 为什么引入偏向锁、轻量级锁?介绍下升级流程。
- 请谈谈AQS是怎么一回事?
- ReentrantLock是如何实现锁的公平与非公平性的?
- 谈谈你对CompletableFeature的理解?
- 线程状态下,Blocked与Wait有什么区别?
- Thread与Runnable的区别?
- wait和sleep是否会触发锁的释放与CPU资源的释放?
- AQS为什么使用双向链表?
- 讲下线程池的线程回收。
- 如果一个线程调用两次start方法,会出现什么问题?
- JAVA官方提供了几种线程池?分别有什么特点?
- 请说一下你对happen-before的理解?
- 线程池是如何实现线程复用的?
- 当任务数超过线程数的核心线程数时,如何让他不进入队列,而是直接启用最大线程数?
- 并行与并发的区别
- wait和notify为什么要在sync代码块里面?
IO相关
- IO和NIO的区别?
- 什么是IO的多路复用机制?
- JAVA中有几种文件拷贝方式?哪种最高效?
- select与epoll的区别?
数据结构
- B树与B+树的理解
数据库相关
- MySQL性能调优
- 硬件及操作系统层面优化
- 架构设计层面优化
- 程序配置优化
- SQL优化
- 谈谈对MVCC的理解,MVCC的过程中会加锁吗?
- 关于索引的底层实现,为什么选用B+树,不用红黑树?
- MySQL数据库CPU飙升怎么解决?
- binlog与redolog有什么区别?
- innoDB如何解决幻读?
- 说一说MySQL的事务隔离机制?
- 数据库连接池有什么用?它有哪些关键参数?
- 说一下MySQL索引的优点与缺点?
- MySQL事务的实现原理?
- 说一下你对行锁、临键锁、间隙锁的理解?
- 索引为什么失效?
- MySQL中MyISAM和InnoDB引擎的区别?
- 说一下对InnoDB中索引数据结构的理解?
网络相关
- 谈一下网络四元组
- TCP为什么要设计三次握手?
- 简单说一下对序列化、反序列化的了解
- Cookie与Session的区别?
操作系统
- 死锁发生的原因和怎么避免?
常见框架
Spring相关
- Spring Bean生命周期的执行过程?
- Spring是如何解决循环依赖的?
- Spring中事务的传播行为有哪些?
- Spring中bean的作用域有哪些?
- Spring中有哪些方式可以把Bean注入到IOC容器?
- Spring中的BeanFactory和FactoryBean的区别?
- 介绍下Spring IoC的工作流程?
- Spring中有两个id相同的bean会报错吗?在哪个阶段报错?
- Spring里的事务与分布式里的事务如何区分?以及这两个事务里面有什么关联?
- Spring中的bean是线程安全的吗?
- 谈谈你对Spring中bean的理解。
- Spring中bean的生命周期?
- Spring为什么需要三级缓存解决循环依赖,而不是二级缓存?
- Spring AOP的原理?
SpringBoot相关
- SpringBoot自动装配原理是什么?
- 如何理解SpringBoot中的starter?
- SpringBoot如何解决跨域问题?
SpringCloud相关
- 谈谈对SpringCloud的理解?
Dubbo相关
- 什么是Dubbo?它有哪些核心功能?
- Dubbo负载均衡的几种策略是什么?
- Dubbo的工作原理是什么?
- Dubbo与SpringCloud的区别?
- Dubbo是如何动态感知服务下线的?
MyBatis相关
- 说一说MyBatis里面的缓存机制?
- MyBatis如何实现分页?
- MyBatis何时使用1级缓存,何时使用2级缓存?
Eureka相关
- Eureka Server数据同步原理介绍一下?
- Dubbo与Eureka的优缺点对比?
中间件相关
- Redis与MySQL如何保证数据一致性?
- Zookeeper和Redis用于实现分布式锁,哪种更好?
- 谈谈对Redis的理解
- 关于你对Zookeeper的理解?
- 介绍一下对Netty的认识?
- 请说一下Netty中的reactor模式?
- Redis的内存淘汰算法与原理是什么?
- Kafka如何保证消息不丢失?
- Kafka如何保证消息的顺序性?
- Kafka怎么避免重复消费?
- Kafka中partition分区副本的leader选举算法?
- Kafka中一个topic有3个partition,同一个消费组中2个消费者怎么消费?
- 什么是ISR?为什么要引入ISR?
- ZK中的watch机制?
- Redis存在线程安全问题吗?
- Redis多线程模型如何理解?会有线程安全问题吗?
- RDB和AOF的实现原理及优缺点?
- 请描述一下Redis中AOF的重写过程?
- ZK是如何实现Leader的选举的?
- Redis的哨兵机制与集群有什么区别?
- Redis中的哨兵选举算法是怎么实现的?
- Redis主动复制的原理?
- Redis遇到哈希冲突怎么办?
- Redis主从数据一致性怎么保证的?
- Redis sentinel集群与cluster集群有什么区别?
- 为什么Redis的最大槽数是16384个?
- 如何处理消息队列的消息堆积问题?
架构相关
- 什么是服务网格
- RPC相关
- 什么是远程调用?
- 什么是RPC?
- RPC的运用场景和优势?
- RPC与HTTP协议的差异?
- 分布式事务的原理
- 什么是负载均衡?
- 什么是消息队列?
- 说一下对分布式锁的理解,以及分布式锁的实现。
- 常见的限流算法有哪些?
- 谈谈你对一致性哈希算法的理解?
- 说一下对分布式与微服务的理解?
- 谈谈常用的分布式ID设计方案?
- 谈谈对CAP的理解?
- 服务注册中心应该是CP还是AP?