学习建议:优先掌握高频考点(如Spring、JVM、MySQL),结合实践理解原理,避免死记硬背。
一、MyBatis篇
-
核心概念
-
定义:半ORM框架,封装JDBC操作,通过XML/注解映射SQL与POJO。
-
优点:SQL灵活、轻量级;缺点:需手动编写SQL,移植性差。
-
-
关键机制
-
#{}
vs${}
:-
#{}
:预编译占位符(防SQL注入) -
${}
:字符串替换(慎用,易引发注入)
-
-
字段名映射:
-
别名(
SELECT col AS property
) -
<resultMap>
自定义映射
-
-
延迟加载:动态代理按需加载关联对象(需配置
lazyLoadingEnabled=true
)。
-
-
高级特性
-
分页原理:
-
逻辑分页(
RowBounds
,内存开销大) -
物理分页(
PageHelper
插件,重写SQL添加LIMIT
)
-
-
批量插入:
SqlSession#insertBatch()
+ExecutorType.BATCH
。
-
-
设计模式
-
工厂模式(
SqlSessionFactory
) -
代理模式(Mapper接口无实现类,由
MapperProxy
动态代理)
-
二、Spring篇
-
核心思想
-
IoC:容器管理Bean依赖(解耦对象创建)。
-
AOP:切面编程(日志/事务),通过动态代理实现横切关注点。
-
-
依赖注入
-
方式:构造器注入(强依赖)、Setter注入(可选依赖)、字段注入(
@Autowired
/@Resource
)。 -
注解区别:
-
@Autowired
:按类型注入,需@Qualifier
指定名称 -
@Resource
:按名称注入(默认name
属性)
-
-
-
Bean管理
-
生命周期:实例化 → 属性填充 → 初始化(
InitializingBean
) → 使用 → 销毁(DisposableBean
)。 -
作用域:Singleton(默认)、Prototype、Request、Session等。
-
-
高频考点
-
循环依赖解决:三级缓存(
singletonFactories
暴露早期对象)。 -
单例线程安全:无状态Bean安全,有状态需用
ThreadLocal
。 -
事务传播:
REQUIRED
(默认,加入当前事务)、REQUIRES_NEW
(新建事务)。
-
三、JVM篇
-
内存模型
plaintext
┌─────────────┐ ┌──────────────────┐ │ 线程私有区 │ │ 线程共享区 │ ├─────────────┤ ├──────────────────┤ │ 程序计数器 │ │ 堆 │ │ 虚拟机栈 │ │ (对象实例/数组) │ │ 本地方法栈 │ │ 方法区 │ └─────────────┘ │ (类信息/常量池) │ └──────────────────┘
-
堆 vs 栈:堆存对象实例(GC主区域),栈存局部变量/方法调用。
-
-
垃圾回收
-
回收算法:标记-清除、复制(新生代)、标记-整理(老年代)。
-
GC触发条件:
-
Minor GC:Eden区满
-
Full GC:老年代不足、方法区不足、
System.gc()
调用
-
-
-
类加载机制
-
过程:加载 → 验证 → 准备 → 解析 → 初始化 → 使用 → 卸载。
-
双亲委派模型:避免重复加载,保证核心类安全。
-
四、MySQL篇
-
核心机制
-
事务隔离级别:
级别 脏读 不可重复读 幻读 READ_UNCOMMITTED ✓ ✓ ✓ READ_COMMITTED ✗ ✓ ✓ REPEATABLE_READ ✗ ✗ ✓ SERIALIZABLE ✗ ✗ ✗ -
InnoDB vs MyISAM:
-
InnoDB:支持事务、行锁、外键
-
MyISAM:表锁、全文索引、高读性能
-
-
-
索引与优化
-
索引类型:B+树(主键索引)、哈希索引(MEMORY引擎)。
-
SQL优化:
-
避免
SELECT *
-
用
EXPLAIN
分析执行计划 -
分库分表(垂直拆分模块,水平拆分数据)
-
-
-
分库分表ID方案
-
雪花算法(分布式ID)
-
数据库自增ID(步长隔离)
-
五、SpringBoot篇
-
核心优势
-
约定优于配置:简化部署(内嵌Tomcat)、自动装配(
@SpringBootApplication
)。 -
Starters机制:一站式依赖(如
spring-boot-starter-web
集成Web组件)。
-
-
关键功能
-
热部署:
spring-boot-devtools
(实时重载)。 -
启动代码:实现
CommandLineRunner
或ApplicationRunner
接口。 -
监控:
Actuator
端点(/health
、/metrics
)。
-
-
配置管理
-
配置文件优先级:
properties
>yml
> 外部配置(--spring.config.location
)。
-
高频考点速记表
模块 | 必考知识点 |
---|---|
MyBatis | #{} vs ${} 、延迟加载、分页原理 |
Spring | IoC/AOP、循环依赖、事务传播 |
JVM | 内存模型、GC算法、类加载机制 |
MySQL | 事务隔离、索引优化、InnoDB特性 |
SpringBoot | Starters、自动装配、Actuator监控 |
面试技巧:回答框架性问题时采用 "定义→原理→应用场景→优缺点" 结构(如解释AOP时:定义切面编程 → 动态代理实现 → 日志/事务场景 → 灵活但增加复杂度)。结合项目实例更佳!
40多分钟的Java面试真的让我看透了。面试多了,发现很多面试题都非常类似,逃不开这篇八股文,今天给大家全部整理好了,赶紧背起来!!!面试前一定要抓紧重点记忆背理解,八股文是必考的,不然到嘴边的offer都要飞走了!