第十八章(GraphQL 面试真题)

四季读书网 2 0
第十八章(GraphQL 面试真题)

面试真题

题目 1:GraphQL vs REST

GraphQL 相比 REST API 的优势

答案

  • 按需获取字段,减少网络请求
  • 单次请求获取多资源
  • 强类型 schema
  • 客户端决定返回数据
  • API 演进无需版本控制

题目 2:GraphQL 核心概念

GraphQL 的核心概念有哪些?

答案

  • Schema:类型定义
  • Query:查询
  • Mutation:变更
  • Subscription:订阅
  • Resolver:解析器

题目 3:Query 查询

GraphQL Query 如何使用?

答案

query{
  user(id:"1"){
    name
    email
    posts {
      title
}
}
}

题目 4:Mutation 变更

GraphQL Mutation 用于什么场景?

答案

  • 增删改数据
  • 类似 REST 的 POST/PUT/DELETE
  • 支持批量操作

题目 5:Resolver

Resolver 的作用是什么?

答案

  • 处理数据获取
  • 连接数据源(数据库、API)
  • 支持异步操作
  • 格式返回数据

题目 6:N+1 问题

GraphQL N+1 问题如何解决?

答案

  • DataLoader 批量加载
  • 缓存请求
  • 异步批处理
  • 预加载关联数据

题目 7:Apollo Client

Apollo Client 特点

答案

  • 状态管理
  • 缓存机制
  • 订阅支持
  • SSR 支持
  • 开发工具

题目 8:Schema 设计

GraphQL Schema 设计原则

答案

  • 业务导向
  • 嵌套合理
  • 避免循环依赖
  • 使用接口抽象
  • 命名清晰

题目 9:认证授权

GraphQL 如何处理认证授权?

答案

  • Header 传递 Token
  • Context 中验证
  • 指令控制权限
  • 字段级别控制

题目 10:分页实现

GraphQL 如何实现分页?

答案

  • 偏移分页:first/offset
  • 游标分页:after/before
  • 建议使用游标分页

题目 11:实时订阅

GraphQL Subscription 用途

答案

  • 实时更新
  • WebSocket
  • 聊天室
  • 通知推送

题目 12:缓存策略

Apollo Client 缓存机制

答案

  • 规范化缓存
  • 缓存策略配置
  • 手动缓存更新
  • 缓存续期

题目 13:错误处理

GraphQL 错误如何处理?

答案

  • errors 数组
  • 可包含自定义错误码
  • 部分成功场景
  • 错误边界

题目 14:Union vs Interface

Union 和 Interface 的区别

答案

  • Interface:抽象类型,有共同字段
  • Union:联合类型,不需要共同字段
  • 使用场景不同

题目 15:性能优化

GraphQL 性能优化手段

答案

  • 查询复杂度限制
  • 持久化查询
  • 缓存策略
  • DataLoader
  • CDN

抱歉,评论功能暂时关闭!