今日做题家 – 面试算法题教程系列总纲

注意,本篇为算法教程系列的开篇文章,属于大纲。

本教程,会建立答疑群。目前群未建立,可以先加微信

距离上一次发布文章已经 70 多天了,中间诸多事宜,故成了 “咕咕大虾”。但作为终身学习者来讲,学习就如吃饭一样不可废弃。今天我想和大家分享的是关于如何系统学习面试方向算法题的知识。对于任何一门知识,如果想要深入,“系统” 二字必不可免,算法同样如此。目前主流应对面试向的算法学习是直接刷题,或按流行度或按标签。个人认为这种方式某些时候算得上有效,但却不能称之为高效,问题就在于 “不系统”。

那么什么叫做系统学习么叫做算法系统学习/strong>

在这里我假设你已经有了足够的学习动机。我们只讲讲算法学习的系统性。

  1. 将面试向算法当做一门计算机领域课程

  2. 严肃学习中掌握该课程的主要基础知识点

  3. 最后通过超纲训练来巩固、发散学习成果

算法的基础知识点不算太多,国内学校一般 64 学时就搞定了。而从知识领域来讲,算法属于数学加上编码的交叉领域,平时面试主要考察你以下两点能力:

  1. 数理逻辑思维能力(因此很多数学竞赛出身同学学算法优势很大)

  2. 根据思路快速写出代码的能力

对于数学逻辑思维能力的考察通常远远低于数学竞赛或高等数学的难度,并且基本都处在离散数学的领域中,比如图论、集合论、代数系统、组合数学等等(在信息竞赛领域有一种说法,面试向算法题的数学思维难度接近小学奥数难度,因此很多比赛厉害的都是初中、高中同学)。因此,对于面试向的算法系统学习,无需过多担心自己数学能力不足。而对于第二种能力,是从事本行业的基本功,唯手熟尔。

下面,我们详细解释下该如何锻炼上述两种能力:

  1. 基础学习过程中,自底向上进行抽象归纳

  2. 进阶提高中,自顶向下进行举例/关联

拿前端知识学习举个例子:比如你是react 的用户,要学习 Vue。你首先会对两者进行横向的对比学习。然后自底向上抽象在两个框架之上的知识(相通的或者不同的),接着对比其他 MVX 框架,抽象到整个客户端的技术架构,最后回归到原始软件工程的概念。在上述整个学习中,我们就分别利用了抽象归纳和举例关联的能力。

回归到面试向算法领域,该怎么掌握自底向上抽象归纳之后的知识点要分为两点操作:

  • 掌握算法课程当中的基础算法和模板

  • 将各类算法题目分类,比如动态规划中的 背包DP(选择问题);区间 DP(范围问题)等等

怎么锻炼自顶向下的举例/关联能力/p>

  • 能够记住基础知识的常见考察题目类型,看到题目能够分析出要考察什么知识点,如下图所示:

  1. 背诵模版 – 在理解算法思路的基础上,能够白板默写出模版

  2. 课后习题 – 应用模版,加强算法理解

  3. 锻炼模版熟练度 – 能够在2-3分钟内写完模版,通过重复写的方式锻炼(3-5次,亲测有效)

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34070 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月5日
下一篇 2021年8月5日

相关推荐