Java 面试八股

50 节教程 · 点击章节开始阅读

01★ JVM 内存区域如何划分?各自存放什么、哪些会抛 OOM?开始阅读 ›02一个 Java 对象从创建到被回收,经历了哪些过程?开始阅读 ›03★ 类加载过程分几步?双亲委派模型如何打破?开始阅读 ›04如何判断对象是否可回收?引用计数与可达性分析有何区别?开始阅读 ›05JVM 垃圾回收有哪些算法?各自的优缺点是什么?开始阅读 ›06★ CMS、G1、ZGC 收集器有何区别?如何选型?开始阅读 ›07★ JMM 是什么?volatile 如何保证可见性与有序性?开始阅读 ›08★ synchronized 底层原理是什么?锁升级过程是怎样的?开始阅读 ›09CAS 的原理是什么?如何解决 ABA 问题?开始阅读 ›10AQS 是什么?state 与同步队列如何协作?开始阅读 ›11ReentrantLock 与 synchronized 有何区别?如何选择?开始阅读 ›12CountDownLatch、CyclicBarrier、Semaphore 有何区别?开始阅读 ›13ThreadLocal 的原理是什么?为什么会产生内存泄漏?开始阅读 ›14★ 线程池的核心参数与执行流程是怎样的?开始阅读 ›15线程池的四种拒绝策略各适用什么场景?开始阅读 ›16为什么禁止使用 Executors 默认工厂创建线程池?开始阅读 ›17★ HashMap 底层原理是什么?为何 1.8 引入红黑树?开始阅读 ›18ArrayList 与 LinkedList 有何区别?ArrayList 如何扩容?开始阅读 ›19HashMap 对 key 有什么要求?hash 扰动做了什么?开始阅读 ›20★ ConcurrentHashMap 1.7 与 1.8 的实现有何区别?开始阅读 ›21String 为什么不可变?常量池与字符串拼接是怎样的?开始阅读 ›22反射的原理与代价是什么?setAccessible 有什么作用?开始阅读 ›23JDK 动态代理与 CGLIB 有何区别?Spring 如何选择?开始阅读 ›24受检异常与非受检异常如何设计?finally 的规则是什么?开始阅读 ›25try-with-resources 的原理是什么?异常抑制如何处理?开始阅读 ›26★ JVM 的 OOM 有哪些常见类型?线上如何排查定位?开始阅读 ›27JVM 常用参数有哪些?线上堆、栈、GC、日志参数怎么定?开始阅读 ›28Full GC 频繁通常是什么原因?怎么定位与处理?开始阅读 ›29强引用、软引用、弱引用、虚引用有什么区别?各自用在哪里?开始阅读 ›30Java 内存泄漏有哪些典型场景?如何用工具定位?开始阅读 ›31★ Spring IoC 是什么?Bean 的生命周期经历了哪些阶段?开始阅读 ›32★ Spring AOP 的原理是什么?JDK 动态代理与 CGLIB 怎么选?开始阅读 ›33Bean 的作用域有哪些?Spring 是如何解决循环依赖的?开始阅读 ›34Spring 事务的传播行为有哪几种?分别是什么含义?开始阅读 ›35事务隔离级别有哪几种?脏读、不可重复读、幻读分别是什么?开始阅读 ›36★ @Transactional 在哪些场景下会失效?如何避免?开始阅读 ›37MyBatis 中 #{} 与 ${} 有什么区别?会引发 SQL 注入吗?开始阅读 ›38MyBatis 一级缓存和二级缓存分别是什么?使用中有哪些坑?开始阅读 ›39★ TCP 为什么要三次握手、四次挥手?状态如何流转?开始阅读 ›40HTTP 与 HTTPS 有什么区别?keep-alive 与连接池是什么关系?开始阅读 ›41★ MySQL 为什么用 B+Tree 做索引?什么是回表与覆盖索引?开始阅读 ›42★ InnoDB 是如何用 MVCC 实现隔离级别的?快照读与当前读有什么区别?开始阅读 ›43行锁、间隙锁、临键锁分别是什么?死锁怎么发生、怎么处理?开始阅读 ›44★ 缓存穿透、缓存击穿、缓存雪崩分别是什么?如何应对?开始阅读 ›45接口限流有哪些常见算法?令牌桶、漏桶、滑动窗口怎么选?开始阅读 ›46熔断、降级、重试分别解决什么问题?重试有哪些注意点?开始阅读 ›47Java 泛型是怎么擦除的?桥接方法又是什么?开始阅读 ›48Stream 有哪些使用要点?并行流有什么坑?开始阅读 ›49Java 原生序列化、JSON、Protobuf 有什么区别?怎么选?开始阅读 ›50线上接口变慢、CPU 飙高,完整的排查路径是怎样的?开始阅读 ›