主题
界面
主题
算法题是独立的一条准备线:它不考「会不会 Java」,考「思维与手速」。 而它最容易失败的地方不是「题太难」,而是刷了忘、忘了刷。
★ 本节用工具算出两种策略的留存差距(简化遗忘模型,半衰期 7 天) ✓✓:
8 周、每天 3 道新题、目标 120 题:
只刷新题不复习 → 8 周后仍记得约 6 道(留存 5%)✗✗✗
新题 + 间隔复习 → 8 周后仍记得约 51 道(留存 43%)✓✓
(复习共 558 次,复习/新题 = 4.7 倍;任务最重的是第 5 周)★ 工具:python -X utf8 scripts/career/study_plan.py ✓
★ 算法题准备的两个真相 ✓✓:
| 真相 | 含义 |
|---|---|
| 面试算法题是「模式识别」测试 ✓ | 95% 的题可归入 10 来个模式(双指针/滑窗/二分/DFS/DP…) |
| 遗忘曲线决定了复习量 ✗✓ | 不复习 = 白刷(本节实测留存 5%) |
★★ 所以正确策略是:少数模式 × 反复复习,而不是无限新题 × 一遍过 ✓✓✓。
| 模式 | 特征信号 | 本知识库对应 |
|---|---|---|
| 双指针 / 滑动窗口 | 有序数组、子数组/子串 | 《基础算法:排序与二分查找》 ✓ |
| 二分查找 | 有序 + 找边界、答案单调 | 《基础算法:排序与二分查找》 ✓ |
| 链表操作 | 反转、环、合并 | 《数据结构:数组、链表、栈与队列》 ✓ |
| 栈 / 队列 | 括号、单调栈、BFS 层序 | 《数据结构:数组、链表、栈与队列》 ✓ |
| 哈希表 | 计数、去重、查找配对 | 《HashMap》 ✓ |
| 递归 / 回溯 | 全排列、子集、组合剪枝 | 《基础算法:排序与二分查找》 ✓ |
| 动态规划 | 最值、方案数、状态转移 | 《基础算法:排序与二分查找》 ✓ |
| 贪心 | 局部最优可证明 | 《基础算法:排序与二分查找》 ✓ |
★ 执行方式 ✓✓:一次只攻一个模式(一次 10-15 题) —— 同一模式连续做,才能在「模式内」形成手感;混着刷等于每道题都从零开始 ✓✓✓。
★ 8 周计划的实测负荷 ✓✓:
周次 | 新题 | 复习 | 合计 | 累计覆盖
第 1 周 | 21 | 30 | 51 | 21
第 3 周 | 21 | 81 | 102 | 63
第 5 周 | 21 | 99 | 120 | 105 ← **峰值周**
第 6 周 | 15 | 102 | 117 | 120
第 7 周 | 0 | 60 | 60 | 120★★ 三条读数 ✓✓✓:
策略 A:只刷新题不复习 → 学过 120 道,8 周后仍记得约 6 道(5%)✗✗✗
策略 B:新题 + 间隔复习 → 8 周后仍记得约 51 道(43%)✓✓
★ 多花 558 次复习,把留存从 5% 提到 43% —— **刷得多不如复习得对** ✓✓✓★ 模型说明(诚实标注)✓:留存按 e^(-λ·天数) 衰减(半衰期 7 天)、复习把留存重置为 1; 真实遗忘因人而异,但「数量级差距」的结论是稳的 ✓✓。
★ 为什么 B 也只有 43% ✓✓:最后两周学的题还没到复习日 —— 这正说明「计划的收尾要与面试时间对齐」:面试前 30 天应该完成新题,留出复习窗口 ✓✓✓。
每道题(无论做没做出来)写三行:
① 模式:这题属于哪个模式(考后能否归类)
② 卡点:卡在思路 / 边界 / 实现 / 复杂度
③ 下次怎么识别:题目里的什么信号让我想到这个模式 ✓✓✓★ 为什么有效 ✓✓:面试考的是「看到题 → 想到模式」的映射速度 —— 三行笔记练的正是这个映射 ✓✓✓。
① 澄清题意(30 秒):输入范围、边界、是否有序 —— **别急着写代码** ✓✓
② 举例子(30 秒):手推一个小例子,验证理解 ✓
③ 说复杂度(30 秒):先给暴力解与复杂度,再说优化(**面试官要看思考过程**)✓✓✓
④ 写代码 + 自测(10 分钟):命名清晰、边界处理、主动跑一遍小例子 ✓★ 常见失分点 ✗✗:沉默写代码(面试官看不到思考)、不澄清边界(写完发现理解错)、 不主动说复杂度(被认为「背过答案」)✓。
# 编辑 scripts/career/study_plan.py
TOTAL_QUESTIONS = 120 # 目标题量
NEW_PER_DAY = 3 # 每天新题(按你的真实时间定)
DAYS = 56 # 距离面试的周数峰值周(第 5 周)任务 120 道 → 两种调整:
① 把 NEW_PER_DAY 降到 2(总时长拉长,但峰值更平)✓
② 接受峰值,但提前把工作/生活排开 ✓
★ 千万不要「先不管,到时候再说」——**峰值周放弃 = 复习链断裂** ✓✓「刷了 300 道」(数字好看),但面试时连滑动窗口都写不顺 ✗✗
正解:进度看**留存**(能默写模板 + 能识别信号),不看数量 ✓✓✓工具:scripts/career/study_plan.py
运行:
python -X utf8 scripts/career/study_plan.py实测输出(节选):
===== 8 周刷题计划(120 题,每天 3 道新题,复习间隔 1/3/7/15/30 天)=====
第 5 周 | 21 | 99 | 120 | 105
第 8 周 | 0 | 39 | 39 | 120
合计:新题 120 道,复习 558 次(复习/新题 = 4.7 倍)
最重的周:第 5 周(120 道任务)—— **提前把这一周标出来** ✓✓
===== 两种策略的 8 周后留存(半衰期 7 天的简化模型)=====
策略 A:只刷新题不复习 → 学过 120 道,8 周后仍记得约 6 道(留存 5%)✗✗
策略 B:新题 + 间隔复习 → 学过 120 道,8 周后仍记得约 51 道(留存 43%)✓✓NEW_PER_DAY 从 3 改成 1:观察峰值周与总时长的变化 ✓✓✓;DAYS 从 56 改成 42(面试提前):观察新题是否来得及学完 ✓✓(结论:要么加量要么减题);INTERVALS 的后两个间隔(只复习到 7 天):观察留存下降 ✓✓;| # | 错误 | 说明 |
|---|---|---|
| 1 | 只刷新题不复习 ✗✗✗ | 实测留存 5% ✓✓ |
| 2 | 混着刷题(不做模式归类) ✗✗ | 每道题都从零开始,模式感建立不起来 ✓✓ |
| 3 | 面试前一周才开始冲量 ✗✗ | 遗忘曲线不给面子,复习链也断了 ✓ |
| 4 | 只看题解不动手 ✗✗ | 面试要手写,手感无法替代 ✓✓ |
| 5 | 沉默写代码 ✗✗ | 面试官看不到思考过程,直接扣分 ✓✓ |
| 6 | 硬编码边界(不澄清) ✗ | 理解错 = 白写 ✓ |
study_plan.py,生成自己的 8 周计划 ✓✓✓;验收方式:能默写 5 个以上模式的模板,并说出每个模式的识别信号;计划留存 ≥ 20%。
扩展任务:把「三行笔记」做成一张表(模式 / 卡点 / 信号),每周复盘一次分布 ✓✓
《系统设计题》 —— 把 《高并发系统设计》 的容量估算与架构方法搬进面试。
暂无