犬小哈教程
首页
文章
Java八股文
工具箱
破解合集
实战专栏
Open main menu
首页
文章
Java八股文
工具箱
破解合集
实战专栏
Java 面试题 | 八股文(持续更新...)
系统化学习 Java 核心知识点,按分类刷题提升面试技能
Java 基础面试题
21
1
String 为什么设计成 final 不可变的?
2
String、StringBuilder 和 StringBuffer 的区别?
3
String str = new String("abc") 创建了几个对象?
4
接口和抽象类的区别是什么?怎么选择?
5
while(true) 和 for(;;) 哪个性能更好?
6
什么是反射机制?为什么反射慢?
7
什么是泛型?为什么要使用它?
8
如何理解 Java 中的多态?
9
为什么 Java 不支持多继承?
10
final、finally、finalize 的区别?
11
finally 中代码一定会被执行吗?
12
BigDecimal 和 Long 哪个表示金额更合适,怎么选择?
13
AIO、BIO 和 NIO 的区别?
14
什么是 SPI,和 API 有啥区别?
15
为什么不能用浮点数表示金额?
16
深拷贝和浅拷贝的区别?
17
什么是序列化与反序列化?
18
为什么重写 equals 时一定要重写 hashCode?
19
什么是 UUID,能保证唯一性吗?
20
Java 中异常分哪两类,有什么区别?
21
为什么不能用 BigDecimal 的 equals 方法做等值比较?
Java 集合面试题
14
1
ArrayList、LinkedList 与 Vector 的区别?
2
HashMap、Hashtable 和 ConcurrentHashMap 的区别?
3
Java中的集合类有哪些?如何分类的?
4
说说 HashMap 的扩容机制?如何扩容的?
5
为什么 HashMap 的默认负载因子要设置成 0.75?
6
为什么在 Jdk 8 中 HashMap 要转成红黑树?
7
HashMap 用在并发场景中会出现什么问题?
8
HashMap 的 remove 方法是如何实现的?
9
HashMap 在 get 和 put 时,底层流程是怎样的?
10
HashMap 的 hash 方法是如何实现的?
11
Set 如何保证元素不重复的?
12
什么是 fail-fast?什么是 fail-safe?
13
ConcurrentHashMap 是如何保证线程安全的?
14
ConcurrentHashMap 为什么在 JDK 1.8 中废弃分段锁?
MySQL 面试题
23
1
char 和 varchar 的区别?
2
InnoDB 和 MyISAM 有什么区别?
3
MySQL 深度分页如何优化?
4
什么是回表查询?如何避免?
5
自增主键用完了怎么办?
6
为什么不推荐使用外键?
7
唯一索引和主键索引的区别?
8
count(1)、count(*) 与 count(列名) 的区别?
9
InnoDB 中索引类型有哪些?
10
truncate、delete、drop的区别?
11
慢查询怎么排查?
12
脏读、幻读、不可重复读是什么?
13
什么是数据库死锁,怎么解决?
14
用了索引还是很慢,可能是什么原因?
15
如何进行 SQL 调优?
16
设计索引时应遵循哪些原则?
17
为什么不建议使用存储过程?
18
为什么互联网大厂不推荐使用多表 JOIN?
19
什么是数据库范式,为什么要反范式化设计?
20
什么是最左前缀匹配?为什么要遵守?
21
乐观锁与悲观锁怎么实现?
22
谈谈 InnoDB 中的表级锁、页级锁、行级锁?
23
InnoDB 加索引,这个时候会锁表吗?
Redis 面试题
24
1
Redis 数据类型有哪几种?
2
Redis 和 Memcached 的区别?
3
Redis 是单线程还是多线程?
4
Redis 单线程,为什么还这么快?
5
Redis Key 和 Value 的设计原则有哪些?
6
谈谈 Redis 的持久化机制:RDB 与 AOF 的区别?
7
Redis 分布式锁如何实现?
8
Redis 锁是并发安全的吗?怎么保证不被抢夺?
9
Redis 如何实现发布、订阅?
10
谈谈 Redis 5.0 中的 Stream 消息队列?
11
Redis 如何实现延迟消息?
12
谈谈 Redis 的过期策略?
13
谈谈 Redis 的内存淘汰策略?
14
Redis 事务和 Lua 脚本的区别?
15
Redis 为什么要自定义 SDS?
16
Redis 如何高效安全的遍历所有 Key?
17
什么是缓存击穿、缓存穿透、缓存雪崩?
18
什么是大 Key 问题,如何解决?
19
什么是热点 Key 问题,如何解决?
20
谈谈 ZSet 底层实现?
21
谈谈 Redis 集群模式?
22
什么是 Redis 集群脑裂问题,怎么解决?
23
什么是 Redis 的数据分片?
24
为什么 Redis 不支持回滚?
RocketMQ 面试题
8
1
为什么项目要选择 RocketMQ?
2
RocketMQ 的架构是怎么样的?
3
RocketMQ 有几种集群部署方式?
4
RocketMQ 消息堆积了怎么处理?
5
RocketMQ 的消息是推模式,还是拉模式?
6
谈谈 RocketMQ 的事务消息?
7
RocketMQ 怎么保证消息的顺序性?
8
RocketMQ 怎么保证消息不丢失?
MyBatis 面试题
13
1
MyBatis 和 Hibernate 有什么区别?
2
#{} 和 ${} 的区别?
3
说说 Mybatis 的缓存机制?
4
Mybatis 是怎么实现字段映射的?
5
说说 Mybatis 插件的运行原理?
6
MyBatis 支持动态 SQL 吗?
7
谈谈 Mybatis 的工作原理?
8
Mybatis 是否支持延迟加载?实现原理是什么?
9
MyBatis 如何执行批量操作?
10
MyBatis 是如何进行分页的?分页插件的原理是什么?
11
为什么 Mapper 接口不需要实现类?
12
Mybatis 都有哪些 Executor 执行器?
13
说说 JDBC 的执行步骤?
Spring Cloud 面试题
11
1
什么是微服务?它带来哪些挑战?
2
什么是 Spring Cloud,它有哪些组件?
3
为什么需要 Gateway 网关,它有什么作用?
4
Zuul、Gateway 和 Nginx 有什么区别?
5
Dubbo 和 Feign 有什么区别?
6
说说 HTTP 和 RPC 的区别?
7
LoadBalancer 和 Ribbon 的区别是什么?为什么用它替代 Ribbon?
8
Feign 第一次调用为什么会很慢?怎么解决?
9
Nacos 与 Eureka、ZooKeeper 的区别?
10
Nacos 如何实现服务注册与发现的?
11
Hystrix 和 Sentinel 的区别?
Java 并发面试题
32
1
Java 线程池有几种创建方式?
2
线程池的拒绝策略有哪些?
3
线程数设置多少合适?
4
说说动态线程池实现原理?
5
任务特别多,线程池队列满了怎么办?不能拒绝!
6
多线程上下文切换是什么意思?
7
什么是守护线程,和普通线程有什么区别?
8
线程有几种状态,状态之间是怎样流转的?
9
创建线程有几种方式?
10
并发和并行的区别?
11
Java 中常见的锁有哪些?
12
什么是线程死锁,如何排查?如何解决?
13
线程、进程、协程的区别?
14
什么是 ThreadLocal,如何实现的?
15
ThreadLocal 为什么会导致内存泄漏?怎么解决?
16
ThreadLocal 使用场景有哪些?
17
ThreadLocalMap 和 HashMap 的区别?
18
volatile 可以保证原子性吗?
19
volatile 是如何保证可见性和有序性的?
20
synchronized 是怎么实现的?
21
synchronized 锁升级过程是怎样的?
22
synchronized 和 ReentrantLock 的区别?
23
LongAdder 和 AtomicLong 的区别?
24
公平锁和非公平锁的区别?
25
父子线程之间如何共享、传递数据?
26
什么是 CAS?存在什么问题?
27
谈谈 CAS 原理?
28
AQS 是什么?它存在什么问题?
29
CountDownLatch、CyclicBarrier、Semaphore 的区别?
30
什么是 Java 内存模型(JMM)?
31
什么是 happens-before 原则?
32
什么是可重入锁,如何实现可重入锁?
设计模式面试题
12
1
什么是设计模式?它能带来哪些好处?
2
设计模式的 7 大基本原则有哪些?
3
单例模式有几种写法?
4
什么是代理模式?应用场景有哪些?
5
什么是责任链模式?应用场景有哪些?
6
什么是观察者模式?应用场景有哪些?
7
什么是状态模式?应用场景有哪些?
8
什么是模板方法模式?应用场景有哪些?
9
什么是工厂模式?3种实现方式的区别和特点?
10
什么是享元模式?应用场景有哪些?
11
策略模式和工厂模式的区别?
12
策略模式和 if-else 相比有什么好处?
Spring 面试题
22
1
SpringBoot 和 Spring 的区别是什么?
2
Spring 中创建 Bean 有几种方式?
3
Spring 中的 Bean 是线程安全的吗?
4
Spring 中 Bean 的作用域有哪些?
5
@Autowired 和 @Resource 注解的区别?
6
Spring Bean 的生命周期是怎么样的?
7
谈谈 Spring 的 AOP?
8
谈谈 Spring 的 IOC?
9
Spring 的 AOP 在什么场景下会失效?
10
Spring 中用到了哪些设计模式?
11
BeanFactory 和 FactroyBean 的关系?
12
什么是 Spring 的三级缓存?
13
什么是 Spring 的循环依赖问题?
14
Spring 的事务传播机制有哪些?
15
Spring 事务失效可能是哪些原因?
16
如何在 Spring 启动过程中做缓存预热?
17
什么是 Spring MVC 三层架构?
18
SpringBoot 的启动流程是怎样的?
19
SpringBoot 如何实现 main 方法启动 Web 容器的?
20
SpringBoot 自动配置是如何实现的?
21
SpringMVC 处理请求的流程是怎样的?
22
Spring Boot Controller 层怎么实现并发安全的?
Tomcat 面试题
5
1
过滤器和拦截器的区别是什么?
2
介绍一下 Tomcat 的 IO 模型?
3
Tomcat 的类加载机制是怎样的?
4
Tomcat 中有哪些类加载器?
5
为什么 Tomcat 默认最大线程数是 200,而不是 N+1?
Zookeeper 面试题
9
1
Zookeeper 是干什么的?
2
Zookeeper 是 CP 的还是 AP 的?
3
Zookeeper 的典型应用场景有哪些?
4
Zookeeper 的数据结构是怎样的?
5
Zookeeper 的 watch 机制是如何工作的?
6
如何通过 Zookeeper 实现服务注册与发现?
7
如何用 Zookeeper 实现分布式锁?
8
Zookeeper 脑裂是什么?怎么解决?
9
Zookeeper 是如何保证创建的节点是唯一的?
RabbitMQ 面试题
9
1
RabbitMQ 的整体架构是怎样的?
2
RabbitMQ 是如何保证高可用的?
3
RabbitMQ 如何防止重复消费?
4
RabbitMQ 如何保证消息不丢失?
5
RabbitMQ 怎么实现延迟消息?
6
什么是 RabbitMQ 的死信队列?
7
说说 RabbitMQ 的事务机制?
8
RabbitMQ 如何实现消费端限流?
9
怎么保证消息一定能发送到 RabbitMQ?
JVM 面试题
26
1
有哪些常用的 JVM 启动参数?
2
Java 是编译型还是解释型语言?
3
Java 类加载的过程是怎样的?
4
JVM 如何判断对象是否存活的?
5
JVM 垃圾回收算法有哪些?
6
内存泄漏和内存溢出的区别是什么?
7
新生代和老年代的 GC 算法有哪些?
8
什么是强引用、软引用、弱引用和虚引用?
9
什么是双亲委派?怎么破坏?
10
项目中是如何选择垃圾回收器的?为啥选择这个?
11
FullGC 多久一次正常?
12
JVM 中一次完整的 GC 流程是怎样的?
13
YoungGC 和 FullGC 的触发条件是什么?
14
什么情况会导致 JVM 退出?
15
什么是 Class 常量池,和运行时常量池区别是什么?
16
什么是 AOT 编译?和 JIT 有什么区别?
17
JVM 运行时内存区域如何划分的?
18
OOM 引起原因以及如何排查?
19
CMS 和 G1 垃圾回收器的区别是什么?
20
CMS 的底层原理是什么?优势在哪?
21
满足什么条件时,一个 Java 类会被卸载?
22
JVM 对 Synchronized 关键字的实现是怎样的?
23
Spring 第一次启动执行慢,从 JVM 角度讲讲?
24
线上 Full GC 频繁,如何排查解决?
25
JVM 类加载器如何保证核心类库不被覆盖?
26
运行时常量池和字符串常量池的关系是什么?
点击分类查看详细题目,系统化提升 Java 面试技能