go小题单
Go 并发面试题单
12.1 开启 100 个协程,顺序打印 1-1000,且保证协程号 1 的打印尾数为 1 的数字
题目要求:
- 启动 100 个 goroutine
- 按顺序打印 1-1000
- 编号为 1 的 goroutine 只打印尾数为 1 的数字(如 1, 11, 21...)
12.2 三个 goroutine 交替打印 abc 10 次
题目要求:
- 启动 3 个 goroutine
- 分别打印 a、b、c
- 按顺序交替输出:a b c a b c ... 共 10 轮
12.3 用不超过 10 个 goroutine 不重复的打印 slice 中的 100 个元素
题目要求:
- slice 有 100 个元素
- 最多使用 10 个 goroutine
- 每个元素只打印一次,不能重复
- 所有元素都要被打印
12.4 两个协程交替打印奇偶数
题目要求:
- 两个 goroutine
- 一个打印奇数,一个打印偶数
- 按顺序输出:1 2 3 4 5 6 ...
12.5 用单个 channel 实现 0,1 的交替打印
题目要求:
- 只使用 1 个 channel
- 交替打印 0 和 1
- 输出:0 1 0 1 0 1 ...
12.6 sync.Cond 实现多生产者多消费者
题目要求:
- 使用
sync.Cond - 实现多个生产者、多个消费者
- 生产者生产数据,消费者消费数据
- 正确处理等待和唤醒
12.7 使用 go 实现 1000 个并发控制并设置执行超时时间 1 秒
题目要求:
- 启动 1000 个并发任务
- 控制并发数量
- 设置整体超时时间为 1 秒
- 超时后未完成的任务应该被取消
12.8 使用两个 Goroutine,向标准输出中按顺序交替打出字母与数字,输出是 a1b2c3
题目要求:
- 两个 goroutine
- 一个打印字母 a b c d ...,一个打印数字 1 2 3 4 ...
- 交替输出:a 1 b 2 c 3 ...
12.9 编写一个程序限制 10 个 goroutine 执行,每执行完一个 goroutine 就放一个新的 goroutine 进来
题目要求:
- 同时最多 10 个 goroutine 在运行
- 完成一个,补充一个新任务
- 持续运行直到所有任务完成
题单速查表
| 题号 | 核心考点 | 难度 |
|---|---|---|
| 12.1 | 协程间协调 + 条件控制 | ⭐⭐⭐ |
| 12.2 | 多协程交替执行 | ⭐⭐⭐ |
| 12.3 | 工作池模式 + 任务分配 | ⭐⭐ |
| 12.4 | 双协程同步 | ⭐⭐ |
| 12.5 | Channel 控制技巧 | ⭐⭐ |
| 12.6 | sync.Cond 条件变量 | ⭐⭐⭐⭐ |
| 12.7 | 并发控制 + 超时控制 | ⭐⭐⭐⭐ |
| 12.8 | 双协程交替输出 | ⭐⭐ |
| 12.9 | 动态工作池 | ⭐⭐⭐ |

浙公网安备 33010602011771号