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 提升开发效率

相关推荐
huaweichenai30 分钟前
spring boot对接阿里短信
java·spring boot
KING-WU51232 分钟前
Linux 工具之Make 与 Makefile
java·linux·服务器
马剑威(威哥爱编程)1 小时前
【AI全栈后端12-08】Spring Boot 用 MCP 统一接入内部系统:让 AI 接一次,全公司复用
java·人工智能·spring boot
顽疲1 小时前
从零用 Java 实现小红书 SpringBoot Vue UniApp(23)笔记话题多对多:一条笔记进多个话题池
java·vue.js·spring boot
bst@微胖子1 小时前
Spring AI (5) : MCP 深度实战:从工具抽取到鉴权,SSE 与 STDIO
人工智能·spring·dubbo
木井巳1 小时前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法
Crazy________1 小时前
05Linux内存管理核心原理与运维实战
java·开发语言
Nebula_g1 小时前
JavaSE拓展:工具类Executors
java·开发语言·后端·spring·基础·javase
长弓三石2 小时前
企业级Harness开源平台BizBuddy适配AgentScope-2.0.4并发布0.7.0版本
java·人工智能·aigc
扶风ff2 小时前
练题簿在线免费刷题:会员线下组卷、Word 试卷与成绩导入,课堂检测更方便
java·开发语言·算法·小程序·word