文章目录
- interviews:6.5 万人 Star 的面试刷题指南
- 1、 这个仓库解决什么问题
- 2、 数据结构部分讲了什么
- 3、 算法部分覆盖了哪些
- 4、 代码题解的组织方式
- 5、 还有哪些配套资源
- 6、 适合什么人
interviews:6.5 万人 Star 的面试刷题指南
kdn251/interviews 在 GitHub 上已经拿到 64,990 Star 了。
这个仓库干的事很纯粹:把数据结构和算法的核心知识整理成一份可查阅的参考手册,同时附带大量 Java 题解。对准备技术面试的人来说,它是一份从理论到代码都覆盖到了的资料包。
1、 这个仓库解决什么问题
准备面试的人都经历过这种状态:翻书看数据结构的定义,刷 LeetCode 看题解,两边来回跳。书上的知识和写代码之间总有一段距离。
这个仓库把两者放到了一起。每种数据结构先讲清楚是什么、有哪几种类型、增删查改的时间复杂度是多少,然后直接给出对应的 Java 实现代码。不用再自己去拼凑。
2、 数据结构部分讲了什么
覆盖了面试中出现频率最高的那些结构:链表、栈、队列、二叉树、二分搜索树、Trie 树、Fenwick 树、线段树、堆、哈希表、图。
每种结构的讲解格式统一:先给定义,再分类型说明,最后列出时间复杂度。比如链表,会区分单链表、双链表、循环链表三种,分别说明节点指针的区别和各操作的复杂度。
复杂一点的结构还配了图。Fenwick 树、线段树、哈希表这些,光看文字不容易建立直觉,有图就好理解很多。
3、 算法部分覆盖了哪些
排序算法讲了快排、归并、桶排序、基数排序。图算法部分更全:DFS、BFS、拓扑排序、Dijkstra、Bellman-Ford、Floyd-Warshall、Prim、Kruskal,基本上面试会考到的图算法都在这里了。
每个算法都配了动态演示图,能看到节点遍历和路径选择的过程。这对理解算法的执行逻辑比纯看文字有效得多。
贪心算法单独列了一节,用零钱找零的例子讲清楚了贪心策略的适用条件:最优子结构和贪心选择性质。位运算部分也整理了常用的位操作技巧,从测试第 k 位到位运算交换值,都是面试中偶尔会考的冷门知识点。
4、 代码题解的组织方式
仓库里有 18 个目录、124 个 Java 文件,按数据结构和算法类型分类存放。Array 目录下有最大子数组和、螺旋矩阵、搜索旋转排序数组这些经典题。DynamicProgramming 目录下有爬楼梯、编辑距离、正则匹配、单词拆分。HashTable 目录下有两数之和、字母异位词分组、最小覆盖子串。
基本上 LeetCode 高频题该有的都有了。代码写法偏简洁,没有过多的注释和优化技巧展示,适合当作参考实现来看。
5、 还有哪些配套资源
仓库还整理了一份资源清单:
在线刷题平台列了 LeetCode、HackerRank、CodeForces、SPOJ 等 12 个站点。视频课程推荐了 UC Berkeley 和 MIT 的数据结构与算法公开课。面试书单包括《Cracking The Coding Interview》《Competitive Programming 3》《Introduction to Algorithms》这三本。
另外还有实时刷题平台的推荐,比如 Pramp 和 Interviewing.io,可以跟真人模拟面试。仓库也提供了中文翻译版本,方便不习惯英文阅读的人。
6、 适合什么人
正在准备技术面试的开发者。不管是要刷题还是补基础,这个仓库都能用。数据结构的讲解适合从头学或者查漏补缺,代码题解适合写完自己的实现后对照参考。
这个仓库最后一次更新是 2018 年,但数据结构和算法本身不会过时。基础的东西就是这样,五年前和现在考的还是同一套。
次更新是 2018 年,但数据结构和算法本身不会过时。基础的东西就是这样,五年前和现在考的还是同一套。