# 1. @PreAuthorize/@PostAuthorize 方法级安全(Method Security)的 SpEL 表达式与 AOP 实现 A @PreAuthorize 执行前校验、@PostAuthorize 执行后基于返回值校验,通过 AOP 的 MethodSecurityInterceptor 实现 ✓ 正确答案 B 两者都在方法执行后校验 C 方法级安全与 AOP 无关 D 只能使用 hasRole,不能使用自定义规则
# 2. JWT(Access Token)的生成与校验 A JWT 无需签名校验 B JWT 由 Header/Payload/Signature 组成,生成用密钥签名,校验用密钥或公钥验签并检查声明 ✓ 正确答案 C JWT 可以服务端主动撤销 D JWT 只包含 Header 一段
# 3. MethodSecurityInterceptor 与 AOP 的协作 A 它不能拦截方法调用 B 它只做 URL 级授权 C 它与 AOP 无关 D MethodSecurityInterceptor 作为 AOP 环绕通知拦截方法,用 AuthorizationManager 评估授权规则 ✓ 正确答案
# 4. SecurityContextHolder 与 ThreadLocal 的策略 A ThreadLocal 自动在异步线程间传播 B 默认 ThreadLocal 策略,线程独立持有安全上下文,异步需用 DelegatingSecurityContextExecutor 等传播 ✓ 正确答案 C 安全上下文与线程无关 D 无法设置传播策略
# 5. Spring Data JPA 在 Spring Boot 3.5+ 对 Hibernate 7 与 Jakarta Persistence 3.2(JPA 3.2)的兼容性要点 A 基于 Hibernate 7 与 JPA 3.2,需注意 jakarta 命名空间、API 迁移与 hibernate 配置调整 ✓ 正确答案 B 仍使用 javax.persistence 命名空间 C Hibernate 7 与旧版完全兼容 D JPA 3.2 无新特性
# 6. Spring Data Redis 在 Spring Boot 3.5+ 中 Lettuce/Jedis 客户端的默认切换 A 客户端与 classpath 无关 B 默认是 Jedis C 无法切换客户端 D 默认 Lettuce,切换 Jedis 需排除 Lettuce 依赖并引入 Jedis,自动配置按 classpath 选择 ✓ 正确答案
# 7. Spring Data Redis 的 RedisTemplate/StringRedisTemplate A StringRedisTemplate 支持任意对象 B 两者序列化完全相同 C RedisTemplate 默认 JDK 序列化支持对象,StringRedisTemplate 用字符串序列化,序列化不一致会导致数据错乱 ✓ 正确答案 D 序列化策略无关紧要
# 8. Spring Data 多数据源(@EnableJpaRepositories 多配置)在 Spring Boot 3.5+ 的配置细节 A 所有数据源共享一个 EntityManagerFactory B 每个数据源需独立 DataSource/EntityManagerFactory/TransactionManager,并通过 @EnableJpaRepositories 指定 Repository 归属 ✓ 正确答案 C 多数据源无需配置事务管理器 D Repository 包随意扫描,自动匹配
# 9. Spring Security 7.0(Spring Boot 4.x) A 移除废弃 API,全面采用 Lambda DSL 与 SecurityFilterChain,基于 Spring Framework 7 与 Jakarta EE 11 ✓ 正确答案 B 仍必须使用 WebSecurityConfigurerAdapter C 继续使用 antMatchers D 无 API 变化
# 10. Spring Security OAuth2 Resource Server 的 JWT 校验 A 校验只检查过期时间 B 资源服务器负责签发 JWT C JWT 无需验签 D 通过 JwtDecoder 用密钥/公钥验签并检查声明,校验通过后建立认证上下文 ✓ 正确答案
# 11. Spring Data JPA 的 N+1 查询问题与解决(fetch join、@EntityGraph、批量抓取 batch_fetch_size) A 只能靠手动循环 B N+1 无法解决 C 懒加载不会产生 N+1 D fetch join、@EntityGraph、batch_fetch_size 分别从一次加载、声明实体图、批量抓取角度消除 N+1 ✓ 正确答案
# 12. OAuth 2.0 与 Passkey 的共存策略 A Passkey 是授权框架 B 二者互斥,只能选一个 C Passkey 用于认证身份,OAuth 2.0 用于授权发放令牌,二者分层协作 ✓ 正确答案 D OAuth 管认证,Passkey 管授权
# 13. @Transactional 在 Repository 方法的默认语义 A 所有方法默认读写事务 B Repository 方法无事务 C 查询方法默认只读事务,修改方法默认读写事务,跨方法事务应在 Service 层组织 ✓ 正确答案 D 事务边界只能在 Repository 定义
# 14. FilterInvocationSecurityMetadataSource 的动态 URL 权限 A 它负责令牌签发 B 它只能静态配置权限 C 它提供 URL 的授权属性,可自定义从数据库动态加载 URL-权限映射 ✓ 正确答案 D 它只负责登录认证
# 15. JpaRepository 的方法命名派生查询(findByXxxAndYxx)与 @Query 的优先级 A 两者冲突时随机 B 方法名派生查询优先于 @Query C 同时存在时 @Query 优先,方法名不再解析 ✓ 正确答案 D @Query 只能用于原生 SQL
# 16. OAuth 2.0 的 FAPI(Financial-grade API) A FAPI 允许明文令牌 B FAPI 与标准 OAuth 2.0 相同,无额外要求 C FAPI 是金融级 OAuth 2.0 扩展,强制 PKCE、非对称签名、sender-constrained token、JARM 等高安全要求 ✓ 正确答案 D FAPI 不使用 PKCE
# 17. OAuth 2.0 的授权码模式(Authorization Code) A 授权码模式不需要客户端密钥 B 授权码直接就是访问令牌 C 授权码经用户授权后由客户端用 client_secret 在令牌端点换取令牌,令牌不暴露给浏览器 ✓ 正确答案 D 授权码会直接返回给浏览器
# 18. OAuth 2.0 的角色(Resource Owner/Client/Authorization Server/Resource Server) A Resource Owner 授权、Client 请求授权、Authorization Server 发令牌、Resource Server 校验令牌 ✓ 正确答案 B Client 负责认证用户 C Resource Server 负责发放令牌 D 四个角色必须分属不同服务器
# 19. OAuth 2.1 的简化与 PKCE 的强制 A OAuth 2.1 移除隐式与密码模式,强制授权码 + PKCE,提升安全默认 ✓ 正确答案 B OAuth 2.1 保留所有旧模式 C PKCE 在 2.1 中仍可选 D OAuth 2.1 取消了授权码模式
# 20. SecurityFilterChain 与 WebSecurityConfigurerAdapter 的演进 A 两者都必须继承使用 B WebSecurityConfigurerAdapter 已废弃,替代为 SecurityFilterChain + Lambda DSL 配置模型 ✓ 正确答案 C WebSecurityConfigurerAdapter 仍是主流 D SecurityFilterChain 无法配置多链
# 21. SecurityFilterChain 在 Spring Security 7 中的多链配置与 HttpSecurity 组合 A 只能有一个安全链 B 多个 SecurityFilterChain 按 requestMatchers 匹配,按声明顺序第一个匹配者生效 ✓ 正确答案 C 多链无法应用不同安全策略 D 匹配顺序无关紧要
# 22. Spring Data Elasticsearch 的工程应用 A 它不支持分页 B 它只能做简单查询 C 它替代 MySQL 存储全部数据 D 通过 ElasticsearchRepository 提供搜索/聚合,@Document 映射索引,常与 MySQL 配合同步数据 ✓ 正确答案
# 23. Spring Data JPA 与 Kotlin/Scala 的边界 A Scala 与 JPA 兼容性最好 B JPA 与所有语言完全兼容 C Kotlin data class 原生支持 JPA 懒加载 D Kotlin data class 与 JPA 兼容较好但需处理 final/代理问题,Scala 与 JPA 兼容较差 ✓ 正确答案
# 24. Spring Data JPA 的 Auditing(@CreatedDate/@LastModifiedDate) A 审计字段需手动设置 B @EnableJpaAuditing + 实体审计注解 + AuditorAware 自动填充创建/修改时间与人员 ✓ 正确答案 C Auditing 无需开启 D @CreatedDate 由数据库时间戳代替
# 25. Spring Data JPA 的 Optional 返回值约定 A Optional 适用于多结果查询 B Optional 返回 null 表示无结果 C findById 等单结果查询返回 Optional,无结果返回 Optional.empty(),强制空值处理 ✓ 正确答案 D 查询方法不能返回 Optional
# 26. Spring Data JPA 的 Repository 抽象(JpaRepository/PagingAndSortingRepository) A JpaRepository 继承 PagingAndSortingRepository 与 CrudRepository,提供 CRUD、分页排序及 JPA 特有能力 ✓ 正确答案 B JpaRepository 只提供分页 C Repository 是功能最全的接口 D 各接口能力相同
# 27. Spring Data MongoDB 的 Repository 模式 A Repository 不支持查询方法 B 只能使用 MongoTemplate C MongoRepository 支持方法名派生查询、@Query 与分页,复杂聚合用 MongoTemplate ✓ 正确答案 D 文档映射与 @Document 无关
# 28. Spring Data MongoDB 的聚合管道(Aggregation Pipeline) A 聚合管道不支持分组 B 聚合只能做单条查询 C 聚合管道由 $match/$group/$project 等阶段组成,用 Aggregation 构建并由 MongoTemplate 执行 ✓ 正确答案 D 聚合与 Repository 无关
# 29. Spring Data R2DBC(反应式)的边界 A 它返回同步对象 B 它支持 @Transactional 阻塞事务 C 提供 ReactiveCrudRepository 返回 Mono/Flux,事务需用 TransactionalOperator,适合 WebFlux 全链路 ✓ 正确答案 D 它适合阻塞栈混用
# 30. Spring Data REST 的过度暴露风险 A 自动暴露无需任何防护 B 自动暴露 Repository 可能泄露数据或允许非法操作,需用 exported=false 收敛并加权限控制 ✓ 正确答案 C 它只暴露 GET 接口 D 无法控制暴露范围
# 31. Spring Data 与 Spring Modulith 的事件协作 A 两者互不相关 B Spring Data 的 @DomainEvents 发布实体事件,Spring Modulith 负责模块间事件编排与投递 ✓ 正确答案 C 事件只能手动发布 D 模块间事件无法跨模块投递
# 32. Spring Data 模块的版本兼容矩阵 A Spring Boot 通过 BOM 统一锁定各 Spring Data 模块版本,保证兼容 ✓ 正确答案 B 各模块版本随意指定 C 版本与 Spring Boot 无关 D 只需管理 JPA 模块版本
# 33. Spring Data 自定义 Repository 片段 A 自定义接口 + Impl 实现类,Repository 继承后由 Spring 组合成代理 ✓ 正确答案 B 自定义方法无法加入 Repository C 实现类命名无约定 D 自定义片段会覆盖默认实现
# 34. Spring Security 6.x 的 Lambda DSL 配置 A Lambda DSL 无法配置授权 B 必须使用 and() 连接 C Lambda DSL 只能在 5.x 使用 D Spring Security 6 用 Lambda 表达式链式配置 HttpSecurity,替代旧的 and() 方法 ✓ 正确答案
# 35. Spring Security 与 CORS 的协作配置顺序,CorsFilter 应在 SecurityFilterChain 之前处理预检请求 A CORS 与 Security 无法共存 B 预检请求也需认证,应由 Security 先处理 C 顺序无关紧要 D CorsFilter 应在 SecurityFilterChain 之前处理 OPTIONS 预检,避免无认证的预检被拒绝 ✓ 正确答案
# 36. Spring Security 的 ACL 模块 A ACL 是对象级授权,针对特定领域对象存储并查询权限,实现细粒度控制 ✓ 正确答案 B ACL 只做 URL 级授权 C ACL 与具体对象无关 D ACL 无需存储权限
# 37. Spring Data 分页(Pageable/Sort)的实现与深分页(大 offset)的性能问题与优化 A offset 越大性能越好 B 大 offset 需扫描丢弃前 N 行性能差,keyset/游标分页基于索引定位可避免 ✓ 正确答案 C 深分页无需优化 D 游标分页比 offset 分页更慢
# 38. Spring Data JPA 的乐观锁(@Version)与悲观锁(@Lock)的使用边界与冲突处理 A 悲观锁不阻塞 B 乐观锁加数据库锁 C @Version 乐观锁版本冲突时抛异常,@Lock 悲观锁查询加数据库锁,按冲突概率与一致性选择 ✓ 正确答案 D 两者等价
# 39. Spring Security 7 对 OpenID Connect(OIDC)的支持与登录流程 A OIDC 在 OAuth 2.0 上加身份层,oauth2Login 用授权码流程校验 id_token 建立身份认证 ✓ 正确答案 B OIDC 与身份无关 C OIDC 不提供 id_token D Spring Security 7 不支持 OIDC
# 40. Spring Security 的过滤器链(FilterChain) A 只有一个过滤器 B 过滤器顺序无关 C SecurityFilterChain 由多个过滤器按顺序执行,前面认证、后面授权、异常由 ExceptionTranslationFilter 转换 ✓ 正确答案 D 过滤器与认证无关
# 41. UserDetailsService 与 AuthenticationProvider 在自定义认证中的协作边界 A UserDetailsService 负责加载用户,AuthenticationProvider 负责认证逻辑,DaoAuthenticationProvider 结合二者 ✓ 正确答案 B 两者都负责加载用户 C AuthenticationProvider 只加载用户 D 两者互不相关
# 42. 异常处理入口(AuthenticationEntryPoint/AccessDeniedHandler)的未认证与无权限区分 A 两者都处理登录 B 两者都返回 401 C 两者都返回 403 D AuthenticationEntryPoint 处理未认证返回 401,AccessDeniedHandler 处理已认证无权限返回 403 ✓ 正确答案
# 43. Spring Data R2DBC(响应式数据库)在 JDK 25 虚拟线程下的应用取舍 A 虚拟线程使 R2DBC 完全无用 B 虚拟线程让阻塞 JDBC 变简单,但全链路反应式/流式场景仍用 R2DBC 保持非阻塞 ✓ 正确答案 C R2DBC 只适合阻塞栈 D 虚拟线程下必须用 R2DBC
# 44. Spring Data JPA 批量更新/删除(@Modifying 与 @Query)为何需要 clearAutomatically/flushAutomatically 配置 A 批量操作无需配置 B clearAutomatically 执行后清空持久化上下文,flushAutomatically 执行前自动 flush,保证批量操作一致 ✓ 正确答案 C 两者都无用 D 只配置一个即可