基础语法与数据结构
- 与其他语言相比,使用 Go 有什么好处?
- 数组 (Array) 和 切片 (Slice) 的区别是什么?
- Slice 的底层结构是怎样的?它的扩容机制是怎样的?
- Map 的底层实现原理是什么?它是并发安全的吗?如何实现并发安全的 Map?
- Channel 的底层实现原理?有缓冲和无缓冲 Channel 的区别?
- Channel 会在什么情况下引发 panic?
- make 和 new 的区别是什么?
- defer 的执行顺序是怎样的?defer 和 return 的执行顺序?
- Golang 中 init 函数在什么时候执行?
- 如何高效地拼接字符串?
-
interface的底层结构是什么(iface和eface)? - interface 可以比较吗?
- 什么是空结构体 struct{}?它有什么应用场景?
- rune 类型是什么?它和 byte 有什么区别?
并发编程
- 什么是 Goroutine?协程、线程和进程的区别是什么?
- 详细讲讲 Golang 的 GMP 调度模型?
- GMP 模型中,如果一个 Goroutine 发生阻塞(如系统调用),会发生什么?
- 什么是工作窃取(Work Stealing)机制?
- Context 的作用是什么?有哪些使用场景?
- sync.WaitGroup 的底层原理?
- sync.Mutex 的底层实现?正常模式和饥饿模式有什么区别?
- 什么是 sync.Pool?它的底层原理和使用场景?
内存管理与底层原理
- 什么是逃逸分析?如何知道对象分配在栈上还是堆上?
- Golang 的垃圾回收(GC)机制是怎样的?详细说说三色标记法。
- 什么是混合写屏障(Hybrid Write Barrier)机制?
- GC 的触发时机有哪些?
- Golang 中的内存分配机制是怎样的(TCMalloc)?
- 什么是反射(Reflection)?反射的性能问题及应用场景?
- Go 语言中的函数参数传递是值传递还是引用传递?