Java 后端核心框架面试题(Spring / SpringMVC / MyBatis / MyBatis-Plus)

一、Spring 面试题(核心重点)

1. 什么是 Spring?

Spring 是一个轻量级开源框架,核心功能:

  1. IOC(控制反转)

  2. AOP(面向切面编程)

👉 本质:

Spring = 容器 + 解耦 + 管理对象生命周期


2. 什么是 IOC?

IOC(Inversion of Control):

👉 把对象创建的控制权交给 Spring 容器


传统方式

java 复制代码
UserService service = new UserService();

Spring方式

java 复制代码
@Autowired
UserService service;

👉 对象由 Spring 创建和注入


3. IOC 的实现原理

核心:

  1. 反射

  2. 工厂模式

  3. XML / 注解配置


4. 什么是 DI?

DI(依赖注入)是 IOC 的实现方式:

  1. 构造器注入

  2. setter 注入

  3. 注解注入(常用)


5. Bean 的生命周期(高频)

  1. 实例化

  2. 属性赋值

  3. 初始化

  4. 使用

  5. 销毁


👉 扩展:

  • BeanPostProcessor

  • 初始化方法(init)

  • 销毁方法(destroy)


6. Bean 的作用域

  1. singleton(默认)

  2. prototype

  3. request

  4. session


7. Spring AOP 是什么?

AOP(面向切面编程):

👉 在不修改原代码的情况下增强功能


应用场景

  1. 日志

  2. 事务

  3. 权限校验


8. AOP 底层原理

  1. JDK 动态代理(接口)

  2. CGLIB(子类继承)


9. Spring 事务原理(必问)

核心:

  1. AOP + 动态代理

  2. 事务管理器(TransactionManager)


传播行为(重点)

  1. REQUIRED(默认)

  2. REQUIRES_NEW

  3. SUPPORTS


常见问题

👉 为什么事务失效?

  1. 方法不是 public

  2. 自调用(this.xxx

  3. 异常被捕获

  4. 没有被 Spring 管理



二、SpringMVC 面试题

1. 什么是 SpringMVC?

SpringMVC 是基于 MVC 模式的 Web 框架。


2. 执行流程(必背)

  1. 用户发送请求

  2. DispatcherServlet 接收请求

  3. HandlerMapping 查找处理器

  4. HandlerAdapter 调用 Controller

  5. 返回 ModelAndView

  6. 视图解析器渲染页面


3. 核心组件

  1. DispatcherServlet(核心)

  2. HandlerMapping

  3. HandlerAdapter

  4. ViewResolver


4. @RequestMapping 作用

用于:

👉 映射 URL 到方法


5. 参数绑定方式

  1. @RequestParam

  2. @PathVariable

  3. @RequestBody


6. @ResponseBody 作用

👉 将返回值转为 JSON


7. SpringMVC 和 SpringBoot 区别

对比 SpringMVC SpringBoot
配置 繁琐 自动配置
启动 需要容器 内嵌 Tomcat
目的 MVC 框架 快速开发


三、MyBatis 面试题

1. 什么是 MyBatis?

MyBatis 是一个半自动 ORM 框架

👉 特点:

  • SQL 自己写

  • 支持动态 SQL


2. MyBatis 执行流程(重点)

  1. 加载配置文件

  2. 创建 SqlSessionFactory

  3. 获取 SqlSession

  4. 执行 SQL

  5. 返回结果


3. #{} 和 ${} 区别(必问)

写法 作用 安全性
#{} 预编译 安全
${} 字符串拼接 不安全

👉 ${} 会导致 SQL 注入


4. 一级缓存和二级缓存

一级缓存

  • SqlSession 级别(默认开启)

二级缓存

  • Mapper 级别(需开启)

5. 延迟加载

👉 按需加载数据(懒加载)


6. MyBatis 优缺点

优点:

  1. 灵活

  2. SQL 可控

缺点:

  1. SQL 分散

  2. 开发量大



四、MyBatis-Plus 面试题

1. 什么是 MyBatis-Plus?

MyBatis-Plus 是 MyBatis 的增强工具。

👉 特点:

  • 少写 SQL

  • 自动 CRUD


2. 核心功能

  1. BaseMapper

  2. 条件构造器 Wrapper

  3. 分页插件

  4. 逻辑删除


3. 常用方法

java 复制代码
userMapper.selectById(1);
userMapper.insert(user);

4. Wrapper 条件构造器

java 复制代码
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom");

5. 分页实现

java 复制代码
Page<User> page = new Page<>(1, 10);
userMapper.selectPage(page, null);

6. 逻辑删除

👉 本质:

用字段标记删除,而不是真删


7. 自动填充

java 复制代码
@TableField(fill = FieldFill.INSERT)


五、框架对比总结(面试必答)

1. Spring vs SpringMVC

  • Spring:容器 + AOP

  • SpringMVC:Web 层框架


2. MyBatis vs MyBatis-Plus

对比 MyBatis MyBatis-Plus
SQL 手写 自动生成
开发效率
灵活性 稍低


六、面试高频连环问(重点)

1. Spring 如何解决循环依赖?

👉 三级缓存:

  1. 一级缓存:单例池

  2. 二级缓存:早期对象

  3. 三级缓存:对象工厂


2. Bean 是线程安全的吗?

👉 默认不是(singleton)


3. MyBatis 为什么比 Hibernate 快?

👉 因为:

  • SQL 可控

  • 无复杂映射


4. MyBatis-Plus 会不会影响性能?

👉 不会,本质还是 MyBatis



七、实战经验(加分项)

1. 项目中如何用?

👉 示例:

  • Spring:管理 Bean + 事务

  • SpringMVC:接口开发

  • MyBatis:SQL 执行

  • MyBatis-Plus:快速 CRUD


2. 常见问题

  1. 事务失效

  2. SQL 注入

  3. 分页不生效

  4. 逻辑删除异常



八、一句话总结

👉 整体架构:

Spring 管理对象

SpringMVC 处理请求

MyBatis 操作数据库

MyBatis-Plus 提升开发效率

相关推荐
AI人工智能+电脑小能手3 分钟前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
蚰蜒螟13 分钟前
一次 Spring AOP 与定时任务引发的死锁排查实录
java·spring·firefox
TeamDev13 分钟前
JxBrowser 9.3.1 版本发布啦!
java·前端·javascript·c#·混合应用·jxbrowser·浏览器控件
Java爱好狂.31 分钟前
Java就业需要学习哪些内容?
spring·程序员·springboot·架构师·java面试·java面试题·java八股文
程序猿乐锅1 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
yeflx1 小时前
速腾Airy雷达使用记录
java·服务器·网络
乐之者v1 小时前
AI编程 -- Agents.md 的简单示例
java·ai编程
无风听海2 小时前
Claude Agent Skills 的四种设计模式;从渐进式披露到最小权限
java·算法·设计模式
geovindu2 小时前
java: Facade Pattern
java·开发语言·后端·外观模式·结构型模式
listening7772 小时前
HarmonyOS 6.1 元服务深度优化:从“秒开”到“常驻”的极致体验
java·开发语言·spring