卡码笔记-最强八股文
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
代码随想录 (opens new window)
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
代码随想录 (opens new window)
  • 本栏必读

    • Go语言面试题专栏介绍
      • 语言基础
      • 内存管理
      • 并发编程
      • 底层原理
  • 语言基础

  • 内存管理

  • 并发编程

  • 底层原理

# Go语言面试题

Go语言面试,核心就四块:基础语法、内存管理、并发编程、底层原理。

现在Go岗的面试已经不满足于你"会用"了,面试官要的是你"懂底层"——goroutine和线程有什么区别、channel底层怎么实现、GMP调度模型为什么需要P、map并发写为什么直接panic而不是报错。

这个专栏把Go面试的高频问题按四大分类整理,每个问题从面试官视角出发,讲清楚原理和追问方向。

# 语言基础

  • Go语言有哪些基础数据类型?
  • Go语言中slice和array有什么区别?slice和map有什么区别?
  • Go语言中值类型和引用类型有什么区别?
  • Go语言中new和make的区别是什么?
  • Go语言中的接口是什么?如何实现接口?
  • Go语言中struct tag有什么作用?
  • Go语言中defer的执行顺序是怎样的?
  • 多层defer中发生panic时,defer还会执行吗?
  • Go语言中的反射原理是什么?什么场景应谨慎使用?
  • Go语言中panic和recover的作用及使用场景是什么?

# 内存管理

  • Go语言的内存管理机制是怎样的?
  • 如何知道一个对象是分配在栈上还是堆上?
  • Go语言中如何进行内存分配优化?
  • Go语言中什么情况下会导致内存泄漏?

# 并发编程

  • 什么是Goroutine?协程的上下文切换保存在哪?
  • Go语言中协程、线程、进程有什么区别?
  • Go语言中协程是如何进行通信的?
  • Go语言中怎么实现协程池?
  • Goroutine的创建数量存在限制吗?
  • 哪些操作会导致Goroutine阻塞?调度器会怎么做?
  • 如何等待并收集多个并发goroutine的执行结果?
  • Go语言中无缓冲和有缓冲的channel有什么区别?
  • 向已关闭的channel发送数据会怎样?如何安全关闭channel?
  • 对值为nil的channel读取会发生什么?
  • Go语言中channel死锁的场景有哪些?如何避免?
  • Go语言中select语句的执行机制是怎样的?
  • sync.Mutex的两种模式是什么?正常模式和饥饿模式有什么区别?
  • sync.Mutex是如何在底层实现锁状态的?
  • sync.Map如何实现并发安全?与map加锁相比有什么优缺点?
  • Go语言中如何用context实现请求的超时或取消控制?
  • Context.Value的使用场景和注意事项是什么?

# 底层原理

  • Go语言的GMP调度模型是什么?G、M、P各自的作用是什么?
  • GMP模型中P这一层能否去掉?去掉会带来什么问题?
  • GMP调度模型发生调度的时机有哪些?
  • Goroutine和线程在栈内存管理上有什么根本不同?
  • Go语言中channel的底层原理是什么?
  • Go语言中channel的作用是什么?
  • Go语言中map底层是如何实现的?
  • 并发读写一个普通的map为什么会panic?
  • Go语言中的map是否是并发安全的?
Last Updated: 4/29/2026, 3:26:47 PM

Go有哪些基础数据类型 →

评论

验证登录状态...

侧边栏
夜间
卡码简历
代码随想录
卡码投递表🔥
2026群
添加客服微信 PS:通过微信后,请发送姓名-学校-年级-2026实习/校招
支持卡码笔记
鼓励/支持/赞赏Carl
1. 如果感觉本站对你很有帮助,也可以请Carl喝杯奶茶,金额大小不重要,心意已经收下
2. 希望大家都能梦想成真,有好的前程,加油💪