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

相关推荐
程序猿大波2 小时前
基于java,SpringBoot和Vue餐饮公司食堂管理系统设计
java·vue.js·spring boot
似水明俊德2 小时前
01-C#.Net-泛型-学习笔记
java·笔记·学习·c#·.net
百锦再2 小时前
飞算 JavaAI:我的编程强力助推引擎
java·spring·ai·编程·idea·code·飞算
wuyaolong0072 小时前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端
hua872222 小时前
Golang 构建学习
java·开发语言·学习
Halo_tjn2 小时前
Java 三个修饰符 相关知识点
java·开发语言
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 广东省非遗文化信息管理系统的设计与实现为例,包含答辩的问题和答案
java
番茄去哪了3 小时前
Java基础面试题day01
java·开发语言·后端·javase·八股·面向对象编程
遇事不决问清风3 小时前
AI 驱动开发实战复盘:从 0 到上线,一个真实项目的工程化总结
java·ai编程