Spring 生态与 I/O 综合

共 61 题
#

1. @Caching 组合注解在多缓存操作中的事务边界与回滚行为

A @Caching 只能组合一个注解
B 缓存操作与事务无关
C 事务回滚后缓存自动回滚
D @Caching 组合多缓存操作,需让缓存操作与事务提交对齐,避免回滚后缓存不一致 ✓ 正确答案
#

2. @Lock 与悲观锁/乐观锁

A @Lock(PESSIMISTIC_WRITE) 加数据库悲观锁,乐观锁用 @Version 版本字段校验 ✓ 正确答案
B @Lock 只能加乐观锁
C 悲观锁无需加锁
D @Version 与乐观锁无关
#

3. CSRF Token 的 Cookie 双重提交模式与 SameSite Cookie 的协同防御

A 双重提交无需校验
B 两者互斥
C SameSite 与 CSRF 无关
D Cookie 双重提交校验 Token 一致性,SameSite 阻止跨站 Cookie 发送,叠加纵深防御 ✓ 正确答案
#

4. CSRF 防护原理(同步器令牌模式)与前后端分离/纯 API 场景下的取舍(禁用 CSRF)

A 纯 API 必须启用 CSRF
B 同步器令牌用不可读 Token 防 CSRF,纯 API 无 Cookie 会话时 CSRF 风险低可禁用 ✓ 正确答案
C CSRF 与 Cookie 无关
D 无状态 API 仍依赖 Cookie 会话
#

5. Caffeine 缓存的 maximumSize/expireAfterWrite/refreshAfterWrite 调优

A maximumSize 控内存、expireAfterWrite 控过期、refreshAfterWrite 平滑刷新,三者组合平衡 ✓ 正确答案
B refreshAfterWrite 无需 CacheLoader
C expireAfterWrite 阻止刷新
D maximumSize 影响新鲜度
#

6. RememberMe 的实现(TokenBasedRememberMeServices)

A 令牌无法防篡改
B 令牌无需签名
C 它生成含用户名、过期时间、签名的令牌存 Cookie,校验后恢复登录态 ✓ 正确答案
D 它必须持久化令牌
#

7. Token 存储(内存、Redis、数据库)的安全边界

A 存储介质无需防护
B 内存适合多实例
C Token 无需加密
D 内存单机、Redis 分布式共享需防护、数据库持久可审计,Token 需加密与过期 ✓ 正确答案
#

8. publishOn 与 subscribeOn 对线程切换的影响范围有何不同,多个 publishOn 串联时信号在哪些调度器间流转

A 每个 publishOn 切换其下游 operator 到指定调度器,链被切成多个执行段 ✓ 正确答案
B 只有第一个 publishOn 生效
C subscribeOn 影响下游数据流
D publishOn 影响订阅
#

9. 两级缓存(Local + Remote)的实现策略

A 本地缓存存全量数据
B 本地缓存无需同步
C 两级缓存无一致性开销
D 本地缓存提供快读、远程缓存分布式共享,本地失效需广播同步避免不一致 ✓ 正确答案
#

10. 伪异步 I/O(线程池)模型的问题

A 线程阻塞不影响并发
B 伪异步能解决所有并发问题
C 线程池无上限
D 有限线程池 + 阻塞 IO,高并发时线程被占满导致新连接无响应 ✓ 正确答案
#

11. SelectionKey 被取消后何时才从各集合移除,处理已取消键时为何可能看到 CancelledKeyException

A 已取消键可正常操作
B 取消后立即移除
C 键取消后延迟到 select 时移除,处理已取消键需 isValid 检查避免 CancelledKeyException ✓ 正确答案
D CancelledKeyException 无法避免
#

12. 缓存穿透/击穿/雪崩的治理

A 击穿用布隆过滤
B 三者用同一方案
C 穿透用空值/布隆、击穿用互斥锁、雪崩用 TTL 随机 + 多级 + 降级,分别治理 ✓ 正确答案
D 雪崩用互斥锁
#

13. @AuthenticationPrincipal 的应用

A 它需要手动解析认证
B 它注入的是未认证主体
C 它只能注入字符串
D 它注入当前已认证用户到方法参数,避免手动从 SecurityContext 获取 ✓ 正确答案
#

14. @Caching 与复合注解

A @Caching 只能组合一个注解
B @Caching 组合多个缓存注解执行多缓存操作,复合注解是自定义组合提升复用 ✓ 正确答案
C 复合注解与 @Caching 无关
D 无法自定义组合注解
#

15. @EntityGraph 与 N+1 查询问题

A 它与 N+1 无关
B 它只能加载一层关联
C 通过 attributePaths 声明关联 eager 加载,避免懒加载 N+1 ✓ 正确答案
D 它改变查询语义
#

16. @Modifying 与批量更新

A 批量更新走实体管理
B @Modifying + @Query 执行批量 DML,需 clearAutomatically/flushAutomatically 保证一致 ✓ 正确答案
C 无需配置 clearAutomatically
D 批量更新返回实体
#

17. @PreAuthorize/@PostAuthorize 与方法级安全

A 两者都在执行前校验
B @PreAuthorize 进入前鉴权,@PostAuthorize 返回后基于返回值授权 ✓ 正确答案
C @PostAuthorize 无法访问返回值
D 方法级安全无需开启
#

18. @Query 与 JPQL 的使用

A @Query 只能写原生 SQL
B JPQL 面向数据库表
C nativeQuery 跨数据库
D @Query 可写 JPQL(面向实体跨库)或 nativeQuery(原生 SQL),参数用 :param 绑定 ✓ 正确答案
#

19. @QueryHints 与 Hibernate Hint 传递

A 无法控制查询行为
B 它只能加注释
C 与 Hibernate 无关
D 它传递 QueryHint 给 Hibernate 控制 fetch size、超时等查询优化 ✓ 正确答案
#

20. AccessDecisionManager 与投票者

A AccessDecisionManager 汇总投票者投票,按 Affirmative/Consensus/Unanimous 策略决策 ✓ 正确答案
B 投票者单独决策
C 无决策策略
D 投票者与授权无关
#

21. AccessDeniedHandler 在 RBAC/ABAC 权限模型中的自定义响应(避免泄露权限策略细节)

A 与权限模型无关
B 应返回具体缺失权限
C 自定义它返回统一错误响应,避免泄露具体权限策略细节 ✓ 正确答案
D 响应无需安全处理
#

22. Aggregator/Splitter 的边界

A 两者都只拆分
B 两者都只聚合
C Splitter 一对多拆分,Aggregator 多对一聚合,配合关联与释放策略 ✓ 正确答案
D 聚合无需关联策略
#

23. AuthenticationManager 与 ProviderManager 的委派

A 只有一个 Provider
B ProviderManager 自己完成认证
C ProviderManager 委派给多个 AuthenticationProvider 逐个尝试认证,实现多认证方式 ✓ 正确答案
D 委派与认证无关
#

24. Bridge 与路由(Router)的工程应用

A 与工程无关
B 两者都只做分发
C 两者都解耦抽象
D Bridge 解耦抽象与实现,Router 按规则分发请求到不同目标 ✓ 正确答案
#

25. CompletionHandler 的回调语义

A 异步 IO 完成后回调 completed(成功)或 failed(失败),在完成线程执行 ✓ 正确答案
B 回调只在发起线程执行
C 无失败回调
D 回调与结果无关
#

26. FileStore 与磁盘空间查询

A 无法查询空间
B 它只表示文件
C FileStore 表示文件系统存储,getTotalSpace/getUsableSpace 查询磁盘空间 ✓ 正确答案
D 与磁盘监控无关
#

27. FileVisitor 的递归遍历

A 它只能遍历一层
B walkFileTree + FileVisitor 回调递归遍历目录树,处理文件/目录与失败 ✓ 正确答案
C 无失败处理
D 与目录操作无关
#

28. Java ZipFileSystem 与 jar/zip 操作

A 它把 zip/jar 作为文件系统,用标准 Files API 操作内部文件 ✓ 正确答案
B 它只能读不能写
C 需要第三方库
D 无法遍历 zip
#

29. MessageHandler/MessageProducer 的自定义

A 两者都只产生消息
B MessageHandler 处理消息,MessageProducer 产生消息,自定义可接入外部系统 ✓ 正确答案
C 两者都只处理消息
D 无法自定义
#

30. OP_CONNECT 就绪后为什么必须调用 finishConnect,连接失败时应清理哪些键和附件资源

A OP_CONNECT 就绪后需 finishConnect 确认连接,失败需取消键、关通道、释放附件 ✓ 正确答案
B 无需 finishConnect
C 连接失败无需清理
D 附件无需释放
#

31. OpenID Connect(OIDC)的 id_token 与 nonce

A id_token 携带身份声明,nonce 校验一次性随机值防重放 ✓ 正确答案
B nonce 用于授权
C id_token 不携带身份
D nonce 与重放无关
#

32. Pageable 与 Page<T> 的分页实现

A 深分页无性能问题
B Page 不含总数
C Pageable 只能自定义构造
D Pageable 传分页参数,Page 返回结果含总数,查询执行 limit/offset + count ✓ 正确答案
#

33. Refresh Token 的轮换(Rotation)与重用检测

A 轮换签发新令牌使旧令牌失效,重用检测发现复用则撤销整个令牌族 ✓ 正确答案
B 轮换不更新令牌
C 重用检测无需存储
D 两者无安全价值
#

34. SelectionKey 的兴趣集(interest set)与就绪集(ready set)的位运算操作细节

A 位运算只用于连接
B 两者不能用位运算
C interestOps 表示就绪
D interestOps 用位组合关注事件,readyOps 用位检测就绪事件,| 组合 & 检测 ✓ 正确答案
#

35. SelectionKey 的四种事件(OP_READ/OP_WRITE/OP_CONNECT/OP_ACCEPT)

A OP_WRITE 很少就绪
B OP_ACCEPT 用于客户端
C OP_ACCEPT 接收连接、OP_CONNECT 连接完成、OP_READ 可读、OP_WRITE 可写 ✓ 正确答案
D 只有两种事件
#

36. SelectionKey.attach 与 attachment

A 附件只能存 Buffer
B attach 把连接状态绑定到 SelectionKey,attachment 获取,事件就绪时快速关联 ✓ 正确答案
C 附件无需清理
D attach 影响事件
#

37. SelectionKey.interestOps 与监听事件变更

A interestOps 动态切换监听事件(如读写切换),OP_WRITE 需按需注册 ✓ 正确答案
B interestOps 只能读
C 事件监听不可变
D OP_WRITE 常开无问题
#

38. SessionManagementFilter 的会话固定防护

A 登录后更换 Session ID(changeSessionId)使攻击者固定的会话失效,防会话固定 ✓ 正确答案
B 保持 Session ID 不变
C 会话固定无需防护
D 攻击者无法固定会话
#

39. Specification 与动态查询构造

A 它只能静态查询
B 它基于 Criteria API 动态组合查询条件,配合 JpaSpecificationExecutor 实现动态筛选 ✓ 正确答案
C 无法组合条件
D 与 Repository 无关
#

40. Spring Authorization Server 的多租户支持

A 通过客户端注册、用户存储与授权配置按租户隔离,用租户上下文路由 ✓ 正确答案
B 所有租户共享一切
C 无法多租户
D 租户隔离与配置无关
#

41. StandardOpenOption 的语义与组合

A 只能单独使用
B 它定义文件打开选项,组合如 WRITE+CREATE+TRUNCATE 控制创建覆盖追加 ✓ 正确答案
C 选项与打开行为无关
D 无覆盖选项
#

42. Token Introspection 与 RFC 7662

A 资源服务器通过自省端点远程校验令牌有效性、作用域、过期,适合不透明令牌 ✓ 正确答案
B 自省是本地校验
C 无协议规范
D 自省与作用域无关
#

43. Token 撤销(Revocation)与登出端点

A 登出与撤销无关
B 令牌无法撤销
C RFC 7009 撤销端点使令牌失效,OIDC 登出端点结束会话并触发撤销 ✓ 正确答案
D 撤销无需存储状态
#

44. UserDetailsService 与 UserDetailsManager 的契约

A 两者都只读
B UserDetailsService 加载用户,UserDetailsManager 增加创建/更新/删除用户管理能力 ✓ 正确答案
C 两者都管理用户
D 契约完全相同
#

45. WatchService 与目录监控

A 它只监听文件内容
B 它自动递归子目录
C 事件不会丢失
D 它监听目录的创建/修改/删除事件,需递归注册子目录并 reset 继续监听 ✓ 正确答案
#

46. WebClient 相比 RestTemplate 的非阻塞与流式能力体现在哪里,RestClient 又填补了怎样的同步场景空缺

A 三者等价
B 三者都是非阻塞
C RestClient 是响应式
D WebClient 非阻塞流式,RestTemplate 阻塞,RestClient 提供现代同步 API 填补空缺 ✓ 正确答案
#

47. scope 与 authority 的映射

A 两者无关
B scope 映射为 SCOPE_xxx 的 authority,衔接 OAuth 授权与 Spring Security 授权 ✓ 正确答案
C scope 直接是角色
D 无法映射
#

48. selectedKeys() 与迭代器的处理(必须显式移除)

A 残留键无影响
B 无需 remove
C 处理完每个就绪键必须调用迭代器 remove,否则残留导致重复处理与 CPU 空转 ✓ 正确答案
D remove 会导致异常
#

49. 函数式端点(RouterFunction/HandlerFunction)与注解式控制器在路由匹配、可组合性与测试方式上的取舍

A 注解式更灵活
B 两者等价
C 函数式不可组合
D 注解式声明式直观,函数式 RouterFunction 可组合更灵活,按路由复杂度选择 ✓ 正确答案
#

50. 原生查询(nativeQuery = true)的取舍

A 原生查询可移植
B nativeQuery 性能与数据库特性优先但不可移植,JPQL 可移植类型安全,按需取舍 ✓ 正确答案
C JPQL 性能更好
D 两者完全等价
#

51. 同步/异步、阻塞/非阻塞的语义区分

A 阻塞即同步
B 两者同一维度
C 异步即非阻塞
D 同步/异步看是否等待结果,阻塞/非阻塞看是否挂起线程,两个正交维度组合四种语义 ✓ 正确答案
#

52. 客户端凭证模式(Client Credentials)的应用

A 客户端用 client_id+secret 换取令牌,无用户参与,适合服务间通信 ✓ 正确答案
B 需要用户授权
C 只适合用户登录
D 无需 client_secret
#

53. 方法名查询(findByXxx)的命名规则

A 方法名随意命名
B findBy 前缀 + 属性 + 关键字(And/Or/Between 等)解析为查询,属性需与实体对应 ✓ 正确答案
C 关键字与查询无关
D 无需属性对应
#

54. 远端半关闭连接时 read 返回负一,但本地仍可能写入,协议层应怎样定义半关闭策略

A read -1 表示连接已完全关闭
B read 返回 -1 表示远端不再发送但本地仍可写,协议层需定义 EOF 后的响应与关闭策略 ✓ 正确答案
C 半关闭后不能写
D 无需定义策略
#

55. 适配器(Adapter)模式与外部系统集成

A Adapter 把不兼容外部接口适配为统一接口,屏蔽差异、解耦集成 ✓ 正确答案
B 适配器只用于测试
C 外部系统无需适配
D 适配器与集成无关
#

56. 遍历 selectedKeys 后忘记调用迭代器 remove,会导致哪些重复处理与 CPU 占用问题

A 残留键导致重复处理与 CPU 空转,必须处理完每个键后 remove ✓ 正确答案
B 残留键无影响
C 只影响一次处理
D CPU 占用不变
#

57. 非阻塞 accept 应循环到返回 null,连接洪峰下又如何设置每轮接收上限保证公平性

A 上限降低公平性
B 一直循环 accept 无问题
C 无需上限
D accept 循环到 null 处理完连接,但需设每轮上限防连接洪峰饿死其他事件 ✓ 正确答案
#

58. JDK 25 Scoped Values 与 I/O 线程切换

A Scoped Values 与 ThreadLocal 相同
B Scoped Values 在结构化作用域内传播不可变上下文,支持 I/O 线程切换,比 ThreadLocal 更安全 ✓ 正确答案
C I/O 切换丢失上下文
D Scoped Values 可变
#

59. JDK 25 中 HttpClient(Java 11+)对 HTTP/2 与 WebSocket 的原生支持与连接复用

A 无连接复用
B 只支持 HTTP/1.1
C HttpClient 原生支持 HTTP/2 与 WebSocket,连接池复用连接,支持同步/异步 ✓ 正确答案
D 不支持 WebSocket
#

60. JDK 25 虚拟线程下 I/O 模型变化

A 必须用异步 NIO
B 虚拟线程不改变 I/O
C 阻塞 I/O 仍占平台线程
D 虚拟线程让阻塞 I/O 挂起让出载体线程,同步阻塞模型即可高并发,无需异步 NIO ✓ 正确答案
#

61. Pageable/Page 分页查询在大数据量下的 Slice 替代与性能取舍

A Page 更轻量
B Slice 也查总数
C Page 带 count 查询开销大,Slice 无总数更轻量,大数据量用 Slice 或游标分页 ✓ 正确答案
D 分页无性能问题