广州app网站开发网站开发与管理心得体会
八股文知识汇总(常考)
语言特性相关
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?
 
