CS Level Up系列介绍
这个系列讲的是什么?目标是什么?
提升我的算法、数据结构和系统设计知识。目标是成为一个厉害的人。
格式是什么样的?你们将如何实现这个目标?
目前计划如下:
-
做一些准备工作,学习基础算法和数据结构。我将主要学习 Heapclub(一家现已关闭的面试辅导公司)的课程(课程安排请点击此处)。目标是对所有这些内容了如指掌。如果有时间,我也会学习数学部分。
-
准备工作完成后,我将采用与此处概述的类似的方法。我将使用 Leetcode。
-
为了更多地了解操作系统、网络和系统,我将使用以下资源:
-
同时,或者在完成上述步骤后,我将观看以下 YouTube 频道的所有系统设计视频:Tech Dummies - Narendra L、Success in Tech、Tushar Roy 的系统设计播放列表和Gaurav Sen 的系统设计播放列表
-
为了获得更多的系统设计知识,我将阅读《设计数据密集型应用程序》一书。我会尽量读两遍。
-
(可选)我可能会阅读并完成CTCI的所有相关章节。具体来说,这些章节包括:数学与逻辑谜题、面向对象设计、系统设计与可扩展性、测试、Java、数据库、线程与锁。
-
(也是可选的)SQL 资源:
-
我将参考的其他资源:
Heapclub 上可能没有,但我在论坛/文章/书籍中看到过一些课程,如果时间允许的话,可能会有帮助。以下是一些我认为比较重要的主题(按优先级排序):
- 了解常见问题:斐波那契数列、有效/平衡括号、字符串的回文/字谜、旅行推销员、背包问题、最长公共子序列(使用动态规划,自下而上地使用矩阵)。
- 不相交集/并查集
- 滑动窗口
- 拉宾-卡普
- 二叉索引树(Fenwick树)
- 二分图(检查图是否为二分图)
- 迭代器和相关问题(展平嵌套列表迭代器、设计跳过迭代器、合并 K 个排序迭代器)
- 最小生成树
- 斐波那契堆及其保证
- KMP 或 Z 算法(选择一项)
- 线段树
- 后缀树(无需担心压缩 + 了解 Ukkonen 算法)和/或后缀数组
- 线扫描(几何相关,问题:矩形相交和天际线问题)
该项目预计耗时:12-18个月。
你是谁?
训练营毕业生,拥有 5.5 年软件工程经验。我之前做过一些基本的算法/数据结构方面的工作,但不多——而且几乎都忘光了。我数学很差,递归也很差劲。
(请注意,我之前链接到过此博客文章和此另一篇文章- 这些文章似乎直接从 Heapclub 获取内容,同时删除了重要信息。)
鏂囩珷鏉ユ簮锛�https://dev.to/jjb/cs-level-up-series-part-0-cco