前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库Go · 并发编程面试题
面试知识索引 · 分类、标签与搜索

Go · 并发编程面试题,35 道完整答案

Go · 并发编程面试题第 1 页,显示第 1–35 题,共找到 35 道完整解析,可继续按分类、标签与关键词缩小范围。

35筛选结果
52技术分类
178检索标签
1索引分页
按分类建立知识面,再用标签和搜索定位问题

每页只渲染 50 道题。分类与标签分页可抓取,自由搜索结果不会制造无限 SEO 页面。

快速定位

分类、标签与关键词搜索

清除全部筛选
题库检索
技术分类52 个
全部分类5000Go35AI Agent511浏览器301JavaScript285React281AI 开发262CSS240Node.js217TypeScript206Vue180前端工程化138
查看全部 52 个分类
React Native135操作系统135数据库134Docker95计算机网络94API 设计90Kubernetes90HTML89Redis89全栈开发88分布式系统88系统设计86HTTP85Next.js60Angular58Linux53Nuxt51PostgreSQL46可观测性46设计模式46小程序45身份与权限45无障碍44MongoDB43PWA43Web 安全43Git42前端测试42前端性能41WebAssembly40测试40AI 工程37SvelteKit37前端数据管理30React Router29AI 全栈28Svelte27算法12Java10数据结构5前端手写题3
Go 标签5 个
全部标签并发编程35语言与并发35HTTP1性能优化1表单1
当前页01 / 1

正在显示第 1–35 题

Go35
第 1 页

本页面试问题

按稳定语义路径排序

  1. 0001
    Go语言与并发

    Go 的 sync/atomic 操作和互斥锁在保护简单计数器时怎么选,原子操作能保证什么?

    围绕“Go 的 sync/atomic 操作和互斥锁在保护简单计数器时怎么选,原子操作能保证什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明单个数值的增减读用 atomic 更轻量、涉及多个变量的一致性必须加锁。

    核心关键词Go atomic 原子操作 mutex 选择
    #语言与并发#并发编程
  2. 0002
    Go语言与并发

    Go 的带缓冲 channel 缓冲满了和空了分别会怎样,缓冲大小如何影响并发行为?

    围绕“Go 的带缓冲 channel 缓冲满了和空了分别会怎样,缓冲大小如何影响并发行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明满则发送阻塞、空则接收阻塞、缓冲量决定解耦程度但不改变最终同步语义。

    核心关键词Go 缓冲 channel 满 空 阻塞
    #语言与并发#并发编程
  3. 0003
    Go语言与并发

    Go 中函数参数把 channel 声明为只读或只写有什么作用?

    围绕“Go 中函数参数把 channel 声明为只读或只写有什么作用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明方向性 channel 类型在编译期限制误用、表达生产者消费者契约。

    核心关键词Go channel 方向 只读 只写 chan<-
    #语言与并发#并发编程
  4. 0004
    Go语言与并发

    Go 中关闭 channel 的正确姿势是什么,哪些操作会 panic?

    围绕“Go 中关闭 channel 的正确姿势是什么,哪些操作会 panic”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖明确向已关闭 channel 发送或重复关闭会 panic、接收方用 v, ok 判关闭、应由发送方关闭。

    核心关键词Go close channel panic 向已关闭发送
    #语言与并发#并发编程
  5. 0005
    Go语言与并发

    Go 的 context.WithCancel 和 WithTimeout 的取消信号如何在调用链中传播?

    围绕“Go 的 context.WithCancel 和 WithTimeout 的取消信号如何在调用链中传播”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父 context 取消级联到所有子 context、子监听 Done 退出、必须调用 cancel 释放资源。

    核心关键词Go context WithCancel WithTimeout 取消传播
    #语言与并发#并发编程
  6. 0006
    Go语言与并发

    为什么 Go 官方建议不要把 context 存进结构体字段,而要做函数第一个参数?

    围绕“为什么 Go 官方建议不要把 context 存进结构体字段,而要做函数第一个参数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 context 生命周期跟随单次请求而非对象、存字段会造成取消语义混乱,net/http Handler 等例外从 Reque。

    核心关键词Go context 结构体字段 第一个参数
    #语言与并发#HTTP#并发编程
  7. 0007
    Go语言与并发

    Go 中用 defer 关闭文件、连接等资源时,多个 defer 的执行顺序和错误处理要注意什么?

    围绕“Go 中用 defer 关闭文件、连接等资源时,多个 defer 的执行顺序和错误处理要注意什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 defer 后进先出执行、关闭错误不应被静默吞掉可通过命名返回值记录。

    核心关键词Go defer 关闭资源 顺序 错误
    #语言与并发#并发编程
  8. 0008
    Go语言与并发

    Go 的 defer 参数何时求值,defer 在循环里累积会有什么问题?

    围绕“Go 的 defer 参数何时求值,defer 在循环里累积会有什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 defer 注册时即求值参数、循环中延迟到函数返回才执行导致资源堆积。

    核心关键词Go defer 参数求值 循环 资源释放
    #语言与并发#并发编程
  9. 0009
    Go语言与并发

    Go 的空接口 interface{}(any)能存任何值,滥用它有什么代价?

    围绕“Go 的空接口 interface{}(any)能存任何值,滥用它有什么代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断 any 牺牲编译期类型检查、需要运行时断言,适合打印等通用场景但不适合业务 API。

    核心关键词Go any 空接口 滥用 类型安全
    #语言与并发#并发编程
  10. 0010
    Go语言与并发

    Go 中什么时候返回 error、什么时候 panic,recover 应该用在哪里?

    围绕“Go 中什么时候返回 error、什么时候 panic,recover 应该用在哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕划定可预期失败走 error、不可恢复的程序错误才 panic、recover 限于 goroutine 边界兜底。

    核心关键词Go error panic recover 区别
    #语言与并发#并发编程
  11. 0011
    Go语言与并发

    Go 的 fmt.Errorf %w 包装错误和 errors.Unwrap、Is、As 如何配合工作?

    围绕“Go 的 fmt.Errorf %w 包装错误和 errors.Unwrap、Is、As 如何配合工作”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清包装链上 Is 按值比较、As 按类型提取的区别与用法。

    核心关键词Go error wrap %w errors.Is errors.As
    #语言与并发#并发编程
  12. 0012
    Go语言与并发

    Go 中 runtime.Goexit 和 return 结束 goroutine 有什么区别?

    围绕“Go 中 runtime.Goexit 和 return 结束 goroutine 有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Goexit 终止当前 goroutine 但仍执行已注册 defer、不影响其他 goroutine,主 goroutine。

    核心关键词Go runtime.Goexit return defer
    #语言与并发#并发编程
  13. 0013
    Go语言与并发

    Go 在循环里启动 goroutine 捕获循环变量会有什么结果,Go 1.22 前后有何不同?

    围绕“Go 在循环里启动 goroutine 捕获循环变量会有什么结果,Go 1.22 前后有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 1.22 之前共享同一变量导致全是最终值、1.22 起每次迭代新建变量,以及显式传参写法。

    核心关键词Go goroutine 循环变量 闭包 Go 1.22
    #语言与并发#并发编程
  14. 0014
    Go语言与并发

    Go 的 goroutine 为什么比操作系统线程轻量,调度上有什么关键设计?

    围绕“Go 的 goroutine 为什么比操作系统线程轻量,调度上有什么关键设计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答小初始栈可增长、M:N 调度与协作加抢占。

    核心关键词Go goroutine 轻量 GMP 调度
    #语言与并发#并发编程
  15. 0015
    Go语言与并发

    Go 的接口是隐式实现的,这带来哪些设计上的好处和风险?

    围绕“Go 的接口是隐式实现的,这带来哪些设计上的好处和风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断隐式满足带来解耦但也可能意外实现错误接口,提编译期断言 var _ Iface = (*T)(nil)。

    核心关键词Go interface 隐式实现 优缺点
    #语言与并发#并发编程
  16. 0016
    Go语言与并发

    Go 中接口值为 nil 和接口持有 nil 指针有什么区别,为什么 == nil 判断会失效?

    围绕“Go 中接口值为 nil 和接口持有 nil 指针有什么区别,为什么 == nil 判断会失效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释接口由类型和值两部分组成、持有 nil 指针的接口不等于 nil 的判定。

    核心关键词Go interface nil 陷阱 类型 值
    #语言与并发#并发编程
  17. 0017
    Go语言与并发

    Go 接口变量赋值和比较的开销与限制是什么,什么时候接口不可比较?

    围绕“Go 接口变量赋值和比较的开销与限制是什么,什么时候接口不可比较”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明接口相等要求动态类型和值都相等、动态值不可比较时会 panic。

    核心关键词Go interface 比较 动态类型 不可比较
    #语言与并发#并发编程
  18. 0018
    Go语言与并发

    Go 程序 main 函数返回后,还在运行的 goroutine 会怎样,如何正确等待它们?

    围绕“Go 程序 main 函数返回后,还在运行的 goroutine 会怎样,如何正确等待它们”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖明确进程退出即所有 goroutine 被强杀,需要用 WaitGroup 或 channel 等待收尾。

    核心关键词Go main 返回 goroutine 退出 WaitGroup
    #语言与并发#并发编程
  19. 0019
    Go语言与并发

    Go 的 map 为什么不能并发读写,会如何失败,怎么改?

    本题分析 Go map 并发写失败的机制,说明如何通过锁或 sync.Map 改造,并指出哪些操作会触发,以及为什么不可 recover。

    核心关键词Go map 并发读写 panic fatal error
    #语言与并发#并发编程
  20. 0020
    Go语言与并发

    Go 在 range 遍历 map 过程中增删元素是安全的吗,结果如何?

    围绕“Go 在 range 遍历 map 过程中增删元素是安全的吗,结果如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明单 goroutine 内边遍历边删除安全但新元素不保证被访问。

    核心关键词Go range map 遍历中删除
    #语言与并发#并发编程
  21. 0021
    Go语言与并发

    Go 遍历 map 的顺序是随机的吗,需要稳定输出时怎么办?

    本文说明 Go map 遍历顺序的不确定性来源,并给出排序 key 的稳定输出方法,涉及 key 类型、排序规则和性能代价。

    核心关键词Go map 遍历顺序 随机
    #语言与并发#性能优化#并发编程
  22. 0022
    Go语言与并发

    Go 读取 map 中不存在的 key 返回什么,如何区分「不存在」和「存的零值」?

    围绕“Go 读取 map 中不存在的 key 返回什么,如何区分「不存在」和「存的零值」”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明返回零值及 comma-ok 双返回值判存在的用法。

    核心关键词Go map key 不存在 零值 comma ok
    #语言与并发#并发编程
  23. 0023
    Go语言与并发

    Go 为什么结构体里含 sync.Mutex 后不能再按值拷贝,go vet 如何发现?

    围绕“Go 为什么结构体里含 sync.Mutex 后不能再按值拷贝,go vet 如何发现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明拷贝锁会复制内部状态导致锁失效、应传指针或嵌入指针,vet 的 copylocks 检查可发现。

    核心关键词Go Mutex 拷贝 lock by value vet
    #语言与并发#并发编程
  24. 0024
    Go语言与并发

    Go 的 sync.RWMutex 相比 Mutex 在什么读写比例下才值得用,有什么注意事项?

    围绕“Go 的 sync.RWMutex 相比 Mutex 在什么读写比例下才值得用,有什么注意事项”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断读远多于写且临界区较长时 RWMutex 占优,注意不可重入与写饥饿风险。

    核心关键词Go RWMutex Mutex 读多写少
    #语言与并发#并发编程
  25. 0025
    Go语言与并发

    Go 的 nil 切片和空切片有什么区别,序列化和判空时各要注意什么?

    本文解释Go中nil切片与空切片的本质区别,包括内部结构、与nil比较、JSON编码结果差异,并给出判空和序列化时的注意事项。通过具体场景演示为何使用len(s)==0更安全。

    核心关键词Go nil slice 空切片 区别
    #语言与并发#并发编程
  26. 0026
    Go语言与并发

    Go 的 select 在多个 case 同时就绪时怎么选择,default 分支带来什么行为变化?

    围绕“Go 的 select 在多个 case 同时就绪时怎么选择,default 分支带来什么行为变化”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明多分支就绪时伪随机选择、default 使 select 变非阻塞及忙轮询风险。

    核心关键词Go select 随机 就绪 default 非阻塞
    #语言与并发#表单#并发编程
  27. 0027
    Go语言与并发

    Go 切片的 len 和 cap 分别决定什么,reslice 时各自起什么约束?

    本题说明切片len控制可视范围和索引边界,cap控制通过reslice或append可扩展的空间上限。通过具体条件示例解释当len等于cap时再reslice会被拒绝,以及append扩容后底层分离的后果。

    核心关键词Go slice len cap 区别
    #语言与并发#并发编程
  28. 0028
    Go语言与并发

    Go 对大切片取子切片后为什么会造成内存无法释放,如何避免?

    本题解释Go子切片持有整个底层数组导致大内存无法释放的机制,并给出copy截断等避免方法。包含具体场景和边界判断,助你快速掌握切片内存管理。

    核心关键词Go 子切片 内存泄漏 底层数组
    #语言与并发#并发编程
  29. 0029
    Go语言与并发

    Go 把切片传给函数,为什么函数内改元素生效而 append 不回传?

    围绕“Go 把切片传给函数,为什么函数内改元素生效而 append 不回传”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释切片头是值传递但底层数组共享这一机制下的两类不同表现。

    核心关键词Go 切片传参 函数内修改
    #语言与并发#并发编程
  30. 0030
    Go语言与并发

    Go 的 sync.Map 相比加锁的普通 map 适合什么场景,不适合什么?

    围绕“Go 的 sync.Map 相比加锁的普通 map 适合什么场景,不适合什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断读多写少、key 集合相对固定时优势明显,需要计数或遍历时反而更差。

    核心关键词Go sync.Map 适用场景
    #语言与并发#并发编程
  31. 0031
    Go语言与并发

    Go 的 sync.Once 如何保证初始化只执行一次,函数返回错误时还能重试吗?

    围绕“Go 的 sync.Once 如何保证初始化只执行一次,函数返回错误时还能重试吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Once 保证 exactly-once 且并发安全、失败的一次也算已执行不可自动重试,需要可重试时自行加锁。

    核心关键词Go sync.Once 只执行一次 单例
    #语言与并发#并发编程
  32. 0032
    Go语言与并发

    Go 用 make 嵌套创建二维切片后,修改一行会影响其他行吗?

    本文解释 Go 中 make 嵌套创建二维切片时,修改一行是否影响其他行完全取决于内层切片是否共享底层数组,并给出安全创建方式。

    核心关键词Go 二维切片 共享 底层数组
    #语言与并发#并发编程
  33. 0033
    Go语言与并发

    Go 的类型断言和 type switch 分别在什么情况下使用,panic 如何避免?

    围绕“Go 的类型断言和 type switch 分别在什么情况下使用,panic 如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明单类型判断用带 ok 的断言、多类型分派用 switch,裸断言失败会 panic。

    核心关键词Go 类型断言 type switch comma ok
    #语言与并发#并发编程
  34. 0034
    Go语言与并发

    Go 的 sync.WaitGroup 的 Add、Done、Wait 调用位置有什么约束,常见错误有哪些?

    围绕“Go 的 sync.WaitGroup 的 Add、Done、Wait 调用位置有什么约束,常见错误有哪些”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕强调 Add 必须在启动 goroutine 之前调用、Add 与 Wait 不能并发竞态、计数不为负。

    核心关键词Go sync.WaitGroup Add Done Wait 用法
    #语言与并发#并发编程
  35. 0035
    Go语言与并发

    Go 用 channel 实现固定数量 worker 池处理任务时,如何正确关闭和收集结果?

    围绕“Go 用 channel 实现固定数量 worker 池处理任务时,如何正确关闭和收集结果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清任务 channel 关闭通知 worker 退出、WaitGroup 等待收尾、结果 channel 关闭时机的顺序。

    核心关键词Go worker pool channel WaitGroup
    #语言与并发#并发编程
上一页
1
下一页
前端进阶之旅本地 Markdown 维护 · 服务端分页 · 完整内容对用户与搜索引擎一致