go 常见面试题

一、基础语法与类型

  1. Go 与 C/Java 有哪些主要区别?

  2. Go 的数据类型有哪些?值类型和引用类型分别是什么?

  3. nil、zero value 的区别?

  4. 切片(slice)、数组(array)、map 的底层实现原理是什么?

  5. defer 的执行时机和使用场景?

  6. 指针在 Go 中的使用限制?Go 不允许指针运算的原因?

  7. new 与 make 的区别?


二、控制流与函数

  1. Go 如何实现可变参数函数?

  2. 闭包(closure)的原理和使用场景?

  3. panic、recover 与 error 的区别和使用场景?

  4. 方法(method)与函数(function)的区别?

  5. 值接收者与指针接收者的区别?


三、并发与调度

  1. Goroutine 是什么,如何创建?

  2. runtime.Gosched()、runtime.Goexit()、time.Sleep() 的区别?

  3. channel 的类型、缓冲与非缓冲区别?

  4. select 多路复用的原理?

  5. 如何避免 channel 死锁?

  6. sync.Mutex、sync.RWMutex、sync/atomic 的区别?

  7. WaitGroup 的作用与使用方法?

  8. 如何限制并发数量(例如线程池)?

  9. Goroutine 泄漏的场景及排查方法?


四、内存管理

  1. Go 的内存分配策略(栈 vs 堆)?

  2. 垃圾回收(GC)机制是什么?

  3. 指针逃逸分析(escape analysis)是什么?

  4. slice 扩容(append)的原理?

  5. map 底层实现原理(哈希表 + 冲突处理)?


五、接口与面向对象

  1. Go 如何实现面向对象?

  2. 接口(interface)是什么,如何使用?

  3. 空接口(interface{})的用途?

  4. 类型断言和类型转换的区别?

  5. Go 中没有继承,如何实现多态?


六、标准库与工具

  1. Go 的包管理方式(module、GOPATH)?

  2. context.Context 的作用?

  3. net/http 与 fasthttp 的区别?

  4. Go 内置日志包 log 的特点?

  5. reflect 包的使用场景和性能问题?


七、性能与优化

  1. 如何分析 Go 程序性能瓶颈?

  2. pprof 的使用方法?

  3. 内存泄漏、Goroutine 泄漏的排查方法?

  4. 大量小对象频繁创建对 GC 的影响?


八、实战类/场景题

  • 用 Go 实现一个限流器(Token Bucket/Leaky Bucket)

  • 用 Go 实现一个线程安全的缓存

  • 并发下载文件/数据聚合

  • 实现一个生产者-消费者模型

  • 实现一个简单的协程池(Goroutine Pool)

  • 用 channel 实现奇偶交替输出(面试常考)

相关推荐
非优秀程序员1 天前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
非优秀程序员1 天前
第06章 浙江帮的内战|《互联网产品恩仇录》
后端
非优秀程序员1 天前
第08章 马云的反击|《互联网产品恩仇录》
后端
非优秀程序员1 天前
题记|《互联网产品恩仇录》
后端·程序员·创业
沐晓时光1 天前
C语言入门,内存函数知识讲解
c语言·开发语言
Gopher_HBo1 天前
Go CPU 剖析的"地基":信号、CAS、写屏障、无锁环形缓冲
后端
panbook1 天前
从0到1实现一个分布式时序数据库(二):写入成功之后,如何用 WAL 找回数据
后端
Swot1 天前
上传一张 4MB 图片,我先后撞上了三层请求体限制
后端
IT_陈寒1 天前
Vite的HMR把我整不会了:一个生产环境的热更新坑
前端·人工智能·后端
OLRainM1 天前
实习复盘:大模型网关渠道质量评分实战(二)—— 报错了到底算谁的锅?流式归因与 Token 补账踩过的 8 个真坑
后端