学习笔记 | 数据结构和算法 知识点思维导图

程序 = 数据结构 + 算法

一 数据结构知识点

学习笔记 | 数据结构和算法 知识点思维导图_第1张图片

01 队列和栈,需要了解它们的特点。

  • 队列是先进先出,栈是后进先出。

02 表

  • 表,包括很多种,有占用连续空间的数组、用指针链接的单向和双向链表,首尾相接的循环链表、以及散列表,也叫哈希表。

03 图

  • 图,在特定领域使用的比较多,例如路由算法中会经常使用到,图分为有向图、无向图及带权图,这部分需要掌握图的深度遍历和广度遍历算法,了解最短路径算法。

04 树的内容

  • 树一般用作查找与排序的辅助结构,剩下两个部分都和树有关,一个是二叉树,一个是多叉树。
  • 多叉树包括 B 树族,有 B 树、B+ 树、B* 树,比较适合用来做文件检索;另外一个是字典树,适合进行字符串的多模匹配。
  • 二叉树包括平衡二叉树、红黑树、哈夫曼树,以及堆,适合用于进行数据查找和排序。这部分需要了解二叉树的构建、插入、删除操作的实现,需要掌握二叉树的前序、中序、后序遍历。

二 算法知识点

学习笔记 | 数据结构和算法 知识点思维导图_第2张图片

  • 算法题的常用解题方法。需要掌握几种常用解题思路与方法,才能以不变应万变。这里讲一下:分治、动态规划、贪心、回溯和分支界定这五种常用的算法题解题方法,来看看它们分别适用于什么场景,如何应用。
  • 复杂度是衡量算法好坏的标准之一,我们需要掌握计算算法时间复杂度和空间复杂度的方法。计算时间复杂度的方法一般是找到执行次数最多的语句,然后计算语句执行次数的数量级,最后用大写 O 来表示结果。
  • 常用的字符串匹配算法,了解不同算法的匹配思路。
  • 排序也是经常考察的知识点,排序算法分为插入、交换、选择、归并、基数五类,其中快速排序和堆排序考察的频率最高,要重点掌握,需要能够手写算法实现。
  • 常用的查找算法,包括二分查找、二叉排序树、B 树、Hash、BloomFilter 等,需要了解它们的适用场景,例如二分查找适合小数量集内存查找,B 树适合文件索引,Hash 常数级的时间复杂度更适合对查找效率要求较高的场合,BloomFilter 适合对大数据集进行数据存在性过滤。

考察点和加分项

考察点

  • 了解基本数据结构及特点,例如数据结构中有哪些二叉树,这些树有哪些特点;
  • 要熟练掌握表、栈、队列、树,深刻理解不同类型实现的使用场景,例如红黑树适合用来做搜索,B+ 树适合用来做索引;
  • 要了解常用的搜索、排序算法,及复杂度和稳定性。特别是快速排序和堆排序的实现,要熟练掌握;
  • 要了解常用的字符串处理算法,和处理的思路,例如BM算法使用后缀匹配进行字符串匹配;
  • 要能够分析算法实现的复杂度,特别是时间复杂度,例如TopK问题的时间复杂度计算;
  • 要了解五种常用的解题方法,解决问题的思路和解决哪类问题,以及解题的步骤。

加分项

  • 能够将数据结构与实际使用场景结合,例如介绍红黑树时结合 TreeMap 的实现;介绍 B+ 树时结合 MySQL 中的索引实现等等;
  • 能知道不同算法在业务场景中有哪些应用,例如 TopK 算法在热门排序中的应用;
  • 面对模糊的题目能主动沟通确认条件和边界,例如前面介绍的括号匹配问题时列举的那些细节点,都可以跟面试官再次确认;
  • 在书写算法代码前,先讲一下解题思路,不要一上来埋头就写。一般解题思路存在问题时,面试官都会适当进行引导;
  • 能够发现解答中的一些问题,给出改进的思路。比如面试时由于时间关系,大家可能都会选择比较保守的解题思路,不一定就是最优解,这时可以在解答后,指出当前算法存在的一些问题,以及改进的思路。比如可以考虑使用多线程的方式来提高求解性能。

真题汇总 | 常见的面试真题

第一部分总结如下。

学习笔记 | 数据结构和算法 知识点思维导图_第3张图片

  • 第 1、2 题都是基础算法,必须要牢牢掌握,一些题目要记住递归与非递归的实现,例如树的遍历、快速排序等;
  • 类似第 5 题这样的对使用内存进行限制的题目,要考虑使用分治思想进行分解处理;
  • 第 6 题数组去重,可以有排序和 Hash 两种思路。

第二部分真题总结如下。

学习笔记 | 数据结构和算法 知识点思维导图_第4张图片

  • 第 9 题成语接龙,可以考虑使用深度优先搜索解决;
  • 第 10 题寻找两节点公共祖先,可以考虑通过递归与非递归两种方式实现。

你可能感兴趣的:(#,数据结构,刷题,面试,数据结构,算法)