# 1. GraphQL 与 REST 的选型边界,字段级查询、客户端驱动与服务端资源模型 A GraphQL 服务端驱动 B REST 支持字段级查询 C 两者相同 D GraphQL 客户端驱动字段级查询,REST 服务端资源模型适合可缓存接口 ✓ 正确答案
# 2. GraphQL 的 Schema 定义(SDL),类型系统、标量、枚举、接口与联合类型 A 只有 Object B 含 Object、标量、枚举、接口、联合类型,定义 Query/Mutation/Subscription ✓ 正确答案 C 无标量 D SDL 无类型
# 3. GraphQL 的 N+1 查询问题,DataLoader 批处理与字段级解析器(resolver) A 字段解析器与批处理无关 B DataLoader 把同一字段多次解析合并为一次批量查询,消除 N+1 ✓ 正确答案 C DataLoader 逐条查询 D N+1 无需处理
# 4. Spring for GraphQL 的注解式控制器,@QueryMapping/@MutationMapping/@SchemaMapping A @SchemaMapping 只处理 Query B @QueryMapping 查询、@MutationMapping 变更、@SchemaMapping 子字段解析 ✓ 正确答案 C 注解与 schema 无关 D 三者都处理查询
# 5. GraphQL 查询的执行流程,parse/validate/execute 三阶段,字段解析器如何由执行策略逐层驱动取值 A 只有 execute B parse 解析、validate 校验、execute 用执行策略逐层驱动字段解析 ✓ 正确答案 C 字段解析一次性 D validate 在 execute 后
# 6. GraphQL 的查询成本控制,查询深度限制、复杂度分析与持久化查询(persisted query) A 深度限制、复杂度分析、持久化查询组合防止过深/恶意查询 ✓ 正确答案 B 无需成本控制 C 持久化查询最宽松 D 深度限制最精确
# 7. GraphQL 的缓存策略,HTTP 缓存为何失效、CDN/边缘缓存的替代方案 A 无需缓存方案 B 查询多变可缓存 C HTTP 缓存自然生效 D 单一 POST 多变难缓存,持久化查询 + GET 使查询可缓存并配合边缘缓存 ✓ 正确答案
# 8. GraphQL 的错误模型,errors 数组、扩展字段(extensions)与部分成功语义 A errors 数组表达字段级错误,支持部分成功,extensions 携带扩展信息 ✓ 正确答案 B extensions 与错误无关 C 无部分成功 D 整体失败
# 9. GraphQL 订阅(Subscription)与 WebSocket 传输,实时字段推送 A Subscription 经 WebSocket 传输,解析器返回 Publisher 实时推送 ✓ 正确答案 B 无需 WebSocket C 订阅不实时 D 订阅是一次性查询
# 10. GraphQL 联邦(Federation)与网关,子图(subgraph)拆分与 Java 生态支持 A 子图无法组合 B 单服务单 schema C 无需网关 D 子图拆分 + 网关聚合统一 schema,@key 声明跨实体引用 ✓ 正确答案
# 11. GraphQL 的输入类型与参数校验,服务端校验与查询变量 A input 类型定义输入,查询变量分离参数,schema 与业务校验 ✓ 正确答案 B 不校验 C 无输入类型 D 变量不可用
# 12. GraphQL 与 Spring Security,字段级授权与 DataFetcher 中的安全上下文 A 无字段级授权 B 安全上下文不可用 C 只做全局认证 D 认证 + 字段级授权,DataFetcher 中读安全上下文判断字段权限 ✓ 正确答案
# 13. GraphQL 的性能陷阱,字段解析串行化、数据获取合并与批处理(DataLoader) A 无性能问题 B 串行化最优 C 字段串行化与 N+1 是陷阱,DataLoader 批处理与并行解决 ✓ 正确答案 D DataLoader 无作用
# 14. GraphQL 的版本演进策略,字段废弃(deprecation)与 schema 演进代替版本号 A 用 @deprecated 废弃字段与 schema 增量演进代替版本号 ✓ 正确答案 B 用 /v1 /v2 版本 C 破坏性变更 D 无演进策略
# 15. Spring for GraphQL 的异常处理,@GraphQlExceptionHandler 与 ErrorType 分类、错误扩展字段如何返回客户端 A @GraphQlExceptionHandler 映射异常为 GraphQLError,ErrorType 分类,extensions 扩展 ✓ 正确答案 B 无扩展字段 C 异常直接抛 D 无 ErrorType
# 16. GraphQL 的 null 传播,子字段返回 null 时父字段非空约束如何导致整条路径失败,schema 设计如何权衡 A 非空总能保证 B 可空字段不受影响 C null 不传播 D 非空字段的子值 null 向上传播使整条路径失败,schema 需权衡非空与可空 ✓ 正确答案
# 17. GraphQL 的分页规范,Connection 的 edges/node/pageInfo 与游标分页 A offset 分页 B edges/node/pageInfo + 游标分页(first/after),稳定高效 ✓ 正确答案 C 分页无规范 D 无游标
# 19. GraphQL 的工具链,GraphiQL、graphql-java runtime wiring 与代码生成 A GraphiQL 调试、runtime wiring 绑定 DataFetcher、代码生成提类型安全 ✓ 正确答案 B wiring 无需绑定 C 只有 GraphiQL D 无代码生成
# 20. 接口与联合类型的运行时解析,typeResolver 如何根据实际对象类型选择具体类型,Java 侧如何注册 A typeResolver 根据实际对象类型选择具体类型,在 RuntimeWiring 注册 ✓ 正确答案 B 无法判断具体类型 C 无需 typeResolver D 类型固定