犬小哈教程
首页
文章
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 面试题
23
1
Redis 数据类型有哪几种?
2
Redis 和 Memcached 的区别?
3
Redis 是单线程还是多线程?
4
Redis 单线程,为什么还这么快?
5
Redis Key 和 Value 的设计原则有哪些?
6
谈谈 Redis 的持久化机制:RDB 与 AOF 的区别?
7
Redis 分布式锁如何实现?
8
Redis 如何实现发布、订阅?
9
谈谈 Redis 5.0 中的 Stream 消息队列?
10
Redis 如何实现延迟消息?
11
谈谈 Redis 的过期策略?
12
谈谈 Redis 的内存淘汰策略?
13
Redis 事务和 Lua 脚本的区别?
14
Redis 为什么要自定义 SDS?
15
Redis 如何高效安全的遍历所有 Key?
16
什么是缓存击穿、缓存穿透、缓存雪崩?
17
什么是大 Key 问题,如何解决?
18
什么是热点 Key 问题,如何解决?
19
谈谈 ZSet 底层实现?
20
谈谈 Redis 集群模式?
21
什么是 Redis 集群脑裂问题,怎么解决?
22
什么是 Redis 的数据分片?
23
为什么 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 并发面试题
26
1
线程池的拒绝策略有哪些?
2
线程数设置多少合适?
3
多线程上下文切换是什么意思?
4
什么是守护线程,和普通线程有什么区别?
5
线程有几种状态,状态之间是怎样流转的?
6
创建线程有几种方式?
7
并发和并行的区别?
8
什么是线程死锁,如何排查?如何解决?
9
线程、进程、协程的区别?
10
什么是 ThreadLocal,如何实现的?
11
ThreadLocal 为什么会导致内存泄漏?怎么解决?
12
ThreadLocal 使用场景有哪些?
13
volatile 可以保证原子性吗?
14
volatile 是如何保证可见性和有序性的?
15
synchronized 是怎么实现的?
16
synchronized 锁升级过程是怎样的?
17
synchronized 和 ReentrantLock 的区别?
18
LongAdder 和 AtomicLong 的区别?
19
公平锁和非公平锁的区别?
20
父子线程之间如何共享、传递数据?
21
什么是 CAS?存在什么问题?
22
AQS 是什么?它存在什么问题?
23
CountDownLatch、CyclicBarrier、Semaphore 的区别?
24
什么是 Java 内存模型(JMM)?
25
什么是 happens-before 原则?
26
什么是可重入锁,如何实现可重入锁?
点击分类查看详细题目,系统化提升 Java 面试技能