MapFlow

PUBLIC LEARNING ROADMAP

数据结构与算法打牢与力扣刷题应用(测试开发方向) 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

32 个知识节点 · intermediate

发布者:zzj2

知识目录

补充知识

Python 基础语法复习

你已能写 Python,此节点快速回顾变量/循环/函数,作为后续所有实现的复用底盘

建议预留 30 分钟

学习目标

  • 确认 Python 控制流与函数语法可无卡点使用

关键概念

  • 变量与作用域
  • 条件/循环
  • 函数定义

为什么学习

  • 学习者已能使用 Python 编程,本节点仅做骨架回顾与查漏,无需重复精学

如何检验理解

  • 无需重学即能书写条件/循环/函数的简洁正确用例

核心技能

时间复杂度与大 O 记法

用大 O 描述随输入规模增长的时空复杂度,是评估被测系统与算法性能的核心基础

建议预留 40 分钟

学习目标

  • 掌握套路化推导时间与空间复杂度
  • 比较常见结构操作的平均/最坏复杂度

关键概念

  • 大 O 记法
  • 最好/平均/最坏情况
  • 空间复杂度

为什么学习

  • 复杂度分析是 required 且熟练的领域能力,用于定位被测系统性能瓶颈与提升测试效率,需真正理解本质

如何检验理解

  • 能对给定函数/被测代码正确写出时间与空间大 O 并给出推导

基础概念

Python 面向对象复习

回顾类/方法,用于后续自定义 Node、链表、树等结构化容器封装

建议预留 30 分钟

学习目标

  • 能熟练定义类并实现自定义结构封装

关键概念

  • 类与对象
  • 方法签名
  • 实例属性

为什么学习

  • 测试开发虽已有 OOP 经验,但链表/树等自建结构依赖类定义,需达到能按需封装的程度

如何检验理解

  • 能自主封装一个小类并正确使用其方法

核心技能

Python 内置序列 List 与 Tuple

列表索引/切片/增删改及复杂度,是数组类题与测试数据容器的主干

建议预留 40 分钟

学习目标

  • 熟练列表增删改与切片且能预判其 O(1)/O(n) 代价
  • 将数组思维迁移到测试数据批次组织

关键概念

  • 索引与切片
  • 就地 vs 复制
  • 操作复杂度

为什么学习

  • 数组/序列处理是 required 熟练能力并直接用于测试数据遍历,学习者已会基本语法,重点转向复杂度感知与模式应用

如何检验理解

  • 能运用列表切片与法操作在测试脚本中高效组织数据并说明复杂度

核心技能

Python 哈希容器 Dict 与 Set

字典/集合 O(1) 查找去重,支撑测试数据去重与断言语料快匹配

建议预留 45 分钟

学习目标

  • 掌握 dict/set 的 O(1) 平均访问与遍历
  • 应用到去重与快速断言语料匹配

关键概念

  • 哈希表语义
  • 成员判断
  • 字典键约束

为什么学习

  • 哈希查找去重是 required 熟练能力,测试中用于断言集合快速匹配与批量去重,需熟练并懂得判存在/不存在的边界

如何检验理解

  • 用 dict/set 在测试脚本中对大型结果集做 O(1) 去重与成员断言

核心技能

字符串操作技巧

拼接/查找/切片/反转等模式及性能,服务于测试数据的字符串校验与参数化

建议预留 30 分钟

学习目标

  • 掌握常用字符串处理模式及复杂度
  • 将字符串技巧用于响应解析与断言

关键概念

  • 切片与拼接开销
  • find/count/join
  • 反转与比较

为什么学习

  • 字符串高效处理对测试接口报文/响应断言至关重要,且是 required,需熟练到能直接落地脚本

如何检验理解

  • 能写出完成字符串反转/子串查找且不误用 O(n²) 拼接的实现

核心技能

自定义 Node 与单链表

头插/尾插/删除与遍历,为构造动态数据流与 LRU 类缓存模拟打底

建议预留 60 分钟

学习目标

  • 能手写 Node 类与链表增删改查
  • 理解指针引用的可变语义

关键概念

  • 节点与指针
  • 头插/尾插
  • 删除的引用处理

为什么学习

  • 链表是 recommended 熟练,且是栈/队/图等后续结构的概念基石,需能独立实现各操作

如何检验理解

  • 能完全用手写 Python 实现链表插入删除并处理空表/头尾边界

补充知识

哈希表原理与冲突处理

哈希函数/桶化/dict 底层结构,理解得以解释哈希复杂度退化与构造冲突反例

建议预留 45 分钟

学习目标

  • 认识到哈希冲突对复杂度的潜在影响

关键概念

  • 哈希函数
  • 冲突链/开地址
  • 退化

为什么学习

  • 测试开发以应用 dict/set 为主,关于其底层原理只需能识别会退化的成因,用于构造反例即可,不必深研

如何检验理解

  • 能解释为何病态输入会使哈希退化并借此构造压测数据

核心技能

双指针与滑动窗口技巧

首尾双指针或定长/可变窗口优化有序数组与子串问题,测试中用于区间与边界复查

建议预留 45 分钟

学习目标

  • 掌握双指针收敛与滑窗收缩条件
  • 将范式迁移到窗口数据比对与边界检测

关键概念

  • 快慢双指针
  • 可变窗口
  • 去重结合

为什么学习

  • 数组/字符串的滑动窗口与双指针是 required 熟练的常用范式,测试中用于校验连续窗口与有序边界,需能应用

如何检验理解

  • 无需提示即可在题中判断何时用双指针/滑窗并写出线性解

核心技能

力扣专题阶段刷题规划

建立按数据结构分专题、由易到难的刷题节奏,使每阶段学习都有练习闭环

建议预留 45 分钟

学习目标

  • 能按专题设计进阶刷题与复习计划
  • 建立自我检测与错题复盘流程

关键概念

  • 专题拆分
  • 难度递进
  • 复盘策略

为什么学习

  • 力扣刷题方法论是 required 熟练的软技能,站在规划层确定各专题如何配题推进即可,不涉及具体难题

如何检验理解

  • 能为本路径各专题制定由 easy 到 mid 的复习与配题清单

补充知识

双向链表与循环链表

带前驱指针与前/尾操作的变体链表,补全链表能力边界

建议预留 40 分钟

学习目标

  • 识别双向/循环链表结构与代价差异

关键概念

  • 前驱指针维护
  • 循环终止条件

为什么学习

  • 双向/循环链表在测试开发中是低频补充能力,用于理解缓存淘汰模型的特殊结构即可,无需精通实现

如何检验理解

  • 能看懂双向链表代码并说明其相对单链的代价

核心技能

栈 Stack 与单调应用

后进先出容器及其括号匹配、路径解析、单调栈场景,用于模拟调用栈测试

建议预留 50 分钟

学习目标

  • 掌握栈后进先出与单调栈应用
  • 能编写基于栈的表达式与括号验证

关键概念

  • 后进先出
  • 入栈出栈时机
  • 单调栈

为什么学习

  • 栈是 required 熟练结构且与测试的调用栈/括号/路径解析强相关,需能做常用应用与单调栈题

如何检验理解

  • 能用栈解决括号匹配并说明在调用栈/路径解析测试中的映射

核心技能

队列 Queue 与 deque

先进先出与 collections.deque,是 BFS 与滑动窗口双端操作的载体

建议预留 50 分钟

学习目标

  • 掌握 deque 双向 O(1) 结构与队列/栈语义
  • 理解其在 BFS/窗口的应用角色

关键概念

  • FIFO
  • 双向操作
  • 队与组测试层序

为什么学习

  • 队列为 BFS 与层序等提供必要载体,测试开发需能用 deque 高效完成先进先出与双向两端操作

如何检验理解

  • 能用 deque 实现队首/队尾 O(1) 操作并支撑 BFS 层序推进

核心技能

图的基本概念与存储

有向/无向图、邻接表/矩阵表示,为依赖分析与执行顺序规划建模

建议预留 45 分钟

学习目标

  • 掌握图的两种存储表示及取舍

关键概念

  • 邻接表 vs 矩阵
  • 有向/无向
  • 度与连通

为什么学习

  • 图为 recommended 入门能力,但依赖关系分析与测试执行顺序建模需要邻接表示的建模理解,需能读懂并建立小图

如何检验理解

  • 能为给定依赖集建立邻接表并回答可达/顺序问题

核心技能

递归基础与递归树

基准条件、调用栈与分治式递归,是树/回溯/分治的共同底座

建议预留 50 分钟

学习目标

  • 掌握递归结构与基准条件设计
  • 理解递归调用栈与潜在深度限制

关键概念

  • 基准条件
  • 调用栈
  • 递归展开

为什么学习

  • 递归是回溯(组合生成)与树遍历的根基,测试开发生成嵌套组合数据需理解调用栈与基准条件,做扎实理解

如何检验理解

  • 能写出正确含基准条件的递归并画出其调用与展开过程

核心技能

二分搜索与边界变种

有序序列 O(log n) 查找与左/右边界定位,用于边界检索与时间窗口

建议预留 50 分钟

学习目标

  • 掌握二分与左右边界不变量
  • 将二分迁移到窗口与有序判定场景

关键概念

  • 有序不变量
  • 边界合并/开区间
  • 死循环规避

为什么学习

  • 二分是 required 熟练的能力,测试中大量用于定位边界/时间窗口,需能吃透左闭右开与边界不变量避免死循环

如何检验理解

  • 能实现标准与二分找边界,且对全不命中/空集返回给测试人员解释清

核心技能

基于 List 的 O(n²) 排序

冒泡/插入/选择等基础排序的机制,作为分治排序的前置推导素材

建议预留 45 分钟

学习目标

  • 实现并能推导基础排序复杂度与稳定性质

关键概念

  • 稳定性
  • 内层扫描
  • 比较次数

为什么学习

  • 基础 O(n²) 排序是理解稳性/交换次数与实现快排归并的铺垫,学习者为验证有序性需会用并对比

如何检验理解

  • 能手写任一 O(n²) 排序并说明其交换/比较开销与稳定性

核心技能

二叉树与三序遍历

递归实现前中后序与层序,是组织测试用例层级结构建模的基础

建议预留 60 分钟

学习目标

  • 掌握递归化三序与层序遍历
  • 用树组织测试用例层级结构

关键概念

  • 递归遍历顺序
  • 层序队列
  • 空节点处理

为什么学习

  • 树遍历 required 熟练,测试中用于以层级组织用例树与递归判定,学习者应以能对任意树写出遍历代码为目标

如何检验理解

  • 能独立实现前中后层序并说明遍历顺序差异,用于层级用例建模

核心技能

图遍历 BFS 与 DFS

邻接表上用队/栈做深浅优先,服务于连通性与最短步数、依赖可达分析

建议预留 60 分钟

学习目标

  • 掌握 BFS 队列/DFS 栈或递归遍历模板

关键概念

  • visited 标记
  • 层序 BFS
  • 递归 DFS

为什么学习

  • BFS/DFS 承载依赖分析与执行顺序最小步数计算,作为 recommended 入门重点在于会用模板求解可达与连通

如何检验理解

  • 能在图上编写 BFS/DFS 求连通分量或最短步并用于测试路径规划

核心技能

分治法排序:归并与快排

merge/quick sort 的分治与 O(n log n) 推导及 Python sorted 特性,用于有序性比对底座

建议预留 60 分钟

学习目标

  • 实现归并/快排并分析 O(n log n) 与稳定性
  • 用它校验被测排序的正确性

关键概念

  • 分治划分子树
  • in-place vs 额外空间
  • 稳定归并

为什么学习

  • 快排/归并是 required 熟练的排序核心,测试需拿其对被测排序结果做参照与有序性比对的校验,要能实现并分析

如何检验理解

  • 手写归并与快排并能在测试中作为基准比对被测算法排序输出

核心技能

二叉搜索树 BST

有序树插入/查找/删除及其最坏退化,为组织有序用例与平衡考量服务

建议预留 60 分钟

学习目标

  • 掌握 BST 查找/插入逻辑
  • 认识退化为链表的风险

关键概念

  • 排序性质
  • 删除的双子树情形
  • 平衡退化

为什么学习

  • BST 提供有序数据的树式组织并触发平衡性分析直觉,测试开发需理解其查找语义与退化风险即可

如何检验理解

  • 能实现 BST 插入查找并说明有序插入如何导致退化

核心技能

回溯算法 Backtracking

递归逐层尝试回退,求组合/排列/子集,是组合测试用例宽覆盖生成的关键

建议预留 60 分钟

学习目标

  • 掌握回溯模板与剪枝
  • 用回溯生成组合覆盖测试数据

关键概念

  • 选择-撤销恢复路径
  • 剪枝
  • 去重

为什么学习

  • 回溯 recommended 熟练,组合/排列生成直接指测试组合覆盖,能用于构造全组合测试场景,需掌握模板并复用

如何检验理解

  • 用回溯生成组合/排列并在测试中用其构建组合覆盖用例

领域知识

随机与边界测试数据生成

结合哈希回与二分边界思想构造压力/极端/随机输入进行模糊测试

建议预留 60 分钟

学习目标

  • 设计边界与随机化测试输入生成器
  • 构造触发退化与极端输入的模糊用例

关键概念

  • 边界与等价扰动
  • 随机种子复现
  • 病态输入构造

为什么学习

  • 测试开发需用结构思想与随机算法生成边界/极端输入,将哈希与二分边界认知落到构造器,是独特应用价值点

如何检验理解

  • 能编写生成含边界、重复、随机与病态哈希输入的参数化数据脚本

核心技能

堆 Heap 与 heapq 优先队列

Python heapq 二叉堆的 push/pop/获取最值与 Top-K,配合性能/有序取舍

建议预留 50 分钟

学习目标

  • 用 heapq 实现堆与优先队列操作
  • 用堆解决 Top-K 类问题

关键概念

  • 堆有序性
  • heappush/pop
  • Top-K 于堆

为什么学习

  • 堆与优先队列支撑 Top-K 与 Dijkstra;测试开发常需用它做前 N 大结果校验与优先排序,作为排序能力延伸需会用

如何检验理解

  • 用 heapq 求解 Top-K 并说明与全排序的复杂度区别

核心技能

动态规划入门:记忆化递归

用 memo 缓存重叠子问题,将递归转为自顶向下 DP 理解状态转移

建议预留 60 分钟

学习目标

  • 识别重叠子问题
  • 用 memo 化求解经典入门 DP

关键概念

  • 重叠子问题
  • 记忆缓存
  • 最优子结构直觉

为什么学习

  • DP 是 recommended 入门,测试开发以能识别重叠子问题并用 memo 提速为准,侧重于理解而非全面题型训练

如何检验理解

  • 能用 memo 缓存改写暴力递归消除重复计算并解释状态语义

核心技能

测试用例设计方法论落地

将等价类/边界/组合覆盖与算法数据场景结合的用例设计,连接学到的结构到测试

建议预留 75 分钟

学习目标

  • 将结构与技巧转化为覆盖用例设计
  • 以边界与组合补全法来消除漏测

关键概念

  • 等价类划分
  • 边界值分析
  • 组合覆盖

为什么学习

  • 测试用例设计是 required 专家级能力,此处将回溯组合与边界思路转化为可执行覆盖策略,是对前面技巧的整合落地

如何检验理解

  • 能为待测算法用等价类/边界/组合覆盖设计出完整测试清单并说明覆盖度

核心技能

代码正确性验证与反例构造

用贪心反例、随机与断言定位算法缺陷,与测试思维双向强化

建议预留 70 分钟

学习目标

  • 学会为算法构造反例证伪
  • 用断言与对照定位实现缺陷

关键概念

  • 反例设计
  • assert 与对照
  • 差分测试

为什么学习

  • 通过反例与断言语义高效发现算法错误是 required 专家软技能,需理解如何针对贪心/分治找反例与用随机核对实现

如何检验理解

  • 能给贪心程序构造反例或用暴力对照定位被测算法 bug

补充知识

最短路径与优先队列扩展

Dijkstra 与优先队列求带权最短路,作为图算法能力与排序延伸的补全

建议预留 50 分钟

学习目标

  • 认识带权最短路与堆优化思路

关键概念

  • 松弛边
  • 优先队列
  • 已定最短路标记

为什么学习

  • Dijkstra 对测试开发是低频补充,最短路径建模在多版本耦合分析中偶用,识别其思想并用 heapq 解一题即可,不深入变体

如何检验理解

  • 能实现基础 Dijkstra 求解单源最短路并说明堆优化背景

补充知识

DP 进阶:自底向上与状态设计

二维 DP、状态转移方程与常见子序列/背包类入门的趋势把握

建议预留 70 分钟

学习目标

  • 掌握状态转移方程的组织
  • 识别并解典型二维 DP 入门题

关键概念

  • 状态与转移
  • 边界初始化
  • 滚动/二维 dp

为什么学习

  • DP 为 recommended 入门,自底向上状态设计只需做到能用通见题的转移即可,识别适用场景即可不必覆盖整个题面全集

如何检验理解

  • 能将经典子序列/背包问题转化为二维状态转移并写出自底向上解

核心技能

被测算法逻辑测试脚本开发

将算法与数据理解落为可执行 pytest 脚本,自动化验证被测逻辑正确性

建议预留 90 分钟

学习目标

  • 将算法知识脚本化为可运行 pytest
  • 集边界与随机输入验证被测逻辑

关键概念

  • pytest 参数化
  • 断言与夹具
  • 可复现随机

为什么学习

  • 把数据结构与算法能力编码化为自动化 Python 测试是 required 熟练能力,为路径最终落地目标之一,需完整写脚本运行验证

如何检验理解

  • 能为被测算法编写含边界/对照/断言的全套 pytest 用例并幂等运行通过

补充知识

贪心算法与经典问题

掌握贪心局部最优策略适用性的判断,用于构造最大化覆盖等测试场景

建议预留 40 分钟

学习目标

  • 掌握判断贪心是否适用的准则
  • 与反例验证能力相联动

关键概念

  • 局部最优全局最优
  • 贪心选择性质
  • 失效反例

为什么学习

  • 贪心 recommended 入门,测试开发重点是辨认贪心适用条件而非追求难题,理解 '贪心需证明' 即可连到反例构造

如何检验理解

  • 能说明贪心的适用条件并给简单反例说明其失效边界

核心技能

算法综合与高频刷题收束

综合运用各类结构与算法解高频风格题,逼近被测逻辑自动校验的真实测试需求

建议预留 120 分钟

学习目标

  • 综合运用多结构解综合应用题
  • 在解题中让测试与算法思维互验

关键概念

  • 多结构协同
  • 场景建模
  • 测试视角复验

为什么学习

  • 作为路径收束,测试开发需综合运用所学解综合题并孵化测试思维,是本主题达标的能力整合点,需实际多练

如何检验理解

  • 能独立完成混合考察的高频题并设计方案化的测试断言覆盖其多分支

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。