You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.5 KiB

一、 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 标签。
一、二级缓存机制。
延迟加载原理。