
├── 第1章 课程介绍及学习指南
│ └── 1-2 课程导学
├── 第2章 为什么选择GO?大佬传授GO面试成功秘笈,助力你稳拿offer
│ ├── 2-1 GO语言在开发领域中越来越流行并且成为主流,还有理由不选择GO
│ ├── 2-4 知己知彼,教你如何从面试官的角度来看面试(一)
│ …
│ └── 2-9 资深GO面试官传授一套面试成功秘笈
├── 第3章 好的简历应该这样写,面试技巧干货在这里
│ ├── 3-1 你的简历写的有针对性吗?
│ ├── 3-2 大厂眼中的好简历是什么样的?
│ …
│ └── 3-10 你的职业规划应付得了面试官,应付得了你的人生吗?
├── 第4章 Go语言基础篇(一)
│ ├── 4-1 为什么基础类面试题是必问的?
│ ├── 4-4 Go包管理的方式有哪些?(一)
│ ├── 4-8 Go 工作区模式
│ …
│ ├── 4-13 Go语言中new和make有什么区别?
│ ├── 4-14 数组和切片有什么区别?(一)
│ └── 4-21 Go语言中哪些类型可以被内嵌?
├── 第5章 GO语言基础篇(二)
│ ├── 5-1 Go语言中哪些类型可以使用len?哪些类型可以使用cap?
│ ├── 5-3 Go语言的指针有哪些限制?
│ ├── 5-6 float或切片可以作为map类型的key吗?
│ …
│ ├── 5-13 处理Go语言中的错误,怎么才算最优雅?
│ └── 5-16 大佬传授几招for range闭坑秘笈
├── 第6章 Go语言高级特性篇
│ ├── 6-1 从容应对面试不得不掌握的Go 语言的高级特性
│ ├── 6-2 Go 语言 context 最佳实践
│ ├── 6-4 defer底层数据结构是什么?
│ …
│ ├── 6-9 channel 底层的数据结构是什么?
│ ├── 6-13 如何通过interface实现鸭子类型?
│ └── 6-16 Go语言中如何实现多态?
├── 第7章 库与框架篇
│ ├── 7-2 net/http启动http server的执行过程是怎样的?
│ ├── 7-5 你用过哪些web框架,都有什么特点?
│ ├── 7-6 Gin中间件的实现原理
│ …
│ ├── 7-9 如何使用cron实现定时任务?
│ ├── 7-13 如何优雅的关闭服务?
│ └── 7-15 如何使用viper实现配置的动态监听?
├── 第8章 Go runtime篇
│ ├── 8-3 Go编译过程是怎样的?(一)
│ ├── 8-5 Go 程序启动过程是怎样的?
│ ├── 8-7 Go语言中的GC流程(一)
│ …
│ ├── 8-13 GMP底层数据结构是怎样的?(一)
│ ├── 8-16 GMP 调度流程是怎样的?
│ └── 8-19 GMP 调度过程中哪些情况会出现阻塞?
├── 第9章 GO底层原理篇
│ ├── 9-3 String的底层存储结构
│ ├── 9-7 slice 底层数据结构是什么?有什么特性?
│ ├── 9-8 slice是如何扩容的?
│ ├── 9-11 channel的底层实现原理是什么?
│ ├── 9-14 map的底层实现是什么?
│ …
│ └── 9-25 sync 包的读写锁和互斥锁是怎么实现的?
├── 第10章 GO并发编程篇
│ ├── 10-1 为什么并发编程是每个后端开发必须要掌握的?
│ ├── 10-4 Go是怎么实现原子操作的?
│ ├── 10-7 如何避免Map的并发问题?
│ …
│ ├── 10-14 sync.Mutex 正常模式和饥饿模式有啥区别
│ ├── 10-21 如何优雅的关闭通道?
│ └── 10-25 Singleflight的实现原理和使用场景
├── 第11章 Go性能优化篇
│ ├── 11-3 如何使用benchmark进行性能测试?
│ ├── 11-4 如何使用pprof来定位性能问题?
│ ├── 11-5 如何使用Trace定位性能问题?
│ …
│ ├── 11-13 如何实现字符串和byte切片的零拷贝转换?
│ └── 11-15 如何优化api接口的性能?
├── 第12章 数据库与缓存篇
│ ├── 12-3 MySQL 的 redo log 和 binlog有何 区别?(一)
│ ├── 12-11 索引的底层存储结构(一)
│ ├── 12-18 为什么 MySQL InnoDB采用 B+ 树作为索引?
│ …
│ ├── 12-32 彻底搞懂MySQL中的锁(一)
│ ├── 12-43 explain详解(一)
│ ├── 12-48 谈谈SQL优化的经验(一)
│ …
│ ├── 12-53 Redis有哪些持久化的方式,实现过程是怎样的?
│ ├── 12-54 如何避免缓存穿透,缓存雪崩和缓存击穿?.mp4
│ ├── 12-61 Redis如何保证与数据库的双写一致性?
│ └── 12-64 Redis 如何实现服务高可用?(三)
├── 第13章 Elasticsearch搜索篇
│ ├── 13-1 Elasticsearch是如何实现master选举的?(一)
│ ├── 13-4 谈谈你对倒排索引的理解?
│ ├── 13-5 Elasticsearch是如何写入数据的?(一)
│ …
│ ├── 13-10 ElasticSearch是如何实现高可用的?
│ ├── 13-11 ElasticSearch如何解决深分页问题?
│ └── 13-16 怎么优化ElasticSearch性能?
├── 第14章 消息中间件篇
│ ├── 14-3 哪些场景下需要考虑引入消息中间件?各种消息中间件应该怎么选?
│ ├── 14-4 kafka 为什么会有很高的吞吐性能?
│ ├── 14-6 kafka的数据是如何存储的?
│ …
│ ├── 14-13 幂等生产者和事务生产者有什么区别?
│ ├── 14-16 kafka是如何实现高可用的?
│ └── 14-20 使用Go操作Kafka有哪些需要注意的地方?
├── 第15章 微服务篇
│ ├── 15-2 微服务的优缺点分别是什么?
│ ├── 15-3 SOA和微服务架构有什么区别?
│ ├── 15-5 微服务有哪些设计原则?
│ …
│ ├── 15-12 Docker的底层原理
│ ├── 15-15 简述 K8s 的优势、使⽤场景及其特点?
│ └── 15-19 简述 K8s中 Pod 的健康检查⽅式?
├── 第16章 GO语言设计模式篇
│ ├── 16-1 设计模式有6大原则
│ ├── 16-4 分别使用懒汉式和饿汉式实现单例模式
│ ├── 16-6 GO语言中的简单工厂,抽象工厂和工厂方法?
│ ├── 16-8 建造者模式主要用来解决什么问题?
│ ├── 16-9 使用策略模式模拟实现多种支付方式
│ └── 16-10 如何使用Go语言实现装饰器模式?
├── 第17章 GO语言数据结构与算法篇
│ ├── 17-2 Golang中如何实现链表?
│ ├── 17-6 Golang如何实现数组队列和链表队列?
│ ├── 17-8 Golang中如何实现二叉树?
│ …
│ ├── 17-14 Golang中如何实现冒泡排序?
│ ├── 17-17 如何在Golang实现快速排序?
│ └── 17-20 算法必备100题
├── 第18章 Linux、操作系统与网络篇
│ ├── 18-3 常用命令及技巧(一)
│ ├── 18-8 CPU 负载和 CPU 利用率的区别是什么?
│ ├── 18-20 Linux 内核设计的理念是什么?
│ ├── 18-28 进程间通信的方式有哪些?
│ ├── 18-34 IO 多路复用之select,poll,epoll
│ ├── 18-36 零拷贝是如何实现的?
│ ├── 18-40 彻底理解TCP
│ …
│ ├── 18-51 HTTPS建立连接跟HTTP相比有什么区别?
│ └── 18-53 浏览器中输入URL到返回页面过程
├── 第19章 基于GO语言的多种场景项目案例篇
│ ├── 19-2 电商秒杀场景如何设计系统架构?
│ ├── 19-3 电商秒杀场景下的各种缓存设计
│ ├── 19-5 电商秒杀场景下如何防止超卖?
│ ├── 19-6 电商秒杀场景的高可用建设
│ ├── 19-7 企业级网盘搜索场景下的系统架构设计
│ ├── 19-9 企业级网盘搜索场景下的性能优化
│ ├── 19-10 高并发的微博评论系统架构设计
│ └── 19-12 海量数据的微博计数器解决方案
├── 第20章 突破层层关卡,做正确的判断与选择
│ ├── 20-1 充分了解录用条件
│ ├── 20-2 全面了解应聘岗位的工作内容
│ ├── 20-3 通过技术面试后,该怎么去谈薪水?
│ ├── 20-4 去大公司还是小公司?
│ └── 20-5 如何顺利渡过试用期?
└── 第21章 GO面试课程总结
└── 21-1 课程总结