- 自我介绍
- 代码效率分析,考察局部性原理
- 多核 CPU 场景下,cache 如何保持一致、不冲突?
- uint 类型溢出
- 介绍 rune 类型
- 编程题:3 个函数分别打印 cat、dog、fish,要求每个函数都要起一个 goroutine,按照 cat、dog、fish 顺序打印在屏幕上 100 次。
- 介绍一下 channel,无缓冲和有缓冲区别
- 是否了解 channel 底层实现,比如实现 channel 的数据结构是什么?
- channel 是否线程安全?
- Mutex 是悲观锁还是乐观锁?悲观锁、乐观锁是什么?
- Mutex 几种模式?
- Mutex 可以做自旋锁吗?
- 介绍一下 RWMutex
- 项目中用过的锁?
- 介绍一下线程安全的共享内存方式
- 介绍一下 goroutine
- goroutine 自旋占用 cpu 如何解决 (go 调用、gmp)
- 介绍 linux 系统信号
- goroutine 抢占时机 (gc 栈扫描)
- Gc 触发时机
- 是否了解其他 gc 机制
- Go 内存管理方式
- Channel 分配在栈上还是堆上?哪些对象分配在堆上,哪些对象分配在栈上?
- 介绍一下大对象小对象,为什么小对象多了会造成 gc 压力?
- 项目中遇到的 oom 情况?
- 项目中使用 go 遇到的坑?
- 工作遇到的难题、有挑战的事情,如何解决?
- 如何指定指令执行顺序?