持续更新中
Java 面试题 | 八股文
本题库汇总了 Java 面试中常见的高频考题和经典八股文,搭配丰富的手绘图讲解,希望对备战校招、跳槽晋升的小伙伴有所帮助
16专题分类
250题目总数
免费完全开放
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 面试题
24
- 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
binlog、redolog 和 undolog 的区别?
- 17
设计索引时应遵循哪些原则?
- 18
为什么不建议使用存储过程?
- 19
为什么互联网大厂不推荐使用多表 JOIN?
- 20
什么是数据库范式,为什么要反范式化设计?
- 21
什么是最左前缀匹配?为什么要遵守?
- 22
乐观锁与悲观锁怎么实现?
- 23
谈谈 InnoDB 中的表级锁、页级锁、行级锁?
- 24
InnoDB 加索引,这个时候会锁表吗?
Redis 面试题
26
- 1
Redis 数据类型有哪几种?
- 2
Redis 和 Memcached 的区别?
- 3
Redis 和 Caffeine 的区别是什么?
- 4
Redis 是单线程还是多线程?
- 5
Redis 单线程,为什么还这么快?
- 6
Redis Key 和 Value 的设计原则有哪些?
- 7
谈谈 Redis 的持久化机制:RDB 与 AOF 的区别?
- 8
Redis 分布式锁如何实现?
- 9
Redis 锁是并发安全的吗?怎么保证不被抢夺?
- 10
怎么解决 Redis 缓存和数据库的一致性问题?
- 11
Redis 如何实现发布、订阅?
- 12
谈谈 Redis 5.0 中的 Stream 消息队列?
- 13
Redis 如何实现延迟消息?
- 14
谈谈 Redis 的过期策略?
- 15
谈谈 Redis 的内存淘汰策略?
- 16
Redis 事务和 Lua 脚本的区别?
- 17
Redis 为什么要自定义 SDS?
- 18
Redis 如何高效安全的遍历所有 Key?
- 19
什么是缓存击穿、缓存穿透、缓存雪崩?
- 20
什么是大 Key 问题,如何解决?
- 21
什么是热点 Key 问题,如何解决?
- 22
谈谈 ZSet 底层实现?
- 23
谈谈 Redis 集群模式?
- 24
什么是 Redis 集群脑裂问题,怎么解决?
- 25
什么是 Redis 的数据分片?
- 26
为什么 Redis 不支持回滚?
RocketMQ 面试题
8
MyBatis 面试题
13
Spring Cloud 面试题
11
Java 并发面试题
31
- 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
AQS 是什么?它存在什么问题?
- 28
CountDownLatch、CyclicBarrier、Semaphore 的区别?
- 29
什么是 Java 内存模型(JMM)?
- 30
什么是 happens-before 原则?
- 31
什么是可重入锁,如何实现可重入锁?
设计模式面试题
12
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
Zookeeper 面试题
9
RabbitMQ 面试题
9
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
运行时常量池和字符串常量池的关系是什么?
计算机网络面试题
14
致谢:感谢柴鱼同学后续补充的常问面试题
