一、 Java 核心体系 1. Java 基础 (J2SE) 面向对象 (OOP):封装、继承、多态的深层理解;接口(Interface)与抽象类(Abstract Class)的区别。 集合框架: List:ArrayList(动态数组)与 LinkedList(双向链表)。 Set:HashSet(唯一性)、TreeSet(排序)。 Map:HashMap 的底层原理(数组+链表+红黑树)、ConcurrentHashMap(线程安全)。 异常处理:受检异常(Checked)与非受检异常(Unchecked);try-with-resources 自动关闭资源。 泛型与反射:类型擦除、动态代理(JDK 代理 vs CGLIB)。 2. Java 并发编程 (JUC) 线程基础:线程状态流转、wait/notify、join、yield。 线程池:ThreadPoolExecutor 的七大参数及拒绝策略。 锁机制:synchronized(偏向锁、轻量级锁、重量级锁)与 ReentrantLock。 并发工具类:CountDownLatch、CyclicBarrier、Semaphore。 JMM (Java 内存模型):原子性、可见性、有序性;volatile 关键字的作用。 3. JVM (虚拟机) 内存区域:堆(Heap)、栈(Stack)、方法区、程序计数器。 垃圾回收 (GC): 算法:标记-清除、复制、标记-整理。 收集器:CMS、G1、ZGC 的特性。 类加载机制:双亲委派模型及其打破方式。 性能调优:常用指令(jps, jstat, jmap)及内存溢出(OOM)排查。 二、 数据库系统 (以 MySQL 为主) 1. 基础与架构 存储引擎:InnoDB(支持事务、行锁)与 MyISAM(性能高、表锁)的区别。 SQL 语言:DML(数据操作)、DDL(定义)、DCL(控制);复杂 Join 操作。 2. 索引 (Index) —— 性能核心 数据结构:为什么使用 B+ Tree 而不是二叉树或 Hash? 索引分类:主键索引、唯一索引、组合索引(遵循最左前缀原则)。 聚簇索引 vs 非聚簇索引:回表查询的概念。 索引失效场景:如使用 OR、模糊查询 % 在前、类型隐式转换等。 3. 事务 (Transaction) ACID 特性:原子性、一致性、隔离性、持久性。 隔离级别: 读未提交(脏读) 读已提交(不可重复读) 可重复读(MySQL 默认,解决幻读) 串行化 MVCC (多版本并发控制):如何通过 ReadView 和 Undo Log 实现非阻塞读。 三、 Java 与数据库的连接 (持久层) JDBC:原始连接步骤、防止 SQL 注入(使用 PreparedStatement)。 连接池:Druid、HikariCP 的配置与优势(减少连接创建开销)。 MyBatis/MyBatis-Plus: 动态 SQL 标签。 一、二级缓存机制。 延迟加载原理。