标签题目
协程相关面试题
协程解决什么问题,和线程性能怎么比较?
这题考并发模型和性能边界,回答要说明协程降低的是调度和内存成本,不是让 CPU 计算突破核心数。
协程适合IO密集型还是计算密集型任务?
协程更适合 IO 密集型任务,核心原因是它能在用户态以较低成本挂起和恢复执行流,把等待网络、磁盘、RPC、数据库响应的时间让给其他任务;但协程并不会凭空提升 CPU 算力,计算密集型任务如果持续占满 CPU,仍然需要多线程、多进程、并行计算或任务切分配合调度。
Go 协程和线程有什么区别?
Go 协程和线程有什么区别?这道腾讯牛客题的关键是围绕“进程、线程与 Go 协程差异”讲清概念、机制、取舍和边界。进程是资源隔离单位,线程是内核调度实体,Go 协程 goroutine 是由 Go runtime 管理的轻量用户态执行单元。goroutine 不是 OS 线程,而是通过 GMP 调度模型以 M:N 方式复用到少量内核线程上运行。
Go 中主协程如何等待其他协程执行完再继续?
Go 中主协程如何等待其他协程执行完再继续?这道腾讯牛客题的关键是围绕“Go WaitGroup 等待 goroutine”讲清概念、机制、取舍和边界。Go 中主 goroutine 等待其他 goroutine 最常用 sync.WaitGroup:启动前 Add 任务数,每个 goroutine defer Done,主 goroutine 调 Wait 阻塞直到计数归零。需要错误传播和取消时用 errgroup.WithContext 更合适。