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