Spring Boot 全家桶面试题
约 993 字大约 3 分钟
Spring Boot 全家桶面试题精选
核心概念
1. Spring Boot 基础
面试官:什么是 Spring Boot?它解决了什么问题?
Spring Boot 是简化 Spring 应用开发的框架,通过自动配置和约定优于配置的理念,让开发者能够更快地构建应用。
核心优势:
- 自动配置:减少手动配置的数量
- 起步依赖:简化依赖管理
- 内嵌服务器:简化部署流程
- 监控管理:提供运维特性
2. 自动配置原理
面试官:能详细说说 Spring Boot 的自动配置原理吗?
自动配置的核心是 @EnableAutoConfiguration
注解,工作流程如下:
配置文件加载
- 扫描
META-INF/spring.factories
- 加载 AutoConfiguration 类
- 扫描
条件注解判断
@ConditionalOnClass
@ConditionalOnMissingBean
@ConditionalOnProperty
配置类生效
- 创建配置类实例
- 注册相关 Bean
Spring Cloud 组件
1. 服务注册与发现
面试官:Eureka 和 Nacos 有什么区别?如何选择?
两者特点对比:
特性 | Eureka | Nacos |
---|---|---|
CAP | AP | CP+AP |
健康检查 | 心跳 | TCP/HTTP/MySQL/SQL Server |
配置功能 | 无 | 有 |
负载均衡 | Ribbon | 权重/metadata/Selector |
雪崩保护 | 有 | 有 |
选择建议:
- 需要配置中心:选择 Nacos
- 只需服务发现:都可以
- 老项目:Eureka
- 新项目:推荐 Nacos
2. 网关
面试官:Spring Cloud Gateway 的工作原理是什么?
Gateway 的核心概念:
路由(Route)
- 由 ID、目标 URI、断言、过滤器组成
- 当断言为真时匹配该路由
断言(Predicate)
- 匹配 HTTP 请求中的任何内容
- 支持多种断言工厂
过滤器(Filter)
- 对请求和响应进行修改
- 分为 Global Filter 和 Gateway Filter
工作流程:
- 请求进入网关
- 匹配断言
- 经过过滤器链
- 转发到微服务
安全框架
1. Spring Security
面试官:Spring Security 的认证流程是怎样的?
核心认证流程:
认证入口
UsernamePasswordAuthenticationFilter
- 收集认证信息
认证管理器
AuthenticationManager
- 委托给
AuthenticationProvider
认证提供者
- 实现具体的认证逻辑
- 可以有多个提供者
用户详情服务
UserDetailsService
- 加载用户信息
密码编码器
PasswordEncoder
- 密码的加密和匹配
数据访问
1. Spring Data JPA
面试官:JPA 和 MyBatis 的区别是什么?
主要区别:
特性 | JPA | MyBatis |
---|---|---|
开发效率 | 高 | 中 |
SQL 优化 | 较难 | 容易 |
学习曲线 | 陡峭 | 平缓 |
灵活性 | 较低 | 高 |
使用建议:
- 简单CRUD:使用 JPA
- 复杂查询:使用 MyBatis
- 性能要求高:使用 MyBatis
性能调优
1. 性能优化
面试官:Spring Boot 应用如何进行性能优化?
优化方向:
JVM 优化
- 合理设置内存大小
- 选择适合的垃圾收集器
- 进行 JVM 参数调优
数据库优化
- 使用连接池
- SQL 语句优化
- 合理使用索引
缓存优化
- 使用多级缓存
- 合理设置缓存策略
- 防止缓存雪崩和穿透
应用优化
- 使用异步处理
- 添加熔断降级
- 进行业务拆分
最佳实践
1. 项目实战
面试官:如何设计一个高可用的微服务架构?
核心要点:
服务拆分
- 领域驱动设计
- 合理粒度
- 明确边界
容错设计
- 服务降级
- 熔断限流
- 负载均衡
监控告警
- 链路追踪
- 日志收集
- 性能监控
部署架构
- 容器化部署
- 多机房部署
- 灰度发布