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人工智能+电脑小能手9 分钟前
【大白话说Java面试题】【Java基础篇】第18题:HashMap底层是如何扩容的
java·开发语言·面试·散列表·hash-index·hash
想躺平的小羊16 分钟前
IDEA 如何显示或关闭项目类的结构(类的方法)
java·ide·intellij-idea
A-Jie-Y22 分钟前
JAVA设计模式-建造者模式
java·设计模式
曹牧32 分钟前
Java Web 开发:servlet-mapping‌
java·数据仓库·hive·hadoop
码云数智-大飞32 分钟前
OpCache 原理深挖:从字节码缓存到预加载(Preloading)的实战配置
java·开发语言
YXWik643 分钟前
Claude Code
java
小旭952744 分钟前
分布式事务 Seata 详解 + 链路追踪 SkyWalking 实战
java·分布式·后端·信息可视化·skywalking
曹牧1 小时前
Spring:@RequestMapping 注解匹配顺序
java·后端·spring
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【44】多智能体 - 混合模式、监督者(SupervisorAgent)、自定义模式
java·人工智能·spring
_日拱一卒1 小时前
LeetCode:23合并K个升序链表
java·数据结构·算法·leetcode·链表·职场和发展