程序员必须掌握哪些算法?

从程序员面试角度,说说面试时需要掌握的算法有哪些。

具体的请看下面列表。不过,如果是准备面试的话,我建议你通过做题来巩固这些算法知识。这里推荐你到 http://www.lintcode.com 上面进行 Online Judge,以下类别的面试题目都有覆盖到。

准备之前可以先了解一下《入职大厂必备的算法知识(Java语境)》,帮你节省65%准备时间。

算法部分

二分搜索 Binary Search 
分治 Divide Conquer 
宽度优先搜索 Breadth First Search 
深度优先搜索 Depth First Search
回溯法 Backtracking 
双指针 Two Pointers 
动态规划 Dynamic Programming 
扫描线 Scan-line algorithm
快排 Quick Sort

数据结构部分

栈 Stack
队列 Queue
链表 Linked List 
数组 Array 
哈希表 Hash Table
二叉树 Binary Tree  
堆 Heap
并查集 Union Find
字典树 Trie

可能会有朋友说这些算法覆盖得太少,他都“基本掌握”了。需要做以下几点补充说明。

  1. 我在这里总结的是程序面试必须掌握的算法知识。所以选择的是最常面试到的算法内容。面试与做研究不同,不会要求那些极少用到而又及其高深的算法。

  2. 有的人觉得自己“基本掌握”了,但如果真的让他来做两道题,他也许花很长的时间都写不出来完整的答案。甚至即使做出来了,还会有非常多的bug。在面试中,一个题目一般只有30-45分钟的时间可以让你作答,而且要求bug free。如果你做不到这样,那就不可以说自己“基本掌握”。

  3. 以上的算法知识点,看起来很少,真正掌握、吃透,是要花很长时间的。个人觉得与其泛泛地了解一些算法知识的皮毛,不如深入地把以上面试、工作中最常用到的算法知识吃透。

最后,祝大家跳槽升职都顺顺利利!

展开阅读全文

没有更多推荐了,返回首页

应支付0元
点击重新获取
扫码支付

支付成功即可阅读