2025 Java 面试

256 阅读3分钟

🌱 一、Spring 框架核心概念

✅ 1. Spring 是什么?

  • 开源 Java 框架,专注基础架构,提升开发效率
  • 核心特性:IoC、DI、AOP、事务管理
  • 社区活跃,企业广泛使用

✅ 2. IoC 与 DI

  • IoC(控制反转) :对象的创建交给 Spring 容器
  • DI(依赖注入) :容器自动注入依赖对象
    三种方式:构造器注入、Setter注入、字段注入

🧬 二、Spring Bean 相关

✅ 3. Bean 生命周期(6步)

  1. 容器启动
  2. 实例化 Bean
  3. 依赖注入
  4. 调用 init 方法(如 PostConstruct)
  5. Bean 就绪,可使用
  6. 容器销毁时,执行 destroy 方法(如 PreDestroy)

✅ 4. Bean 作用域(Scope)

  • singleton(默认,整个容器一个实例)
  • prototype(每次注入都新建)
  • request/session/application/websocket(Web 环境)

🔧 三、自动装配方式

✅ 5. 自动装配方式(3种)

  • @Autowired:按类型注入,可配合 @Qualifier
  • @Resource:按名称注入,找不到则按类型
  • @Inject:功能与 @Autowired 类似,来自 JSR-330

📐 四、常用设计模式(4个)

  • 工厂模式:BeanFactory、ApplicationContext
  • 单例模式:默认 Bean 单例
  • 代理模式:AOP 实现机制
  • 观察者模式:事件发布机制(事件监听)

🌀 五、AOP 核心概念(6个关键词)

  • 目标对象:原始业务逻辑类
  • 切面(Aspect) :增强逻辑的模块
  • 切入点(Pointcut) :哪些方法需要增强
  • 通知(Advice) :增强逻辑(前置、后置等)
  • 织入(Weaving) :将切面插入目标类
  • 代理(Proxy) :增强后的代理类对象

💼 六、事务管理

✅ 6. 两种方式

  • 编程式:手动控制事务,更灵活
  • 声明式:常用,使用 @Transactional 注解控制

✅ 7. @Transactional 常用属性

  • propagation:事务传播行为
  • isolation:事务隔离级别
  • timeout:超时时间
  • rollbackFor:指定异常回滚
  • noRollbackFor:指定异常不回滚

🔄 七、事务传播行为(7种)

  • REQUIRED(默认):有事务加入,无则新建
  • REQUIRES_NEW:总是新建事务
  • SUPPORTS:有事务则加入,无则无事务
  • NOT_SUPPORTED:有事务挂起,无则继续
  • MANDATORY:必须有事务
  • NEVER:有事务就抛异常
  • NESTED:嵌套事务,有保存点

🚧 八、事务隔离级别(5种)

解决并发问题:脏读、不可重复读、幻读

  • READ_UNCOMMITTED:可能脏读,最差
  • READ_COMMITTED:防止脏读
  • REPEATABLE_READ:防止脏读+不可重复读
  • SERIALIZABLE:防止所有问题,最安全最慢
  • DEFAULT:使用数据库默认(MySQL是 repeatable_read)

⚠️ 九、事务失效常见原因(6种)

  1. 方法内部调用自己
  2. 注解加在 private 方法上
  3. 异常被捕获未抛出
  4. 非运行时异常未配置回滚
  5. 嵌套事务,主事务回滚时子事务不影响
  6. 异步执行场景(@Async)事务无法感知

🌐 十、Spring MVC 核心

✅ 1. 什么是 Spring MVC?

  • 构建 Web 应用的框架,基于 MVC 架构
  • 与 Spring 框架无缝集成

✅ 2. MVC 三层职责

  • Model:处理业务逻辑和数据
  • View:展示数据
  • Controller:接收请求并调用业务逻辑

🔁 十一、Spring MVC 请求流程(7步)

  1. 用户发起请求
  2. DispatcherServlet 接收请求
  3. HandlerMapping 匹配 Controller
  4. HandlerAdapter 调用 Controller
  5. Controller 返回 ModelAndView
  6. ViewResolver 解析视图
  7. 响应用户

🛡️ 十二、拦截器(Interceptor)

  • 类似 Filter,但贴近 Spring MVC

  • 实现 HandlerInterceptor 接口

  • 生命周期三阶段:

    1. preHandle(请求前)
    2. postHandle(控制器后,视图前)
    3. afterCompletion(请求完成)