数据结构与算法¶
本课程的目标不是把学习者训练成刷题机器,而是建立后端工程师真正需要的算法意识:
- 能判断一段代码的时间和空间成本。
- 能根据业务场景选择合适的数据结构。
- 能理解数据库、缓存、消息队列、调度系统背后的常见算法思想。
- 能在 Go 中写出清晰、可靠、复杂度合理的代码。
学习目标¶
学完本课程后,学习者应该能够:
- 使用大 O 表示法分析常见代码的复杂度。
- 理解数组、链表、栈、队列、哈希表、树、堆、图的适用场景。
- 掌握排序、查找、遍历、递归、分治、动态规划等基本思想。
- 理解 LRU、布隆过滤器、一致性哈希、限流算法、时间轮等后端常用算法。
- 能用 Go 实现常见数据结构,并知道标准库中已有能力。
课程结构¶
建议按下面顺序学习:
为什么后端工程师要学算法¶
很多后端问题本质上是数据组织和访问效率问题:
- 缓存淘汰为什么常用 LRU?
- Redis ZSet 为什么适合排行榜?
- 数据库索引为什么常见 B+ 树?
- 布隆过滤器为什么能减少缓存穿透?
- 限流为什么会有固定窗口、滑动窗口、令牌桶和漏桶?
- 定时任务很多时,为什么需要时间轮?
- 分布式缓存节点变化时,为什么会用一致性哈希?
这些都不是孤立技巧,而是数据结构与算法在工程里的落地。
学习方式¶
- 先理解场景,再理解结构,不要一开始死背定义。
- 每学一个结构,都要问它擅长什么、不擅长什么。
- 每学一个算法,都要问它的复杂度、边界条件和工程代价。
- Go 示例以清晰为主,不追求炫技。
- 每个数据结构和算法都要结合 Go 后端应用场景理解,不停留在抽象定义。
- 实战任务先独立完成,再展开参考答案对照思路和边界条件。
- 面试题要能讲出思路、复杂度和为什么这样选。
学习提醒
算法能力不是只为面试服务。它会影响你写分页、缓存、队列、排行榜、限流、调度、搜索和数据同步时的判断力。