八股文知识汇总(常考)

语言特性相关

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?

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部