Skip to content

《Go 语言与 AI 提效》大纲

Go 入门

  • 为什么使用 Go 语言
  • Go 环境安装与配置
  • Go IDE 安装与配置
  • Go 第 1 个 Hello World 程序
  • Go 程序的基本结构
  • Go 有哪些关键字
  • Go 有哪些数据类型
  • Go 包管理机制
  • Go go.mod 文件详解
  • Go go.sum 文件详解

Go 进阶

  • Go 实现多态
  • Go 实现继承
  • Go 泛型编程
  • Go 常用标准库
  • Go 并发编程
  • Go 内存管理
  • Go 调度模型

Go 源码

  • Go defer 关键字的底层实现原理
  • Go slice 的底层实现原理
  • Go map 的底层实现原理
  • Go channel 的底层实现原理
  • Go mutex 的底层实现原理
  • Go rwmutex 的底层实现原理
  • Go goroutine 的底层实现原理
  • Go waitGroup 的底层实现原理
  • Go cond 的底层实现原理

Go 面试

Go 基础面试问题合集

  • Go 方法与函数的区别
  • Go 方法值接收者和指针接收者的区别
  • Go 函数返回局部变量的指针是否安全
  • Go 函数参数传递到底是值传递还是引用传递
  • Go 内置函数 make 和 new 的区别

Go 切片面试问题合集

  • Go array 和 slice 的区别
  • Go slice 深拷贝和浅拷贝
  • Go slice 扩容机制
  • Go slice 为什么不是线程安全的

Go 哈希表面试问题合集

  • Go map 遍历为什么是无序的
  • Go map 为什么是非线程安全的
  • Go map 如何查找
  • Go map 冲突的解决方式
  • Go map 的负载因子为什么是 6.5
  • Go map 如何扩容
  • Go map 和 sync.Map 谁的性能好,为什么

Go 管道面试问题合集

  • Go channel 有什么特点
  • Go channel 有无缓冲的区别
  • Go channel 为什么是线程安全的
  • Go channel 如何控制 goroutine 并发执行顺序
  • Go channel 共享内存有什么优劣势
  • Go channel 发送和接收什么情况下会死锁

Go 协程面试问题合集

  • Go goroutine 和线程的区别
  • Go goroutine 泄露的场景
  • Go 如何查看正在执行的 goroutine 数量
  • Go 如何控制并发的 goroutine 数量

Go 锁面试问题合集

  • Go 原子操作有哪些
  • Go 原子操作和锁的区别
  • Go 互斥锁正常模式和饥饿模式的区别
  • Go 互斥锁允许自旋的条件
  • Go 可重入锁如何实现

Go 调度模型面试问题合集

  • Go 线程实现模型
  • Go GMP 和 GM 模型
  • Go work stealing 机制
  • Go hand off 机制
  • Go 抢占式调度
  • Go 如何查看运行时调度信息

Go 内存管理面试问题合集

  • Go 内存逃逸机制
  • Go 内存对齐机制
  • Go GC 实现原理
  • Go GC 如何调优

Go 并发面试问题合集

  • Go 常用的并发模型
  • Go 有哪些并发同步原语
  • Go 有哪些方式安全读写共享变量
  • Go 如何查看 GC 信息
  • Go 如何排查数据竞争问题

Go Web 开发

  • Go 第 1 个 Web 程序
  • Go RESTful API 设计和实现
  • Go 路由和中间件
  • Go 数据库连接 ORM

Go 微服务

  • 开源微服务框架 go-micro
  • 开源微服务框架 go-zero
  • 开源微服务框架 go-kratos
  • 自研微服务框架 go-fusion

木川工作室 (微信:mcmc2024)