持续更新中
Java 面试题 | 八股文
本题库汇总了 Java 面试中常见的高频考题和经典八股文,搭配丰富的手绘图讲解,希望对备战校招、跳槽晋升的小伙伴有所帮助
15专题分类
238题目总数
免费完全开放
Java 基础面试题
21
- 1String 为什么设计成 final 不可变的?
- 2String、StringBuilder 和 StringBuffer 的区别?
- 3String str = new String("abc") 创建了几个对象?
- 4接口和抽象类的区别是什么?怎么选择?
- 5while(true) 和 for(;;) 哪个性能更好?
- 6什么是反射机制?为什么反射慢?
- 7什么是泛型?为什么要使用它?
- 8如何理解 Java 中的多态?
- 9为什么 Java 不支持多继承?
- 10final、finally、finalize 的区别?
- 11finally 中代码一定会被执行吗?
- 12BigDecimal 和 Long 哪个表示金额更合适,怎么选择?
- 13AIO、BIO 和 NIO 的区别?
- 14什么是 SPI,和 API 有啥区别?
- 15为什么不能用浮点数表示金额?
- 16深拷贝和浅拷贝的区别?
- 17什么是序列化与反序列化?
- 18为什么重写 equals 时一定要重写 hashCode?
- 19什么是 UUID,能保证唯一性吗?
- 20Java 中异常分哪两类,有什么区别?
- 21为什么不能用 BigDecimal 的 equals 方法做等值比较?
Java 集合面试题
14
- 1ArrayList、LinkedList 与 Vector 的区别?
- 2HashMap、Hashtable 和 ConcurrentHashMap 的区别?
- 3Java中的集合类有哪些?如何分类的?
- 4说说 HashMap 的扩容机制?如何扩容的?
- 5为什么 HashMap 的默认负载因子要设置成 0.75?
- 6为什么在 Jdk 8 中 HashMap 要转成红黑树?
- 7HashMap 用在并发场景中会出现什么问题?
- 8HashMap 的 remove 方法是如何实现的?
- 9HashMap 在 get 和 put 时,底层流程是怎样的?
- 10HashMap 的 hash 方法是如何实现的?
- 11Set 如何保证元素不重复的?
- 12什么是 fail-fast?什么是 fail-safe?
- 13ConcurrentHashMap 是如何保证线程安全的?
- 14ConcurrentHashMap 为什么在 JDK 1.8 中废弃分段锁?
MySQL 面试题
24
- 1char 和 varchar 的区别?
- 2InnoDB 和 MyISAM 有什么区别?
- 3MySQL 深度分页如何优化?
- 4什么是回表查询?如何避免?
- 5自增主键用完了怎么办?
- 6为什么不推荐使用外键?
- 7唯一索引和主键索引的区别?
- 8count(1)、count(*) 与 count(列名) 的区别?
- 9InnoDB 中索引类型有哪些?
- 10truncate、delete、drop 的区别?
- 11慢查询怎么排查?
- 12脏读、幻读、不可重复读是什么?
- 13什么是数据库死锁,怎么解决?
- 14用了索引还是很慢,可能是什么原因?
- 15如何进行 SQL 调优?
- 16binlog、redolog 和 undolog 的区别?
- 17设计索引时应遵循哪些原则?
- 18为什么不建议使用存储过程?
- 19为什么互联网大厂不推荐使用多表 JOIN?
- 20什么是数据库范式,为什么要反范式化设计?
- 21什么是最左前缀匹配?为什么要遵守?
- 22乐观锁与悲观锁怎么实现?
- 23谈谈 InnoDB 中的表级锁、页级锁、行级锁?
- 24InnoDB 加索引,这个时候会锁表吗?
Redis 面试题
26
- 1Redis 数据类型有哪几种?
- 2Redis 和 Memcached 的区别?
- 3Redis 和 Caffeine 的区别是什么?
- 4Redis 是单线程还是多线程?
- 5Redis 单线程,为什么还这么快?
- 6Redis Key 和 Value 的设计原则有哪些?
- 7谈谈 Redis 的持久化机制:RDB 与 AOF 的区别?
- 8Redis 分布式锁如何实现?
- 9Redis 锁是并发安全的吗?怎么保证不被抢夺?
- 10怎么解决 Redis 缓存和数据库的一致性问题?
- 11Redis 如何实现发布、订阅?
- 12谈谈 Redis 5.0 中的 Stream 消息队列?
- 13Redis 如何实现延迟消息?
- 14谈谈 Redis 的过期策略?
- 15谈谈 Redis 的内存淘汰策略?
- 16Redis 事务和 Lua 脚本的区别?
- 17Redis 为什么要自定义 SDS?
- 18Redis 如何高效安全的遍历所有 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
- 1Java 线程池有几种创建方式?
- 2线程池的拒绝策略有哪些?
- 3线程数设置多少合适?
- 4说说动态线程池实现原理?
- 5任务特别多,线程池队列满了怎么办?不能拒绝!
- 6多线程上下文切换是什么意思?
- 7什么是守护线程,和普通线程有什么区别?
- 8线程有几种状态,状态之间是怎样流转的?
- 9创建线程有几种方式?
- 10并发和并行的区别?
- 11Java 中常见的锁有哪些?
- 12什么是线程死锁,如何排查?如何解决?
- 13线程、进程、协程的区别?
- 14什么是 ThreadLocal,如何实现的?
- 15ThreadLocal 为什么会导致内存泄漏?怎么解决?
- 16ThreadLocal 使用场景有哪些?
- 17ThreadLocalMap 和 HashMap 的区别?
- 18volatile 可以保证原子性吗?
- 19volatile 是如何保证可见性和有序性的?
- 20synchronized 是怎么实现的?
- 21synchronized 锁升级过程是怎样的?
- 22synchronized 和 ReentrantLock 的区别?
- 23LongAdder 和 AtomicLong 的区别?
- 24公平锁和非公平锁的区别?
- 25父子线程之间如何共享、传递数据?
- 26什么是 CAS?存在什么问题?
- 27AQS 是什么?它存在什么问题?
- 28CountDownLatch、CyclicBarrier、Semaphore 的区别?
- 29什么是 Java 内存模型(JMM)?
- 30什么是 happens-before 原则?
- 31什么是可重入锁,如何实现可重入锁?
设计模式面试题
12
Spring 面试题
22
- 1SpringBoot 和 Spring 的区别是什么?
- 2Spring 中创建 Bean 有几种方式?
- 3Spring 中的 Bean 是线程安全的吗?
- 4Spring 中 Bean 的作用域有哪些?
- 5@Autowired 和 @Resource 注解的区别?
- 6Spring Bean 的生命周期是怎么样的?
- 7谈谈 Spring 的 AOP?
- 8谈谈 Spring 的 IOC?
- 9Spring 的 AOP 在什么场景下会失效?
- 10Spring 中用到了哪些设计模式?
- 11BeanFactory 和 FactroyBean 的关系?
- 12什么是 Spring 的三级缓存?
- 13什么是 Spring 的循环依赖问题?
- 14Spring 的事务传播机制有哪些?
- 15Spring 事务失效可能是哪些原因?
- 16如何在 Spring 启动过程中做缓存预热?
- 17什么是 Spring MVC 三层架构?
- 18SpringBoot 的启动流程是怎样的?
- 19SpringBoot 如何实现 main 方法启动 Web 容器的?
- 20SpringBoot 自动配置是如何实现的?
- 21SpringMVC 处理请求的流程是怎样的?
- 22Spring Boot Controller 层怎么实现并发安全的?
Tomcat 面试题
5
Zookeeper 面试题
9
RabbitMQ 面试题
9
JVM 面试题
26
- 1有哪些常用的 JVM 启动参数?
- 2Java 是编译型还是解释型语言?
- 3Java 类加载的过程是怎样的?
- 4JVM 如何判断对象是否存活的?
- 5JVM 垃圾回收算法有哪些?
- 6内存泄漏和内存溢出的区别是什么?
- 7新生代和老年代的 GC 算法有哪些?
- 8什么是强引用、软引用、弱引用和虚引用?
- 9什么是双亲委派?怎么破坏?
- 10项目中是如何选择垃圾回收器的?为啥选择这个?
- 11FullGC 多久一次正常?
- 12JVM 中一次完整的 GC 流程是怎样的?
- 13YoungGC 和 FullGC 的触发条件是什么?
- 14什么情况会导致 JVM 退出?
- 15什么是 Class 常量池,和运行时常量池区别是什么?
- 16什么是 AOT 编译?和 JIT 有什么区别?
- 17JVM 运行时内存区域如何划分的?
- 18OOM 引起原因以及如何排查?
- 19CMS 和 G1 垃圾回收器的区别是什么?
- 20CMS 的底层原理是什么?优势在哪?
- 21满足什么条件时,一个 Java 类会被卸载?
- 22JVM 对 Synchronized 关键字的实现是怎样的?
- 23Spring 第一次启动执行慢,从 JVM 角度讲讲?
- 24线上 Full GC 频繁,如何排查解决?
- 25JVM 类加载器如何保证核心类库不被覆盖?
- 26运行时常量池和字符串常量池的关系是什么?
致谢:感谢柴鱼同学后续补充的常问面试题