“题海战术”需要花费大量的时间,也需要很大的兴趣和毅力。学习算法的过程中,我走了很多弯路,希望通过这门课将我的刷题笔记和多年修炼经验分享给你,帮你在 300 分钟内学会如何去思考和分析算法问题以及提升自己的算法水平,为算法面试做好最充分的准备 工作常用的数据结构和求职常考的算法。
为什么面试官都喜欢问算法和数据结构?
因为算法和数据结构最能体现一个人的基本功。基本功扎实的人,无论是做工程还是去做算法,都不会差到哪里去。招人的时候都有一个标准:招进来的这个人至少要排到团队里面前 50%。只有这样招进来的人才能够让团队更加强大。不可能招一个很差的人来拉低平均水平……怎么评判这个人能够在团队里面排到前 50% 呢?其实是有很多标准的,包括逻辑思维能力、系统设计能力、职业素养,等等,而算法数据结构是里面最基础最重要的一个。
我自己也非常看重候选人的解题思路,以及能将思路迅速地变成代码的能力,比如我喜欢问一些二叉树相关的题目,这些问题的解答体现了面试者对基本数据结构的熟练程度以及分析算法复杂度的能力。
拉勾对 1000 多名技术求职者进行调研,结果如下图,90% 以上的人表示面试时都被考察过数据结构与算法。这门大学计算机的基础学科,在职场里再也不是 60 分万岁。平时疏于学习和思考,只能在公司做最底层的 CRUD(开发人员),恶性循环,难有出头之日。
数据结构与算法能力的考核在以 BAT 为代表的国内大厂,乃至硅谷高科技公司的面试里占了相当大的比重。总结起来,考察的原因有四:
算法能力能够准确辨别一个程序员的技术功底是否扎实;
算法能力是发掘程序员的学习能力与成长潜力的关键手段;
算法能力能够协助判断程序员在面对新问题时,分析并解决问题的能力;
算法能力是设计一个高性能系统的必备基础。
数据结构和算法对工作的影响
如果你问,不会数据结构和算法,对工作有没有什么影响吗?我觉得肯定是有的。
首先,要知道程序员这个群体也是有金字塔结构的。如果连基本的算法和数据结构都不会,你基本上就属于比较底层的程序员。底层就意味着低薪酬。付出同样时长的脑力劳动,你赚得就比别人少。
其次,作为团队里的一员,很多时候你不光要做好自己的本职工作,也要和其他团队进行技术问题上的沟通,如果你没有扎实的算法和数据结构知识,很难在技术方面及时地发现问题所在并提出独到的见解。
另外,技术栈本身每天都在变化,同时也会随着不同行业不同公司变化。这种情况下,能否快速适应新技术和环境就显得尤为重要。这就要求你学好以不变应万变的的算法思维、逻辑思维能力。
如何快速提升算法能力,获得大厂青睐
结合拉勾 40万 研发相关岗位标准大数据、力扣(LeetCode)海量大厂面试算法题库及我多年算法实战经验,三方合力打磨出了这门算法课,旨在帮你在 300 分钟内快速绘制出数据结构与算法的重点知识体系,并辅以 35 道来自顶级互联网大厂的精选高频面试真题为你深度剖析算法每个考察点与解题思路。
课程由 4 部分组成:
- 第一部分是实用的数据结构,包括数组、字符串、链表、队列、树、栈、队列、图、前缀树、分段树和树状数组等;
- 第二部分讲面试中所有的常用算法,比如如何使用归并、快排、拓扑,如何二分查找、递归、回溯,以及广度与深度优先、动态规划等;
- 第三部分优选力扣(LeetCode) 高频算法面试真题,进行全面剖析,通过实操来提升自己的面试能力;
- 最后一部分,我也将会分享一些关于简历的制作、力扣(LeetCode)模拟面试、面试技巧经验、以及面试官所看重的那些软实力、如何提高印象分等内容,帮你冲刺心仪的高薪 Offer。
- 可以看到,除了分享数据结构基础、算法解题思路,课程中还会讲一些算法面试的通用方法:比如怎么分析题目、难题如何解、不会怎么办,如何提高印象分等等,为什么呢?
比如说,作为技术面试官,我喜欢看到候选人在分析问题的时候能准确地把握住考点,提出各种问题和我探讨,并给出各种解决问题的方案、剖析它们的利弊。但总会遇到一些候选人在听完题目之后立即开始写代码,缺乏与我交流的过程,导致发挥失常,不知道如何应对算法题目,浪费了大量的时间,错失机会。
那么,这门课程我就介绍完了。从下节课开始,我会先来讲解算法面试中常用的数据结构和技巧,帮助你为学好后续课程打下一个坚实的基础。