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 实现奇偶交替输出(面试常考)

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
ttwuai5 天前
Go开源后台管理系统推荐:怎么按技术栈和边界比较4个官方仓库?
golang·gin
大勇前进5 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu5 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile5 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go