Go 在循环里启动 goroutine 捕获循环变量会有什么结果,Go 1.22 前后有何不同?
Go 在循环里启动 goroutine 捕获循环变量会有什么结果,Go 1.22 前后有何不同? 本文先给出可直接复述的结论,再用最小代码说明Go goroutine 循环变量 闭包 Go 1.22的工作方式、判断依据、项目边界和常见误区。
程序员面试题库第 38 页,收录第 1851–1900 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
Go 在循环里启动 goroutine 捕获循环变量会有什么结果,Go 1.22 前后有何不同? 本文先给出可直接复述的结论,再用最小代码说明Go goroutine 循环变量 闭包 Go 1.22的工作方式、判断依据、项目边界和常见误区。
Go 的 goroutine 为什么比操作系统线程轻量,调度上有什么关键设计? 本文先给出可直接复述的结论,再用最小代码说明Go goroutine 轻量 GMP 调度的工作方式、判断依据、项目边界和常见误区。
Go 的接口是隐式实现的,这带来哪些设计上的好处和风险? 本文先给出可直接复述的结论,再用最小代码说明Go interface 隐式实现 优缺点的工作方式、判断依据、项目边界和常见误区。
Go 中接口值为 nil 和接口持有 nil 指针有什么区别,为什么 == nil 判断会失效? 本文先给出可直接复述的结论,再用最小代码说明Go interface nil 陷阱 类型 值的工作方式、判断依据、项目边界和常见误区。
Go 接口变量赋值和比较的开销与限制是什么,什么时候接口不可比较? 本文先给出可直接复述的结论,再用最小代码说明Go interface 比较 动态类型 不可比较的工作方式、判断依据、项目边界和常见误区。
Go 程序 main 函数返回后,还在运行的 goroutine 会怎样,如何正确等待它们? 本文先给出可直接复述的结论,再用最小代码说明Go main 返回 goroutine 退出 WaitGroup的工作方式、判断依据、项目边界和常见误区。
Go 的 map 为什么不能并发读写,会如何失败,怎么改? 本文先给出可直接复述的结论,再用最小代码说明Go map 并发读写 panic fatal error的工作方式、判断依据、项目边界和常见误区。
Go 在 range 遍历 map 过程中增删元素是安全的吗,结果如何? 本文先给出可直接复述的结论,再用最小代码说明Go range map 遍历中删除的工作方式、判断依据、项目边界和常见误区。
Go 遍历 map 的顺序是随机的吗,需要稳定输出时怎么办? 本文先给出可直接复述的结论,再用最小代码说明Go map 遍历顺序 随机的工作方式、判断依据、项目边界和常见误区。
Go 读取 map 中不存在的 key 返回什么,如何区分「不存在」和「存的零值」? 本文先给出可直接复述的结论,再用最小代码说明Go map key 不存在 零值 comma ok的工作方式、判断依据、项目边界和常见误区。
Go 为什么结构体里含 sync.Mutex 后不能再按值拷贝,go vet 如何发现? 本文先给出可直接复述的结论,再用最小代码说明Go Mutex 拷贝 lock by value vet的工作方式、判断依据、项目边界和常见误区。
Go 的 sync.RWMutex 相比 Mutex 在什么读写比例下才值得用,有什么注意事项? 本文先给出可直接复述的结论,再用最小代码说明Go RWMutex Mutex 读多写少的工作方式、判断依据、项目边界和常见误区。
Go 的 nil 切片和空切片有什么区别,序列化和判空时各要注意什么? 本文先给出可直接复述的结论,再用最小代码说明Go nil slice 空切片 区别的工作方式、判断依据、项目边界和常见误区。
Go 的 select 在多个 case 同时就绪时怎么选择,default 分支带来什么行为变化? 本文先给出可直接复述的结论,再用最小代码说明Go select 随机 就绪 default 非阻塞的工作方式、判断依据、项目边界和常见误区。
Go 切片的 len 和 cap 分别决定什么,reslice 时各自起什么约束? 本文先给出可直接复述的结论,再用最小代码说明Go slice len cap 区别的工作方式、判断依据、项目边界和常见误区。
Go 对大切片取子切片后为什么会造成内存无法释放,如何避免? 本文先给出可直接复述的结论,再用最小代码说明Go 子切片 内存泄漏 底层数组的工作方式、判断依据、项目边界和常见误区。
Go 把切片传给函数,为什么函数内改元素生效而 append 不回传? 本文先给出可直接复述的结论,再用最小代码说明Go 切片传参 函数内修改的工作方式、判断依据、项目边界和常见误区。
Go 的 sync.Map 相比加锁的普通 map 适合什么场景,不适合什么? 本文先给出可直接复述的结论,再用最小代码说明Go sync.Map 适用场景的工作方式、判断依据、项目边界和常见误区。
Go 的 sync.Once 如何保证初始化只执行一次,函数返回错误时还能重试吗? 本文先给出可直接复述的结论,再用最小代码说明Go sync.Once 只执行一次 单例的工作方式、判断依据、项目边界和常见误区。
Go 用 make 嵌套创建二维切片后,修改一行会影响其他行吗? 本文先给出可直接复述的结论,再用最小代码说明Go 二维切片 共享 底层数组的工作方式、判断依据、项目边界和常见误区。
Go 的类型断言和 type switch 分别在什么情况下使用,panic 如何避免? 本文先给出可直接复述的结论,再用最小代码说明Go 类型断言 type switch comma ok的工作方式、判断依据、项目边界和常见误区。
Go 的 sync.WaitGroup 的 Add、Done、Wait 调用位置有什么约束,常见错误有哪些? 本文先给出可直接复述的结论,再用最小代码说明Go sync.WaitGroup Add Done Wait 用法的工作方式、判断依据、项目边界和常见误区。
Go 用 channel 实现固定数量 worker 池处理任务时,如何正确关闭和收集结果? 本文先给出可直接复述的结论,再用最小代码说明Go worker pool channel WaitGroup的工作方式、判断依据、项目边界和常见误区。
GraphQL 查询中的别名(alias)在什么场景下必须使用? 本文先给出可直接复述的结论,再用最小代码说明GraphQL alias 别名 同字段多查询的工作方式、判断依据、项目边界和常见误区。
GraphQL 如何在参数层面做输入校验,与 resolver 内手写校验如何分工? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 参数 校验 输入 validation的工作方式、判断依据、项目边界和常见误区。
GraphQL resolver 中异步错误会如何影响最终响应? 本文先给出可直接复述的结论,再用最小代码说明GraphQL resolver 异步 错误 errors data的工作方式、判断依据、项目边界和常见误区。
GraphQL 如何实现字段级权限控制(如仅本人可见邮箱)? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 字段级 权限 授权的工作方式、判断依据、项目边界和常见误区。
GraphQL 的权限校验应该放在 resolver、服务层还是数据层,如何权衡? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 权限 授权 resolver 层级的工作方式、判断依据、项目边界和常见误区。
GraphQL 请求级批处理(query batching)适合什么场景,会带来什么副作用? 本文先给出可直接复述的结论,再用最小代码说明GraphQL query batching 请求合并的工作方式、判断依据、项目边界和常见误区。
GraphQL 的缓存为什么比 REST 难做,有哪些层面的缓存手段? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 缓存 HTTP CDN 客户端归一化的工作方式、判断依据、项目边界和常见误区。
DataLoader 如何通过批处理解决 GraphQL 的 N+1 问题? 本文先给出可直接复述的结论,再用最小代码说明GraphQL DataLoader 批处理 N+1的工作方式、判断依据、项目边界和常见误区。
在 GraphQL 中使用 DataLoader 时,mutation 修改数据后如何处理缓存一致性? 本文先给出可直接复述的结论,再用最小代码说明GraphQL DataLoader mutation 缓存失效 prime clear的工作方式、判断依据、项目边界和常见误区。
DataLoader 的请求级缓存为什么必须按请求创建实例而不能全局共享? 本文先给出可直接复述的结论,再用最小代码说明GraphQL DataLoader 缓存 请求级 生命周期的工作方式、判断依据、项目边界和常见误区。
DataLoader 的批处理函数对返回结果的顺序和数量有什么硬性要求? 本文先给出可直接复述的结论,再用最小代码说明GraphQL DataLoader batch 返回顺序 key 对齐的工作方式、判断依据、项目边界和常见误区。
GraphQL 中没有显式定义的字段是如何被解析的? 本文先给出可直接复述的结论,再用最小代码说明GraphQL default resolver 默认解析的工作方式、判断依据、项目边界和常见误区。
GraphQL 如何在不破坏现有客户端的前提下废弃字段? 本文先给出可直接复述的结论,再用最小代码说明GraphQL deprecated 字段 演进的工作方式、判断依据、项目边界和常见误区。
GraphQL 内置的 @include 和 @skip 指令如何工作,适合什么场景? 本文先给出可直接复述的结论,再用最小代码说明GraphQL @include @skip 指令 条件字段的工作方式、判断依据、项目边界和常见误区。
GraphQL 中 Enum 适合建模什么,哪些情况应避免使用 Enum? 本文先给出可直接复述的结论,再用最小代码说明GraphQL enum 适用场景 演进的工作方式、判断依据、项目边界和常见误区。
GraphQL 为什么采用部分数据加 errors 数组的错误模型而不是整体失败? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 错误处理 部分数据 errors的工作方式、判断依据、项目边界和常见误区。
GraphQL 查询是如何从文档解析到逐字段执行的? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 查询 执行流程 解析 验证 执行的工作方式、判断依据、项目边界和常见误区。
GraphQL 中实现文件上传有哪些可行方案,各自有什么限制? 本文先给出可直接复述的结论,再用最小代码说明GraphQL 文件上传 multipart 方案的工作方式、判断依据、项目边界和常见误区。
GraphQL 片段(fragment)和行内片段分别解决什么复用问题? 本文先给出可直接复述的结论,再用最小代码说明GraphQL fragment 行内片段 复用的工作方式、判断依据、项目边界和常见误区。
GraphQL 全局对象标识(Global Object Identification)要求 Node 接口解决什么问题? 本文先给出可直接复述的结论,再用最小代码说明GraphQL Node 接口 全局 ID refetch的工作方式、判断依据、项目边界和常见误区。
GraphQL 通过 HTTP 提供服务时 GET 与 POST 的使用边界是什么? 本文先给出可直接复述的结论,再用最小代码说明GraphQL over HTTP GET POST 规范的工作方式、判断依据、项目边界和常见误区。
为什么 GraphQL 的输入参数必须使用 Input 类型而不能直接用 Object 类型? 本文先给出可直接复述的结论,再用最小代码说明GraphQL input type 输入类型 原因的工作方式、判断依据、项目边界和常见误区。
GraphQL 的 Interface 与 Union 类型在语义和使用场景上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明GraphQL interface union 区别的工作方式、判断依据、项目边界和常见误区。
GraphQL 的内省(Introspection)在生产环境是否应该关闭,依据是什么? 本文先给出可直接复述的结论,再用最小代码说明GraphQL introspection 生产环境 安全的工作方式、判断依据、项目边界和常见误区。
如何让 GraphQL Mutation 在网络重试场景下保持幂等? 本文先给出可直接复述的结论,再用最小代码说明GraphQL mutation 幂等 重试 clientMutationId的工作方式、判断依据、项目边界和常见误区。
设计 GraphQL Mutation 的返回 payload 时应遵循哪些实践? 本文先给出可直接复述的结论,再用最小代码说明GraphQL mutation payload 设计 实践的工作方式、判断依据、项目边界和常见误区。
GraphQL 为什么天然容易出现 N+1 查询问题,如何诊断? 本文先给出可直接复述的结论,再用最小代码说明GraphQL N+1 问题 诊断的工作方式、判断依据、项目边界和常见误区。