700+道Golang面试题及答案详解,看完面试不慌了

121 阅读4分钟
  • 如何知道一个对象是分配在栈上还是堆上?

  • go slice是怎么扩容的?

  • 为什么有协程泄露(Goroutine Leak)?

  • Go 可以限制运行时操作系统线程的数量吗? 常见的goroutine操作函数有哪些?

  • 如何控制协程数目。

  • 请你讲一下Go面向对象是如何实现的?

  • Golang 中 make 和 new 的区别?

  • 不同类型的变量,其零值是什么?

  • 数组和切片的区别?

  • for range 的时候它的地址会发生变化么?for 循环遍历 slice 有什么问题?

  • go defer,多个 defer 的顺序,defer 在什么时机会修改返回值?

  • golang协程为什么比线程轻量?

  • Golang中数组与切片比较?

  • make和new的区别? go语言中的引用类型包含哪些?

  • uint,int区别?

  • 说说go语言的channel特性?

  • 线程模型有哪些?为什么 Go Scheduler 需要实现 M:N 的方案?Go Scheduler 由哪些元素构成呢?

  • ……

  • ……

  • ……

  • sync.WaitGroup的Wait()方法在所有Done()调用后,是否会重置计数?

  • os.Signal的Notify方法如何捕获系统信号?如何优雅处理程序退出?

  • reflect.Select的作用是什么?与select语句有何区别?

  • go vet检测到 “loop variable i captured by func literal” 是什么问题?如何修复?

  • net/http的Client默认超时时间是多少?如何设置全局超时?

  • math/rand和crypto/rand的随机数有何区别?分别适用于什么场景?

  • channel的len和cap在发送 / 接收操作后如何变化?

  • go build的-race选项会对程序性能产生什么影响?

  • interface{}能否存储nil值?如何判断interface{}存储的是nil?

  • time.Format的参考时间为什么是2006-01-02 15:04:05?

  • sync.Mutex的Lock和Unlock能否在不同的 goroutine 中调用?

  • bytes.Compare和==比较两个[]byte有什么区别?

  • go mod vendor的作用是什么?在什么场景下使用?

  • runtime.NumGoroutine()返回的数量包含哪些类型的 goroutine?

  • json.Unmarshal如何处理未知的 JSON 字段?如何忽略未知字段?

  • io.ReaderFrom和io.WriterTo接口的作用是什么?如何提高 IO 效率?

  • context的Value方法是线程安全的吗?多次调用WithValue会如何处理相同 key?

  • map的make函数指定容量(如make(map[int]int, 100))和不指定容量,性能有何差异?

  • 如何优化 Go 程序的启动速度?

  • go vet和golint的作用是什么?它们有什么区别?

  • 如何检测 goroutine 泄漏?有哪些工具可用?

  • 如何实现一个限流器(rate limiter)?Go 标准库中有相关实现吗?

  • 如何实现一个简单的连接池?需要注意哪些问题?

  • 单例模式在 Go 中如何实现?如何保证线程安全和懒加载?

  • 如何实现一个简单的生产者 - 消费者模型?

  • ……

  • ……

  • ……

  • 如何通过 channel 进行 goroutine 之间的通信?

  • channel 有哪些类型?

  • 如何关闭 channel?关闭后的 channel 有什么特点?

  • 什么是 select 语句?它有什么作用?

  • 如何使用 waitgroup 等待多个 goroutine 完成?

  • 什么是互斥锁?如何使用?

  • 读写锁与互斥锁有什么区别?

  • Go 语言中的原子操作有什么作用?

  • 什么是上下文(context)?它有什么用途?

  • 如何使用 context 控制 goroutine 的生命周期?

  • 说说Go的unsafe包?

  • 如何使指针指向任意类型,类似于C/C++中的void?

  • 什么是标记清除法?

  • 说说Go的三色标记法?

  • 为什么说三色标记法是一个假阴性的算法?

  • 什么是写屏障?

  • Go的垃圾回收机制(GC)分为几步?

  • STW是否会导致服务不可用?

  • 什么是GMP调度模型?

  • Go原生和GORM在连接MySQL上的差别?

  • Gin框架有什么优势?

  • GRPC是怎么连接的?

  • GRPC和HTTP的区别?

👇👇👇答案详解及更多精彩内容,进入小程序体验更佳👇👇👇

👇👇👇程序部分截图👇👇👇