phase 6 part 2: per-week related-topics sections (gen_week_topics.py), week14/15/16 adjustments from BOSS research, README/CONTRIBUTING updates

This commit is contained in:
Shikui Wang committed 2026-10-23 17:00:50 +08:00
1 parent 5b1a7a430f
commit 4f12b8b2ba
22 files changed
+588 -18

No files matched your search

+1
View File
@@ -13,3 +13,4 @@ phase5c done (backend mongodb/elasticsearch/data-pipeline/nodejs)
phase5d done (java-spring awareness, k8s, run_examples java support) phase5d done (java-spring awareness, k8s, run_examples java support)
phase5 done: all 43 stacks pass --strict (cs algorithms/network-os/web-security added) phase5 done: all 43 stacks pass --strict (cs algorithms/network-os/web-security added)
phase6a done (8 cross scenarios) phase6a done (8 cross scenarios)
phase6 done: week topics generator, week14 了解级扩展, week15 应聘材料, week16 CS/algorithms, README links; run_examples 64 pass / 0 fail / 12 skip
+3 -1
View File
@@ -12,7 +12,8 @@ zhuangang/
├── schema/frontmatter.schema.json ├── schema/frontmatter.schema.json
├── tools/ ├── tools/
│ ├── build_catalog.py # 校验 + 生成 catalog.json │ ├── build_catalog.py # 校验 + 生成 catalog.json
│ ├── run_examples.py # 运行示例代码 │ ├── gen_week_topics.py # 根据 week 字段生成周计划的“本周相关专题”
│ ├── run_examples.py # 运行示例代码(Python / Go / TypeScript / 单文件 Java)
│ └── check_sensitive.py # 提交前脱敏检查(第 8 周建立) │ └── check_sensitive.py # 提交前脱敏检查(第 8 周建立)
├── plan/ # 16 周学习计划(日程),链接到专题,不重复讲概念 ├── plan/ # 16 周学习计划(日程),链接到专题,不重复讲概念
│ ├── README.md # 总纲 │ ├── README.md # 总纲
@@ -129,6 +130,7 @@ order: 2
```bash ```bash
python3 tools/build_catalog.py # 校验并更新 catalog.json python3 tools/build_catalog.py # 校验并更新 catalog.json
python3 tools/gen_week_topics.py # 修改了 week 字段时,重新生成周计划的“本周相关专题”
python3 tools/run_examples.py # 运行示例(可加关键词只跑部分,例如 redis) python3 tools/run_examples.py # 运行示例(可加关键词只跑部分,例如 redis)
python3 tools/check_sensitive.py # 脱敏检查(如果已经按第 8 周装好钩子,会自动执行) python3 tools/check_sensitive.py # 脱敏检查(如果已经按第 8 周装好钩子,会自动执行)
``` ```
+4 -3
View File
@@ -8,7 +8,7 @@
| --- | --- | | --- | --- |
| 按 16 周计划一步步学 | [plan/README.md](plan/README.md)(总纲、进度记录),每周文件链接到对应专题 | | 按 16 周计划一步步学 | [plan/README.md](plan/README.md)(总纲、进度记录),每周文件链接到对应专题 |
| 单独补某个技术栈 | [topics/index.md](topics/index.md)(43 个技术栈,分后端、DevOps、Python、AI、前端、计算机基础六个领域:课程、场景、面试题、示例) | | 单独补某个技术栈 | [topics/index.md](topics/index.md)(43 个技术栈,分后端、DevOps、Python、AI、前端、计算机基础六个领域:课程、场景、面试题、示例) |
| 看企业里的综合方案 | [scenarios/index.md](scenarios/index.md)(客服知识库、工单、审批流、秒杀、多租户……) | | 看企业里的综合方案 | [scenarios/index.md](scenarios/index.md)(8 个跨栈场景:客服知识库、工单、审批流 + 人工介入、报表 Agent、秒杀、多租户 SaaS、内容审核、数据同步) |
| 看岗位要求和调研 | [plan/README.md 第 4 节](plan/README.md)(岗位要求对照、延伸技术栈)、[research/](research/index.md)(2026-10-23 BOSS直聘北京约 34 个岗位的调研记录) | | 看岗位要求和调研 | [plan/README.md 第 4 节](plan/README.md)(岗位要求对照、延伸技术栈)、[research/](research/index.md)(2026-10-23 BOSS直聘北京约 34 个岗位的调研记录) |
| 准备面试 | 每个技术栈目录下的 `interview.md`(基础 / 进阶 / 场景题,带参考答案和追问) | | 准备面试 | 每个技术栈目录下的 `interview.md`(基础 / 进阶 / 场景题,带参考答案和追问) |
| 写新内容 / 做学习平台 | [CONTRIBUTING.md](CONTRIBUTING.md)(目录、frontmatter、各类型写法)、`catalog.json`(自动生成的内容目录) | | 写新内容 / 做学习平台 | [CONTRIBUTING.md](CONTRIBUTING.md)(目录、frontmatter、各类型写法)、`catalog.json`(自动生成的内容目录) |
@@ -20,7 +20,7 @@ plan/ 16 周日程(type: week),链接到专题,不重复讲概念
research/ 岗位调研记录(type: research),只记录实际看到的内容 research/ 岗位调研记录(type: research),只记录实际看到的内容
topics/ 专项学习:<领域>/<技术栈>/{index.md, NN-课程.md, scenarios/, interview.md, examples/} topics/ 专项学习:<领域>/<技术栈>/{index.md, NN-课程.md, scenarios/, interview.md, examples/}
scenarios/ 跨技术栈的企业服务场景 scenarios/ 跨技术栈的企业服务场景
tools/ build_catalog.py(校验 + 生成目录)、run_examples.py(运行示例)、check_sensitive.py(脱敏检查) tools/ build_catalog.py(校验 + 生成目录)、gen_week_topics.py(生成周计划的“本周相关专题”)、run_examples.py(运行示例)、check_sensitive.py(脱敏检查)
schema/ frontmatter 的 JSON Schema schema/ frontmatter 的 JSON Schema
catalog.json 内容目录(由 tools/build_catalog.py 生成,不要手改) catalog.json 内容目录(由 tools/build_catalog.py 生成,不要手改)
``` ```
@@ -30,7 +30,8 @@ catalog.json 内容目录(由 tools/build_catalog.py 生成,不要手改)
## 常用命令 ## 常用命令
```bash ```bash
python3 tools/build_catalog.py # 校验所有内容并更新 catalog.json python3 tools/build_catalog.py # 校验所有内容并更新 catalog.json(--strict:每个技术栈都要有课程、场景、面试题)
python3 tools/gen_week_topics.py # 根据 week 字段重新生成各周的“本周相关专题”
python3 tools/run_examples.py redis # 运行某个技术栈的示例代码 python3 tools/run_examples.py redis # 运行某个技术栈的示例代码
python3 tools/check_sensitive.py --self-test python3 tools/check_sensitive.py --self-test
``` ```
+32 -7
View File
@@ -8015,6 +8015,7 @@
"第 5 天:分层:model / store / handler", "第 5 天:分层:model / store / handler",
"第 6 天:中间件和接口测试", "第 6 天:中间件和接口测试",
"第 7 天:配置、优雅关机、接前端", "第 7 天:配置、优雅关机、接前端",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8048,6 +8049,7 @@
"第 5 天:密码哈希和 JWT", "第 5 天:密码哈希和 JWT",
"第 6 天:注册、登录、鉴权中间件", "第 6 天:注册、登录、鉴权中间件",
"第 7 天:配置切换、接口测试、集成测试、收尾", "第 7 天:配置切换、接口测试、集成测试、收尾",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8085,6 +8087,7 @@
"第 5 天:消息队列入门(Redis Streams),了解 RabbitMQ / Kafka", "第 5 天:消息队列入门(Redis Streams),了解 RabbitMQ / Kafka",
"第 6 天:Docker、Compose、Nginx", "第 6 天:Docker、Compose、Nginx",
"第 7 天:部署到服务器 + CI + 收尾", "第 7 天:部署到服务器 + CI + 收尾",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8117,6 +8120,7 @@
"第 5 天:pydantic 和配置", "第 5 天:pydantic 和配置",
"第 6 天:httpx 异步请求、重试、测试替身", "第 6 天:httpx 异步请求、重试、测试替身",
"第 7 天:FastAPI(Uvicorn、依赖注入、中间件、鉴权、生命周期、SSE)", "第 7 天:FastAPI(Uvicorn、依赖注入、中间件、鉴权、生命周期、SSE)",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8151,6 +8155,7 @@
"第 5 天:FastAPI 接口和流式输出", "第 5 天:FastAPI 接口和流式输出",
"第 6 天:命令行、接入真实模型、人工试验", "第 6 天:命令行、接入真实模型、人工试验",
"第 7 天:整理、README、复盘", "第 7 天:整理、README、复盘",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8185,6 +8190,7 @@
"第 5 天:缓存、配置组装、多轮对话接口", "第 5 天:缓存、配置组装、多轮对话接口",
"第 6 天:LangChain 对照实现 + Milvus / pgvector", "第 6 天:LangChain 对照实现 + Milvus / pgvector",
"第 7 天:Docker Compose 部署 + 复盘", "第 7 天:Docker Compose 部署 + 复盘",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8223,6 +8229,7 @@
"第 5 天:构建工具和性能优化", "第 5 天:构建工具和性能优化",
"第 6 天:SSR 基础(Nuxt / Next.js)", "第 6 天:SSR 基础(Nuxt / Next.js)",
"第 7 天:前端 CI、构建产物部署、复盘", "第 7 天:前端 CI、构建产物部署、复盘",
"本周相关专题",
"本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求)" "本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求)"
] ]
}, },
@@ -8252,6 +8259,7 @@
"第 5 天:接口职责表", "第 5 天:接口职责表",
"第 6 天:把流程画成状态机,并用代码验证思路", "第 6 天:把流程画成状态机,并用代码验证思路",
"第 7 天:阶段 1 验收 + 口述初稿", "第 7 天:阶段 1 验收 + 口述初稿",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8279,6 +8287,7 @@
"第 5 天:E 与业务系统集成", "第 5 天:E 与业务系统集成",
"第 6 天:补写和打磨案例卡", "第 6 天:补写和打磨案例卡",
"第 7 天:汇总设计输入", "第 7 天:汇总设计输入",
"本周相关专题",
"本周自查清单" "本周自查清单"
] ]
}, },
@@ -8309,7 +8318,8 @@
"第 4 天:MCP 概念 + 写一个 MCP 服务", "第 4 天:MCP 概念 + 写一个 MCP 服务",
"第 5 天:在 Cursor 和自己的 Agent 里用 MCP", "第 5 天:在 Cursor 和自己的 Agent 里用 MCP",
"第 6 天:真实模型试跑 + 对照文档(上半)", "第 6 天:真实模型试跑 + 对照文档(上半)",
"第 7 天:M1 验收" "第 7 天:M1 验收",
"本周相关专题"
] ]
}, },
{ {
@@ -8340,7 +8350,8 @@
"第 4 天:组装图 + 测试", "第 4 天:组装图 + 测试",
"第 5 天:MCP 工具接入 LangGraph + 命令行", "第 5 天:MCP 工具接入 LangGraph + 命令行",
"第 6 天:真实模型试跑和调提示词", "第 6 天:真实模型试跑和调提示词",
"第 7 天:对照文档 + M2 验收" "第 7 天:对照文档 + M2 验收",
"本周相关专题"
] ]
}, },
{ {
@@ -8372,7 +8383,8 @@
"第 4 天:后台运行器(RunManager)和报告", "第 4 天:后台运行器(RunManager)和报告",
"第 5 天:FastAPI 接口和 SSE", "第 5 天:FastAPI 接口和 SSE",
"第 6 天:页面 + 崩溃恢复演示", "第 6 天:页面 + 崩溃恢复演示",
"第 7 天:走查 + M3 验收" "第 7 天:走查 + M3 验收",
"本周相关专题"
] ]
}, },
{ {
@@ -8402,7 +8414,8 @@
"第 3 天:可观测性(回调、LangSmith / Langfuse)", "第 3 天:可观测性(回调、LangSmith / Langfuse)",
"第 4 天:文档(架构、设计取舍、映射表)", "第 4 天:文档(架构、设计取舍、映射表)",
"第 5 天:README、Docker、从零验证、讲解稿", "第 5 天:README、Docker、从零验证、讲解稿",
"第 6~7 天:Dify / Coze 体验(低代码平台)" "第 6~7 天:Dify / Coze 体验(低代码平台)",
"本周相关专题"
] ]
}, },
{ {
@@ -8419,7 +8432,15 @@
"docker", "docker",
"nginx", "nginx",
"linux", "linux",
"cicd" "cicd",
"elasticsearch",
"mongodb",
"k8s",
"data-pipeline",
"nodejs",
"java-spring",
"network-os",
"web-security"
], ],
"tags": [], "tags": [],
"level": null, "level": null,
@@ -8440,6 +8461,8 @@
"第 5 天:把三个项目部署到一台服务器", "第 5 天:把三个项目部署到一台服务器",
"第 6 天:CI/CD——测试、构建镜像、自动部署", "第 6 天:CI/CD——测试、构建镜像、自动部署",
"第 7 天(可选):用 Go 写一个鉴权网关", "第 7 天(可选):用 Go 写一个鉴权网关",
"本周相关专题",
"第 7 天(调整):了解级扩展——ES、MongoDB、K8s、数据管道、Node.js、Java、计算机基础",
"本周验收" "本周验收"
] ]
}, },
@@ -8469,7 +8492,8 @@
"第 4 天:工作经历——3 条 STAR", "第 4 天:工作经历——3 条 STAR",
"第 5 天:针对岗位调整简历(关键词对照)", "第 5 天:针对岗位调整简历(关键词对照)",
"第 6 天:口述稿和演示视频", "第 6 天:口述稿和演示视频",
"第 7 天:自查、请人审阅、阶段 4(上)验收" "第 7 天:自查、请人审阅、阶段 4(上)验收",
"本周相关专题"
] ]
}, },
{ {
@@ -8496,7 +8520,8 @@
"第 4 天:项目深挖和系统设计", "第 4 天:项目深挖和系统设计",
"第 5 天:模拟面试和抽题练习", "第 5 天:模拟面试和抽题练习",
"第 6 天:终点验收", "第 6 天:终点验收",
"第 7 天:开始投递,建立复盘循环" "第 7 天:开始投递,建立复盘循环",
"本周相关专题"
] ]
}, },
{ {
+11 -3
View File
@@ -104,9 +104,17 @@ stack: []
| 11 | 项目三 M2:LangGraph 多 Agent 编排、MCP 工具接入 | LangGraph 版跑通 | `week11-agent-m2-langgraph.md` | | 11 | 项目三 M2:LangGraph 多 Agent 编排、MCP 工具接入 | LangGraph 版跑通 | `week11-agent-m2-langgraph.md` |
| 12 | 项目三 M3:检查点续跑、interrupt 人机协作、后台作业 + 租约、SSE、长期记忆 | 可演示崩溃恢复 | `week12-agent-m3-persistence.md` | | 12 | 项目三 M3:检查点续跑、interrupt 人机协作、后台作业 + 租约、SSE、长期记忆 | 可演示崩溃恢复 | `week12-agent-m3-persistence.md` |
| 13 | 项目三 M4:评测集、可观测性、文档和映射表、Docker + Dify / Coze 体验 | 项目三完成 | `week13-agent-m4-eval-lowcode.md` | | 13 | 项目三 M4:评测集、可观测性、文档和映射表、Docker + Dify / Coze 体验 | 项目三完成 | `week13-agent-m4-eval-lowcode.md` |
| 14 | 后端补强:RabbitMQ / Kafka、gRPC、Redis 和 MySQL 面试专题、全部项目部署、CI/CD、(可选)Go 网关 | `backend-extend/`、`deploy/` | `week14-backend-extend-deploy.md` | | 14 | 后端补强:RabbitMQ / Kafka、gRPC、Redis 和 MySQL 面试专题、全部项目部署、CI/CD;第 7 天了解级扩展(ES 混合检索、数据管道、K8s、MongoDB、Node.js、Java、网络 / 安全基础);(可选)Go 网关 | `backend-extend/`、`deploy/`、`notes/extend.md` | `week14-backend-extend-deploy.md` |
| 15 | 阶段 4(上):作品集、简历、STAR 经历、口述稿 | `career/` | `week15-package-resume.md` | | 15 | 阶段 4(上):1~2 个代表项目(链接 / 截图 / 视频 / 负责范围)、从问题到上线案例、AI 编程 + 验证案例(附脱敏会话记录)、简历、STAR、口述稿 | `career/` | `week15-package-resume.md` |
| 16 | 阶段 4(下):面试笔记、模拟面试、终点验收、投递 | 开始投递 | `week16-interview.md` | | 16 | 阶段 4(下):面试笔记、算法与计算机基础、8 个跨栈场景练系统设计、模拟面试、终点验收、投递 | 开始投递 | `week16-interview.md` |
**依据 BOSS直聘 2026-10-23 调研的调整**(详见第 4 节):
- Go 保持约 3 周(第 1~3 周)不再加码:34 个有效岗位中 Go 只有 2 个是硬性要求;Python / Agent / RAG 和作品集是重点。
- **AI 编程练习从第 1 周开始**:每周至少一个功能用 AI 编程工具完成并保存验证证据,第 15 周整理成应聘案例(每个周计划文件的“本周相关专题”一节都有这条)。
- 第 14 周第 7 天改为了解级扩展(ES、数据管道、K8s、MongoDB、Node.js、Java、网络 / 安全);算法和计算机基础在第 16 周。
- 第 15 周按招聘方要求的应聘材料准备:代表项目的链接 / 截图 / 视频 / 负责范围、从问题到上线的案例、AI 编程案例和质量控制方式。
- 每个周计划文件末尾的“本周相关专题”由 `tools/gen_week_topics.py` 自动生成,链接到 `topics/` 和 `scenarios/`。
精力不够时可以整体拉长,但顺序不要变,也不要跳过验收。 精力不够时可以整体拉长,但顺序不要变,也不要跳过验收。
+17
View File
@@ -1228,6 +1228,23 @@ cd frontend && npm install && npm run dev
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [AI 编程工具与验证](../topics/ai/ai-coding/index.md) | 课程:[AI 编程工具工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) |
| [Gin Web 框架](../topics/backend/gin/index.md) | 课程:[路由、参数绑定和校验](../topics/backend/gin/01-routing-binding.md);[面试题](../topics/backend/gin/interview.md) |
| [Go 语言](../topics/backend/go/index.md) | 课程:[语法、类型和接口(对照 TypeScript)](../topics/backend/go/01-basics-types.md);课程:[错误处理和并发](../topics/backend/go/02-errors-concurrency.md);课程:[测试和工程化](../topics/backend/go/03-testing-engineering.md);[面试题](../topics/backend/go/interview.md) |
| [Git](../topics/devops/git/index.md) | 课程:[分支模型和提交规范](../topics/devops/git/01-branch-commit.md) |
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 会用 `:=`、切片、map、结构体、方法、接口 - [ ] 会用 `:=`、切片、map、结构体、方法、接口
+17
View File
@@ -1271,6 +1271,23 @@ TEST_DATABASE_URL=postgres://todo:todo@localhost:5432/todo?sslmode=disable go te
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Gin Web 框架](../topics/backend/gin/index.md) | 课程:[中间件、JWT 鉴权和统一错误处理](../topics/backend/gin/02-middleware-auth.md);场景:[企业后台接口规范](../topics/backend/gin/scenarios/unified-api-response.md);[面试题](../topics/backend/gin/interview.md) |
| [Go 语言](../topics/backend/go/index.md) | 课程:[测试和工程化](../topics/backend/go/03-testing-engineering.md) |
| [MySQL](../topics/backend/mysql/index.md) | 课程:[InnoDB 索引](../topics/backend/mysql/01-index-explain.md);课程:[事务、隔离级别、MVCC 和锁(行锁、间隙锁、死锁)](../topics/backend/mysql/02-tx-locks-mvcc.md);场景:[大表深分页和历史数据](../topics/backend/mysql/scenarios/deep-pagination.md);[面试题](../topics/backend/mysql/interview.md) |
| [PostgreSQL](../topics/backend/postgresql/index.md) | 课程:[表设计和 SQL](../topics/backend/postgresql/01-schema-sql.md);课程:[索引、EXPLAIN、事务、隔离级别和 MVCC](../topics/backend/postgresql/02-index-tx-mvcc.md);场景:[订单状态机](../topics/backend/postgresql/scenarios/order-state-audit.md);[面试题](../topics/backend/postgresql/interview.md) |
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 会建表、加约束,会设计一对多和多对多 - [ ] 会建表、加约束,会设计一对多和多对多
+23
View File
@@ -845,6 +845,29 @@ jobs:
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Gin Web 框架](../topics/backend/gin/index.md) | 课程:[中间件、JWT 鉴权和统一错误处理](../topics/backend/gin/02-middleware-auth.md);场景:[企业后台接口规范](../topics/backend/gin/scenarios/unified-api-response.md);[面试题](../topics/backend/gin/interview.md) |
| [Go 语言](../topics/backend/go/index.md) | 课程:[错误处理和并发](../topics/backend/go/02-errors-concurrency.md);课程:[测试和工程化](../topics/backend/go/03-testing-engineering.md);场景:[批量调用第三方接口](../topics/backend/go/scenarios/batch-third-party-calls.md);[面试题](../topics/backend/go/interview.md) |
| [消息队列(RabbitMQ / Kafka)](../topics/backend/mq/index.md) | 课程:[RabbitMQ](../topics/backend/mq/01-rabbitmq.md);课程:[可靠性](../topics/backend/mq/03-reliability.md) |
| [PostgreSQL](../topics/backend/postgresql/index.md) | 课程:[索引、EXPLAIN、事务、隔离级别和 MVCC](../topics/backend/postgresql/02-index-tx-mvcc.md);场景:[订单状态机](../topics/backend/postgresql/scenarios/order-state-audit.md) |
| [Redis](../topics/backend/redis/index.md) | 课程:[数据结构和常用命令](../topics/backend/redis/01-data-structures.md);课程:[缓存模式](../topics/backend/redis/02-cache-patterns.md);课程:[分布式锁和限流](../topics/backend/redis/03-lock-ratelimit.md);[面试题](../topics/backend/redis/interview.md) |
| [CI/CD](../topics/devops/cicd/index.md) | 课程:[流水线设计](../topics/devops/cicd/01-pipeline.md) |
| [Docker 与 Compose](../topics/devops/docker/index.md) | 课程:[镜像和 Dockerfile](../topics/devops/docker/01-image-dockerfile.md);课程:[Compose、网络和数据卷](../topics/devops/docker/02-compose-network-volume.md);场景:[一条命令拉起开发环境](../topics/devops/docker/scenarios/compose-dev-env.md);[面试题](../topics/devops/docker/interview.md) |
| [Nginx](../topics/devops/nginx/index.md) | 课程:[反向代理、负载均衡和静态资源](../topics/devops/nginx/01-proxy-static.md) |
**跨技术栈场景**:[秒杀 / 高并发抢购](../scenarios/flash-sale.md)、[工单系统](../scenarios/ticket-system.md)
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 权限在后端 service 层判断,有测试;能讲清 401 / 403 / 404 的选择 - [ ] 权限在后端 service 层判断,有测试;能讲清 401 / 403 / 404 的选择
+16
View File
@@ -861,6 +861,22 @@ uv run pytest -v
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [asyncio 异步编程](../topics/python/asyncio/index.md) | 课程:[协程、任务和事件循环](../topics/python/asyncio/01-coroutines-tasks.md);课程:[并发控制](../topics/python/asyncio/02-concurrency-control.md);[面试题](../topics/python/asyncio/interview.md) |
| [FastAPI](../topics/python/fastapi/index.md) | 课程:[路由和参数校验](../topics/python/fastapi/01-routing-validation.md);课程:[依赖注入、鉴权、中间件和统一错误处理](../topics/python/fastapi/02-deps-auth-errors.md);[面试题](../topics/python/fastapi/interview.md) |
| [Python 语言](../topics/python/python/index.md) | 课程:[给 JS 开发者的 Python](../topics/python/python/01-syntax-for-js.md);课程:[类型标注、dataclass、异常和上下文管理器、pytest](../topics/python/python/02-typing-errors-testing.md);课程:[工程化](../topics/python/python/03-project-packaging.md);场景:[订单对账脚本](../topics/python/python/scenarios/order-reconciliation.md);[面试题](../topics/python/python/interview.md) |
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 会用 uv,知道 pip / venv / poetry 的对应关系 - [ ] 会用 uv,知道 pip / venv / poetry 的对应关系
+20
View File
@@ -1406,6 +1406,26 @@ uv run ruff check . && uv run pyright src && uv run pytest -v
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [提示词与上下文工程](../topics/ai/prompt-engineering/index.md) | 课程:[提示词结构、少样本、结构化输出和提示词版本管理](../topics/ai/prompt-engineering/01-prompt-structured-output.md);[面试题](../topics/ai/prompt-engineering/interview.md) |
| [RAG 检索增强生成](../topics/ai/rag/index.md) | 课程:[RAG 流水线和文档切分](../topics/ai/rag/01-pipeline-chunking.md);场景:[带权限的企业知识库问答](../topics/ai/rag/scenarios/permission-aware-kb.md);[面试题](../topics/ai/rag/interview.md) |
| [向量数据库](../topics/ai/vector-db/index.md) | 课程:[向量检索原理](../topics/ai/vector-db/01-ann-metrics.md);课程:[向量库选型和 pgvector 实战](../topics/ai/vector-db/02-selection-pgvector.md);[面试题](../topics/ai/vector-db/interview.md) |
| [asyncio 异步编程](../topics/python/asyncio/index.md) | 课程:[并发控制](../topics/python/asyncio/02-concurrency-control.md);场景:[并发调用多个模型和外部接口](../topics/python/asyncio/scenarios/concurrent-llm-calls.md) |
| [FastAPI](../topics/python/fastapi/index.md) | 课程:[依赖注入、鉴权、中间件和统一错误处理](../topics/python/fastapi/02-deps-auth-errors.md);课程:[流式输出(SSE)、生命周期、测试和部署](../topics/python/fastapi/03-streaming-testing.md);场景:[大模型对话 API](../topics/python/fastapi/scenarios/streaming-chat-api.md);[面试题](../topics/python/fastapi/interview.md) |
**跨技术栈场景**:[客服知识库问答](../scenarios/customer-service-kb.md)
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 能画出 RAG 两条流水线,讲清向量和余弦相似度 - [ ] 能画出 RAG 两条流水线,讲清向量和余弦相似度
+21
View File
@@ -1196,6 +1196,27 @@ docker compose restart api && curl localhost:8000/documents # 重启后数据
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [LangChain](../topics/ai/langchain/index.md) | 课程:[LangChain 1.x](../topics/ai/langchain/01-lcel-structured-agent.md);场景:[工单自动分类服务](../topics/ai/langchain/scenarios/ticket-triage.md);[面试题](../topics/ai/langchain/interview.md) |
| [RAG 检索增强生成](../topics/ai/rag/index.md) | 课程:[检索优化](../topics/ai/rag/02-hybrid-rerank.md);课程:[生成与评测](../topics/ai/rag/03-generation-eval.md);场景:[带权限的企业知识库问答](../topics/ai/rag/scenarios/permission-aware-kb.md);[面试题](../topics/ai/rag/interview.md) |
| [向量数据库](../topics/ai/vector-db/index.md) | 课程:[向量库选型和 pgvector 实战](../topics/ai/vector-db/02-selection-pgvector.md);场景:[多租户知识库的向量索引](../topics/ai/vector-db/scenarios/multi-tenant-index.md);[面试题](../topics/ai/vector-db/interview.md) |
| [Elasticsearch](../topics/backend/elasticsearch/index.md) | 课程:[Elasticsearch](../topics/backend/elasticsearch/01-search-basics-hybrid.md);场景:[知识库混合检索](../topics/backend/elasticsearch/scenarios/kb-search-sync.md) |
| [Redis](../topics/backend/redis/index.md) | 课程:[缓存模式](../topics/backend/redis/02-cache-patterns.md) |
| [Docker 与 Compose](../topics/devops/docker/index.md) | 课程:[镜像和 Dockerfile](../topics/devops/docker/01-image-dockerfile.md);课程:[Compose、网络和数据卷](../topics/devops/docker/02-compose-network-volume.md) |
**跨技术栈场景**:[客服知识库问答](../scenarios/customer-service-kb.md)、[数据同步](../scenarios/data-sync.md)、[多租户 SaaS](../scenarios/multi-tenant-saas.md)
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 评测集 ≥ 30 条(含拒答题),会算 Hit@K、MRR、拒答准确率 - [ ] 评测集 ≥ 30 条(含拒答题),会算 Hit@K、MRR、拒答准确率
+24
View File
@@ -1650,6 +1650,30 @@ pnpm lint && pnpm typecheck && pnpm test && pnpm build
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Node.js(了解级)](../topics/backend/nodejs/index.md) | 课程:[Node.js 后端(了解级)](../topics/backend/nodejs/01-express-nest-basics.md) |
| [Web 安全基础](../topics/cs/web-security/index.md) | 课程:[Web 安全基础](../topics/cs/web-security/01-xss-csrf-sqli-cors-ssrf.md);[面试题](../topics/cs/web-security/interview.md) |
| [CI/CD](../topics/devops/cicd/index.md) | 课程:[流水线设计](../topics/devops/cicd/01-pipeline.md) |
| [Nginx](../topics/devops/nginx/index.md) | 课程:[反向代理、负载均衡和静态资源](../topics/devops/nginx/01-proxy-static.md);课程:[HTTPS、SSE / WebSocket、限流和灰度](../topics/devops/nginx/02-https-stream-limit.md);场景:[AI 应用网关](../topics/devops/nginx/scenarios/ai-gateway-sse-canary.md);[面试题](../topics/devops/nginx/interview.md) |
| [前端测试与性能](../topics/frontend/fe-testing-perf/index.md) | 课程:[前端测试](../topics/frontend/fe-testing-perf/01-testing-pyramid.md);课程:[前端性能](../topics/frontend/fe-testing-perf/02-web-vitals.md);场景:[性能治理](../topics/frontend/fe-testing-perf/scenarios/perf-regression.md);[面试题](../topics/frontend/fe-testing-perf/interview.md) |
| [React](../topics/frontend/react/index.md) | 课程:[React 渲染机制、Hooks 规则、状态管理和 React 19 新特性](../topics/frontend/react/01-hooks-rendering.md);场景:[长任务界面](../topics/frontend/react/scenarios/long-task-ui.md);[面试题](../topics/frontend/react/interview.md) |
| [SSR(Nuxt / Next.js)](../topics/frontend/ssr/index.md) | 课程:[渲染模式](../topics/frontend/ssr/01-rendering-modes.md);课程:[Next.js App Router](../topics/frontend/ssr/02-nextjs-app-router.md);场景:[帮助中心 + 智能客服](../topics/frontend/ssr/scenarios/help-center.md);[面试题](../topics/frontend/ssr/interview.md) |
| [TypeScript](../topics/frontend/typescript/index.md) | 课程:[TypeScript 类型系统进阶](../topics/frontend/typescript/01-type-system.md);场景:[前后端类型契约](../topics/frontend/typescript/scenarios/api-contract.md);[面试题](../topics/frontend/typescript/interview.md) |
| [Vite](../topics/frontend/vite/index.md) | 课程:[Vite 8](../topics/frontend/vite/01-dev-build-config.md);场景:[老项目从 webpack 迁移到 Vite](../topics/frontend/vite/scenarios/webpack-to-vite.md);[面试题](../topics/frontend/vite/interview.md) |
| [Vue 3](../topics/frontend/vue/index.md) | 课程:[Vue 3 响应式原理、组合式函数、Pinia 和性能优化](../topics/frontend/vue/01-reactivity-composition.md);场景:[AI 对话界面](../topics/frontend/vue/scenarios/ai-chat-stream.md);[面试题](../topics/frontend/vue/interview.md) |
| [webpack](../topics/frontend/webpack/index.md) | 课程:[webpack 5](../topics/frontend/webpack/01-build-optimization.md);场景:[大型项目构建慢、包体积大](../topics/frontend/webpack/scenarios/build-speed.md);[面试题](../topics/frontend/webpack/interview.md) |
<!-- week-topics:end -->
## 本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求) ## 本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求)
- [ ] pnpm monorepo、workspace 依赖、幽灵依赖 - [ ] pnpm monorepo、workspace 依赖、幽灵依赖
+15
View File
@@ -499,6 +499,21 @@ python3 notes/state_machine_demo.py # 把上面的代码存成这个文件
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [AI 编程工具与验证](../topics/ai/ai-coding/index.md) | 课程:[AI 编程工具工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md);课程:[验证 AI 产出](../topics/ai/ai-coding/02-verify-evidence.md);场景:[团队引入 AI 编程](../topics/ai/ai-coding/scenarios/ai-assisted-feature.md) |
| [Git](../topics/devops/git/index.md) | 课程:[分支模型和提交规范](../topics/devops/git/01-branch-commit.md);课程:[合并、变基和撤销](../topics/devops/git/02-merge-rebase-recovery.md);场景:[线上紧急修复和密钥误提交](../topics/devops/git/scenarios/hotfix-and-leaked-secret.md) |
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] `notes/00-inventory.md`:目标、模块清单、A~E 自评 - [ ] `notes/00-inventory.md`:目标、模块清单、A~E 自评
+10
View File
@@ -543,6 +543,16 @@ python3 notes/experiments/e_integration.py
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
<!-- week-topics:end -->
## 本周自查清单 ## 本周自查清单
- [ ] 5 个实验脚本都跑过,能讲清每个实验演示了什么 - [ ] 5 个实验脚本都跑过,能讲清每个实验演示了什么
+20
View File
@@ -1039,3 +1039,23 @@ uv run ruff check . && uv run pyright src && uv run pytest -v
- [ ] 自己的 Agent 能动态加载 MCP 工具 - [ ] 自己的 Agent 能动态加载 MCP 工具
- [ ] 能讲清 MCP 和 Function Calling 的关系 - [ ] 能讲清 MCP 和 Function Calling 的关系
- [ ] 在总纲进度表勾掉第 10 周 - [ ] 在总纲进度表勾掉第 10 周
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Agent 设计](../topics/ai/agent-design/index.md) | 课程:[Agent 推理模式](../topics/ai/agent-design/01-react-planning.md) |
| [AI 编程工具与验证](../topics/ai/ai-coding/index.md) | 课程:[AI 编程工具工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) |
| [Function Calling 工具调用](../topics/ai/function-calling/index.md) | 课程:[工具调用原理](../topics/ai/function-calling/01-tool-loop.md);场景:[让 Agent 安全地调用内部业务接口](../topics/ai/function-calling/scenarios/safe-business-tools.md);[面试题](../topics/ai/function-calling/interview.md) |
| [模型侧基础(了解级)](../topics/ai/llm-serving/index.md) | 课程:[模型侧基础](../topics/ai/llm-serving/01-routing-vllm-lora.md) |
| [MCP 模型上下文协议](../topics/ai/mcp/index.md) | 课程:[MCP 协议和服务开发](../topics/ai/mcp/01-protocol-server.md);场景:[企业内部 MCP 服务](../topics/ai/mcp/scenarios/internal-tools-gateway.md);[面试题](../topics/ai/mcp/interview.md) |
**跨技术栈场景**:[报表生成 Agent](../scenarios/report-agent.md)
<!-- week-topics:end -->
+20
View File
@@ -802,3 +802,23 @@ uv run ruff check . && uv run pyright src && uv run pytest -v
- [ ] MCP 工具接入了 LangGraph - [ ] MCP 工具接入了 LangGraph
- [ ] 能讲清 State、节点、条件边、reducer,以及和手写版的对应关系 - [ ] 能讲清 State、节点、条件边、reducer,以及和手写版的对应关系
- [ ] 在总纲进度表勾掉第 11 周 - [ ] 在总纲进度表勾掉第 11 周
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Agent 设计](../topics/ai/agent-design/index.md) | 课程:[Agent 推理模式](../topics/ai/agent-design/01-react-planning.md);课程:[上下文工程、Skills、多 Agent 和 A2A](../topics/ai/agent-design/02-context-skills-multiagent.md);场景:[运营报表 Agent](../topics/ai/agent-design/scenarios/report-agent.md);[面试题](../topics/ai/agent-design/interview.md) |
| [LangChain](../topics/ai/langchain/index.md) | 课程:[LangChain 1.x](../topics/ai/langchain/01-lcel-structured-agent.md);场景:[工单自动分类服务](../topics/ai/langchain/scenarios/ticket-triage.md);[面试题](../topics/ai/langchain/interview.md) |
| [LangGraph](../topics/ai/langgraph/index.md) | 课程:[LangGraph 状态图](../topics/ai/langgraph/01-state-graph.md);[面试题](../topics/ai/langgraph/interview.md) |
| [MCP 模型上下文协议](../topics/ai/mcp/index.md) | 课程:[MCP 协议和服务开发](../topics/ai/mcp/01-protocol-server.md);场景:[企业内部 MCP 服务](../topics/ai/mcp/scenarios/internal-tools-gateway.md);[面试题](../topics/ai/mcp/interview.md) |
| [提示词与上下文工程](../topics/ai/prompt-engineering/index.md) | 课程:[提示词注入和防护](../topics/ai/prompt-engineering/02-context-injection.md) |
**跨技术栈场景**:[审批流 + 人工介入的 Agent](../scenarios/approval-human-in-loop.md)、[工单系统](../scenarios/ticket-system.md)
<!-- week-topics:end -->
+20
View File
@@ -1140,3 +1140,23 @@ uv run ruff check . && uv run pyright src && uv run pytest -v
- [ ] 6 个走查场景符合预期 - [ ] 6 个走查场景符合预期
- [ ] 能讲清:两层状态、为什么编排不能放在浏览器里、什么时候停下来问人、怎么防双跑、长期记忆写什么不写什么 - [ ] 能讲清:两层状态、为什么编排不能放在浏览器里、什么时候停下来问人、怎么防双跑、长期记忆写什么不写什么
- [ ] 在总纲进度表勾掉第 12 周 - [ ] 在总纲进度表勾掉第 12 周
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [LangGraph](../topics/ai/langgraph/index.md) | 课程:[检查点、人机协作和异常恢复](../topics/ai/langgraph/02-persistence-hitl.md);场景:[退款工单 Agent](../topics/ai/langgraph/scenarios/refund-approval.md);[面试题](../topics/ai/langgraph/interview.md) |
| [React](../topics/frontend/react/index.md) | 场景:[长任务界面](../topics/frontend/react/scenarios/long-task-ui.md) |
| [Vue 3](../topics/frontend/vue/index.md) | 场景:[AI 对话界面](../topics/frontend/vue/scenarios/ai-chat-stream.md) |
| [asyncio 异步编程](../topics/python/asyncio/index.md) | 课程:[并发控制](../topics/python/asyncio/02-concurrency-control.md);场景:[并发调用多个模型和外部接口](../topics/python/asyncio/scenarios/concurrent-llm-calls.md) |
| [FastAPI](../topics/python/fastapi/index.md) | 课程:[流式输出(SSE)、生命周期、测试和部署](../topics/python/fastapi/03-streaming-testing.md);场景:[大模型对话 API](../topics/python/fastapi/scenarios/streaming-chat-api.md) |
**跨技术栈场景**:[审批流 + 人工介入的 Agent](../scenarios/approval-human-in-loop.md)
<!-- week-topics:end -->
+22
View File
@@ -590,3 +590,25 @@ git clone https://github.com/langgenius/dify.git && cd dify/docker && cp .env.ex
- [ ] 架构图和 README 一致;测试、ruff、pyright 通过;脱敏检查完成 - [ ] 架构图和 README 一致;测试、ruff、pyright 通过;脱敏检查完成
- [ ] Dify 或 Coze 至少搭过一个知识库应用和一个工作流,写了对比笔记 - [ ] Dify 或 Coze 至少搭过一个知识库应用和一个工作流,写了对比笔记
- [ ] 在总纲进度表勾掉第 13 周和“阶段 3”,填上“项目三路径:`zhuangang/agent-mini/`” - [ ] 在总纲进度表勾掉第 13 周和“阶段 3”,填上“项目三路径:`zhuangang/agent-mini/`”
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Agent 设计](../topics/ai/agent-design/index.md) | 课程:[上下文工程、Skills、多 Agent 和 A2A](../topics/ai/agent-design/02-context-skills-multiagent.md);场景:[运营报表 Agent](../topics/ai/agent-design/scenarios/report-agent.md);[面试题](../topics/ai/agent-design/interview.md) |
| [Agent 评测与运维](../topics/ai/agent-ops/index.md) | 课程:[Agent 评测和质量门禁](../topics/ai/agent-ops/01-eval-quality-gate.md);课程:[Agent 可观测性、成本和延迟](../topics/ai/agent-ops/02-observability-cost.md);场景:[客服 Agent 上线流程](../topics/ai/agent-ops/scenarios/agent-quality-gate.md);[面试题](../topics/ai/agent-ops/interview.md) |
| [模型侧基础(了解级)](../topics/ai/llm-serving/index.md) | 课程:[模型侧基础](../topics/ai/llm-serving/01-routing-vllm-lora.md);场景:[公司级大模型网关](../topics/ai/llm-serving/scenarios/multi-provider-gateway.md);[面试题](../topics/ai/llm-serving/interview.md) |
| [低代码 AI 平台(Dify / Coze)](../topics/ai/lowcode/index.md) | 课程:[Dify / Coze 低代码 AI 平台](../topics/ai/lowcode/01-dify-coze.md);场景:[从 Dify 原型到生产](../topics/ai/lowcode/scenarios/poc-to-production.md);[面试题](../topics/ai/lowcode/interview.md) |
| [提示词与上下文工程](../topics/ai/prompt-engineering/index.md) | 课程:[提示词注入和防护](../topics/ai/prompt-engineering/02-context-injection.md);场景:[读邮件的办公助手](../topics/ai/prompt-engineering/scenarios/injection-defense.md);[面试题](../topics/ai/prompt-engineering/interview.md) |
| [Docker 与 Compose](../topics/devops/docker/index.md) | 课程:[Compose、网络和数据卷](../topics/devops/docker/02-compose-network-volume.md);场景:[一条命令拉起开发环境](../topics/devops/docker/scenarios/compose-dev-env.md) |
| [Nginx](../topics/devops/nginx/index.md) | 场景:[AI 应用网关](../topics/devops/nginx/scenarios/ai-gateway-sse-canary.md) |
**跨技术栈场景**:[内容审核](../scenarios/content-moderation.md)、[客服知识库问答](../scenarios/customer-service-kb.md)、[多租户 SaaS](../scenarios/multi-tenant-saas.md)、[报表生成 Agent](../scenarios/report-agent.md)
<!-- week-topics:end -->
+54 -1
View File
@@ -3,7 +3,7 @@ id: plan.week14
title: "第 14 周:后端补强——消息队列、gRPC、Redis / MySQL 专题、全部项目部署、CI/CD" title: "第 14 周:后端补强——消息队列、gRPC、Redis / MySQL 专题、全部项目部署、CI/CD"
type: week type: week
domain: plan domain: plan
stack: [go, mysql, redis, mq, grpc-microservices, docker, nginx, linux, cicd] stack: [go, mysql, redis, mq, grpc-microservices, docker, nginx, linux, cicd, elasticsearch, mongodb, k8s, data-pipeline, nodejs, java-spring, network-os, web-security]
week: [14] week: [14]
est_hours: 12 est_hours: 12
order: 14 order: 14
@@ -17,6 +17,8 @@ order: 14
**原则**:每个专题做到“能跑一个最小例子 + 能用自己的话回答面试题”,不深挖源码。Go 网关是**可选**内容,时间不够直接跳过(见总纲第 6 节)。 **原则**:每个专题做到“能跑一个最小例子 + 能用自己的话回答面试题”,不深挖源码。Go 网关是**可选**内容,时间不够直接跳过(见总纲第 6 节)。
**根据 BOSS直聘 2026-10-23 调研的调整**:Go 只有 2 个岗位是硬性要求,所以 Go 网关继续保持可选;调研中出现的 ES 混合检索、MongoDB、K8s、数据管道、Node.js、Java(各有若干岗位提到)以及计算机基础,放到下面的“第 7 天(调整)”做**了解级**扩展:每项跑通专题里的示例、读完面试题,不做项目。
**本周环境**(2026-10 实际验证):RabbitMQ 4.0、Redis 7 以上、MySQL 8(我在 MariaDB 11.8 上跑过同样的 SQL,`EXPLAIN` 的主要列相同)、Python 3.12 + aio-pika 9 / redis-py / PyMySQL / grpcio 1.84、Go 1.27。 **本周环境**(2026-10 实际验证):RabbitMQ 4.0、Redis 7 以上、MySQL 8(我在 MariaDB 11.8 上跑过同样的 SQL,`EXPLAIN` 的主要列相同)、Python 3.12 + aio-pika 9 / redis-py / PyMySQL / grpcio 1.84、Go 1.27。
**参考资料** **参考资料**
@@ -1539,11 +1541,62 @@ JWT_SECRET=$(openssl rand -hex 32) UPSTREAM=http://127.0.0.1:8100 go run .
--- ---
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),第 15 周整理成“AI 编程 + 验证方法”的应聘案例。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [模型侧基础(了解级)](../topics/ai/llm-serving/index.md) | 场景:[公司级大模型网关](../topics/ai/llm-serving/scenarios/multi-provider-gateway.md) |
| [数据管道基础](../topics/backend/data-pipeline/index.md) | 课程:[数据管道基础](../topics/backend/data-pipeline/01-batch-stream-reliability.md);场景:[第三方平台订单同步](../topics/backend/data-pipeline/scenarios/third-party-sync.md);[面试题](../topics/backend/data-pipeline/interview.md) |
| [Elasticsearch](../topics/backend/elasticsearch/index.md) | 课程:[Elasticsearch](../topics/backend/elasticsearch/01-search-basics-hybrid.md);场景:[知识库混合检索](../topics/backend/elasticsearch/scenarios/kb-search-sync.md);[面试题](../topics/backend/elasticsearch/interview.md) |
| [gRPC 与微服务](../topics/backend/grpc-microservices/index.md) | 课程:[gRPC 和 Protobuf](../topics/backend/grpc-microservices/01-grpc-proto.md);课程:[服务治理](../topics/backend/grpc-microservices/02-governance.md);场景:[单体拆分](../topics/backend/grpc-microservices/scenarios/monolith-split.md);[面试题](../topics/backend/grpc-microservices/interview.md) |
| [Java / Spring Boot(了解级)](../topics/backend/java-spring/index.md) | 课程:[Java / Spring Boot(了解级)](../topics/backend/java-spring/01-java-spring-awareness.md);场景:[Python Agent 调用公司已有的 Java 业务系统](../topics/backend/java-spring/scenarios/call-java-service.md);[面试题](../topics/backend/java-spring/interview.md) |
| [MongoDB](../topics/backend/mongodb/index.md) | 课程:[MongoDB 基础](../topics/backend/mongodb/01-document-model.md);场景:[AI 客服会话存储](../topics/backend/mongodb/scenarios/conversation-store.md);[面试题](../topics/backend/mongodb/interview.md) |
| [消息队列(RabbitMQ / Kafka)](../topics/backend/mq/index.md) | 课程:[RabbitMQ](../topics/backend/mq/01-rabbitmq.md);课程:[Kafka](../topics/backend/mq/02-kafka.md);课程:[可靠性](../topics/backend/mq/03-reliability.md);场景:[订单超时自动取消](../topics/backend/mq/scenarios/delayed-order-cancel.md);[面试题](../topics/backend/mq/interview.md) |
| [MySQL](../topics/backend/mysql/index.md) | 课程:[事务、隔离级别、MVCC 和锁(行锁、间隙锁、死锁)](../topics/backend/mysql/02-tx-locks-mvcc.md);课程:[运维与扩展](../topics/backend/mysql/03-ops-scale.md);场景:[大表深分页和历史数据](../topics/backend/mysql/scenarios/deep-pagination.md);[面试题](../topics/backend/mysql/interview.md) |
| [Node.js(了解级)](../topics/backend/nodejs/index.md) | 课程:[Node.js 后端(了解级)](../topics/backend/nodejs/01-express-nest-basics.md);场景:[用 Node.js 给 AI 应用做 BFF](../topics/backend/nodejs/scenarios/ai-bff.md);[面试题](../topics/backend/nodejs/interview.md) |
| [Redis](../topics/backend/redis/index.md) | 课程:[分布式锁和限流](../topics/backend/redis/03-lock-ratelimit.md);场景:[抢购库存预扣](../topics/backend/redis/scenarios/stock-reservation.md);[面试题](../topics/backend/redis/interview.md) |
| [网络与操作系统基础](../topics/cs/network-os/index.md) | 课程:[网络基础](../topics/cs/network-os/01-http-tcp.md);课程:[操作系统基础](../topics/cs/network-os/02-os-basics.md);场景:[线上连接问题排查](../topics/cs/network-os/scenarios/connection-troubleshooting.md);[面试题](../topics/cs/network-os/interview.md) |
| [Web 安全基础](../topics/cs/web-security/index.md) | 课程:[Web 安全基础](../topics/cs/web-security/01-xss-csrf-sqli-cors-ssrf.md);场景:[AI 客服上线前的安全评审](../topics/cs/web-security/scenarios/ai-app-security.md);[面试题](../topics/cs/web-security/interview.md) |
| [CI/CD](../topics/devops/cicd/index.md) | 课程:[发布与回滚](../topics/devops/cicd/02-release-rollback.md);场景:[多语言仓库的流水线](../topics/devops/cicd/scenarios/multi-lang-pipeline.md);[面试题](../topics/devops/cicd/interview.md) |
| [Docker 与 Compose](../topics/devops/docker/index.md) | 场景:[一条命令拉起开发环境](../topics/devops/docker/scenarios/compose-dev-env.md);[面试题](../topics/devops/docker/interview.md) |
| [Kubernetes 基础](../topics/devops/k8s/index.md) | 课程:[Kubernetes 基础](../topics/devops/k8s/01-core-objects.md);场景:[AI Agent 服务上 K8s](../topics/devops/k8s/scenarios/agent-rollout.md);[面试题](../topics/devops/k8s/interview.md) |
| [Linux 运维基础](../topics/devops/linux/index.md) | 课程:[常用命令](../topics/devops/linux/01-commands.md);课程:[线上排查](../topics/devops/linux/02-troubleshooting.md);场景:[线上故障排查](../topics/devops/linux/scenarios/incident-troubleshooting.md);[面试题](../topics/devops/linux/interview.md) |
| [Nginx](../topics/devops/nginx/index.md) | 课程:[HTTPS、SSE / WebSocket、限流和灰度](../topics/devops/nginx/02-https-stream-limit.md);场景:[AI 应用网关](../topics/devops/nginx/scenarios/ai-gateway-sse-canary.md);[面试题](../topics/devops/nginx/interview.md) |
**跨技术栈场景**:[内容审核](../scenarios/content-moderation.md)、[数据同步](../scenarios/data-sync.md)、[秒杀 / 高并发抢购](../scenarios/flash-sale.md)、[多租户 SaaS](../scenarios/multi-tenant-saas.md)、[报表生成 Agent](../scenarios/report-agent.md)、[工单系统](../scenarios/ticket-system.md)
<!-- week-topics:end -->
## 第 7 天(调整):了解级扩展——ES、MongoDB、K8s、数据管道、Node.js、Java、计算机基础
> 依据 BOSS直聘 2026-10-23 调研新增。时间有限时按顺序做,前 3 项优先(与 RAG / Agent 项目关系最紧);Go 网关(上面的可选第 7 天)放到时间富余时再做。
| 顺序 | 内容 | 用时 | 做什么 | 专题 |
| --- | --- | --- | --- | --- |
| 1 | ES 混合检索 | 1.5 小时 | 跑通 `es_hybrid.py`(BM25 + kNN + RRF + 别名切换),对比第 6 周自己写的 BM25 | [Elasticsearch](../topics/backend/elasticsearch/index.md) |
| 2 | 数据管道 | 1 小时 | 读懂并运行 `incremental-sync`(水位线、限流、重试、幂等、质量检查),想清楚项目二的文档同步怎么改造 | [数据管道](../topics/backend/data-pipeline/index.md) |
| 3 | K8s 基础 | 1 小时 | 读懂 `agent-api` 清单,用 kubeconform 校验;有条件用 kind / minikube 部署一次 | [Kubernetes](../topics/devops/k8s/index.md) |
| 4 | MongoDB | 45 分钟 | 单节点副本集 + `mongo_demo.py`(建模、ESR 索引、事务、变更流) | [MongoDB](../topics/backend/mongodb/index.md) |
| 5 | Node.js / Java | 45 分钟 | Express BFF 示例跑测试;`java OrderDemo.java` 跑一次,能读懂 Spring Boot 分层 | [Node.js](../topics/backend/nodejs/index.md)、[Java](../topics/backend/java-spring/index.md) |
| 6 | 计算机基础 | 1 小时 | 网络(粘包、多路复用示例)和 Web 安全(`secure-api` 13 个攻击测试);算法放到第 16 周 | [网络与操作系统](../topics/cs/network-os/index.md)、[Web 安全](../topics/cs/web-security/index.md) |
### 完成标准
- 上表每项的示例都在本机运行过(或写明为什么没有运行,例如没有 K8s 集群),每个专题的面试题能用自己的话回答“基础”部分。
- `notes/extend.md` 记录每项“我能讲清楚的 3 句话”。
## 本周验收 ## 本周验收
- [ ] RabbitMQ、gRPC、Redis、MySQL 四组测试在本机全部通过(连接对应服务,不是跳过) - [ ] RabbitMQ、gRPC、Redis、MySQL 四组测试在本机全部通过(连接对应服务,不是跳过)
- [ ] `notes/mq.md`、`notes/microservices.md`、`notes/redis.md`、`notes/mysql.md` 写完,每个面试题都能脱稿回答 - [ ] `notes/mq.md`、`notes/microservices.md`、`notes/redis.md`、`notes/mysql.md` 写完,每个面试题都能脱稿回答
- [ ] 三个项目部署完成(或本机 Compose 全部跑通),`deploy/deploy.md` 写清备份和回滚 - [ ] 三个项目部署完成(或本机 Compose 全部跑通),`deploy/deploy.md` 写清备份和回滚
- [ ] CI 能自动跑测试;(有服务器时)推送后自动部署 - [ ] CI 能自动跑测试;(有服务器时)推送后自动部署
- [ ] 第 7 天(调整)的了解级扩展完成,`notes/extend.md` 写完
- [ ] (可选)Go 网关测试通过并接入部署 - [ ] (可选)Go 网关测试通过并接入部署
- [ ] 在总纲进度表勾掉第 14 周 - [ ] 在总纲进度表勾掉第 14 周
+70 -3
View File
@@ -13,7 +13,21 @@ order: 15
> 第四段的第 2 周。上周 `week14-backend-extend-deploy.md`,下周 `week16-interview.md`。 > 第四段的第 2 周。上周 `week14-backend-extend-deploy.md`,下周 `week16-interview.md`。
**本周目标**:把前 14 周的成果变成招聘方能快速看懂的材料:3 个公开仓库 + 1 份简历 + 3 条 STAR 工作经历 + 1 份口述稿(含演示视频)。 **本周目标**:把前 14 周的成果变成招聘方能快速看懂的材料:1~2 个重点展示的代表项目(共 3 个公开仓库)+ 1 份简历 + 3 条 STAR 工作经历 + 1 个“从问题到上线”的完整案例 + 1 个“AI 编程 + 验证方法”案例 + 1 份口述稿(含演示视频)。
**应聘材料清单(对照 BOSS直聘 2026-10-23 调研)**
调研中多个岗位在 JD 里直接写了应聘时要提供的材料:1~2 个代表项目(产品链接 / 仓库 / 截图 / 演示视频)、独立负责的范围、从问题定义到上线迭代的完整案例、AI 编程开发案例和质量控制方式,有的还要求提交 AI 会话记录;开源 / 技术博客加分(原始记录见 [research/boss-2026-10-23.md](../research/boss-2026-10-23.md))。本周的产出逐项对应:
| 招聘方要的 | 你交付的文件 | 怎么准备 |
| --- | --- | --- |
| 1~2 个代表项目(链接 / 仓库 / 截图 / 视频) | `career/portfolio.md` | 从 3 个仓库中选 1~2 个重点展示(建议 RAG 客服问答 + Agent 项目),每个给出:仓库地址、在线演示地址(没有就写本地一键启动命令)、3~5 张截图、1~3 分钟演示视频(第 1、6 天) |
| 独立负责的范围 | `career/portfolio.md` 每个项目的“我负责的部分” | 写清哪些是自己从零设计和实现的,哪些用了框架 / 开源组件;学习项目就如实写“独立完成” |
| 从问题定义到上线迭代的完整案例 | `career/cases/problem-to-launch.md` | 按“问题和指标 → 方案和取舍 → 实现 → 上线 / 部署 → 数据 → 下一轮改进”写;素材来自第 5~6 周 RAG 评测(召回率从基线到改进后的变化)或第 12~13 周 Agent 的崩溃恢复和评测;可以参考[跨技术栈场景](../scenarios/index.md)的结构 |
| AI 编程案例 + 质量控制方式 | `career/cases/ai-coding.md` + `career/session-logs/` | 选一个用 AI 编程工具完成的功能:需求和规则(AGENTS.md / rules / Skills)、AI 产出了什么、你发现并修正了什么、怎么验证(测试、故意破坏后测试失败、代码审查、真实环境验证);附**脱敏后**的会话记录。方法见 [AI 编程专题](../topics/ai/ai-coding/index.md) |
| 开源 / 技术博客(加分) | `career/portfolio.md` 的“文章”部分 | 可选:把 1~2 个踩坑经历写成文章(例如“SSE 流式输出经过 Nginx 被缓冲”“LangGraph 检查点续跑”) |
> 会话记录和截图在公开前必须脱敏:去掉公司名、内部地址、密钥、真实客户数据,提交前运行脱敏检查脚本(第 8 周第 2 天)。
**原则** **原则**
@@ -29,7 +43,12 @@ career/
├── resume-variants/ # 针对不同岗位微调的版本 ├── resume-variants/ # 针对不同岗位微调的版本
├── star.md # 3 条 STAR 工作经历 ├── star.md # 3 条 STAR 工作经历
├── pitch.md # 口述稿:3 分钟架构 + 1 分钟踩坑 ├── pitch.md # 口述稿:3 分钟架构 + 1 分钟踩坑
├── portfolio.md # 作品清单:仓库地址、演示链接、视频 ├── portfolio.md # 作品清单:1~2 个代表项目的仓库、演示链接、截图、视频、我负责的部分
├── cases/
│ ├── problem-to-launch.md # 从问题定义到上线迭代的完整案例
│ └── ai-coding.md # AI 编程案例:规则、产出、修正、验证方法
├── session-logs/ # 脱敏后的 AI 编程会话记录(配合 cases/ai-coding.md)
├── screenshots/ # 代表项目截图
├── jd/ # 收集的岗位描述(纯文本,一个岗位一个文件) ├── jd/ # 收集的岗位描述(纯文本,一个岗位一个文件)
├── keyword_check.py # 简历和岗位描述的关键词对照 ├── keyword_check.py # 简历和岗位描述的关键词对照
└── tests/test_keyword_check.py └── tests/test_keyword_check.py
@@ -70,6 +89,19 @@ docker compose up -d && open http://localhost:8100
### 要建的文件 ### 要建的文件
- 3 个公开仓库:`task-board`(含 `web/board-vue` 前端)、`rag-qa`(含 `web/rag-react`)、`agent-mini`;`career/portfolio.md` 记录地址和演示链接 - 3 个公开仓库:`task-board`(含 `web/board-vue` 前端)、`rag-qa`(含 `web/rag-react`)、`agent-mini`;`career/portfolio.md` 记录地址和演示链接
- `career/portfolio.md` 中选出 1~2 个代表项目(建议 `rag-qa` 和 `agent-mini`),每个写:一句话介绍、仓库地址、演示地址或一键启动命令、3~5 张截图(放 `career/screenshots/`)、演示视频链接、**我负责的部分**、可以被追问的技术点
- `career/cases/problem-to-launch.md`(模板见下)和 `career/cases/ai-coding.md`(第 6 天前完成)
```markdown
# 从问题到上线:<项目名>
1. 问题和目标:谁遇到了什么问题?用什么指标衡量(例如召回率@5、首 token 延迟、崩溃后能否续跑)?基线是多少?
2. 方案和取舍:考虑过哪几种方案,为什么选这个(引用 scenarios/ 中对应场景的取舍表)
3. 实现:我负责的模块、关键设计(2~3 条)
4. 上线 / 部署:怎么部署、怎么回滚、怎么监控
5. 结果:指标变化(只写自己测出来的数字,注明测试集和方法)
6. 下一轮迭代:发现了什么 Bad Case,怎么改的,改完的数据
```
### 运行方式 ### 运行方式
@@ -82,6 +114,7 @@ python3 ~/zhuangang/tools/check_sensitive.py && git commit -m "agent-mini 初始
### 完成标准 ### 完成标准
- 3 个仓库公开;每个 README 顶部有一句话介绍、动图或视频、快速开始;脱敏检查通过。 - 3 个仓库公开;每个 README 顶部有一句话介绍、动图或视频、快速开始;脱敏检查通过。
- `portfolio.md` 中 1~2 个代表项目的截图、视频、负责范围齐全;`problem-to-launch.md` 每一节都有内容。
--- ---
@@ -369,10 +402,24 @@ python keyword_check.py jd/某公司.txt resume.md
### 要建的文件 ### 要建的文件
- `career/pitch.md`(自我介绍 + 项目讲解),演示视频链接写进 `career/portfolio.md` - `career/pitch.md`(自我介绍 + 项目讲解),演示视频链接写进 `career/portfolio.md`
- `career/cases/ai-coding.md`:从第 1~14 周每周的 AI 编程练习中选 1 个最完整的功能,按下面的结构写,并把对应会话记录脱敏后放进 `career/session-logs/`
```markdown
# AI 编程案例:<功能名>
1. 任务:要实现什么,验收标准是什么
2. 给 AI 的上下文:AGENTS.md / rules / Skills 里写了什么约束(贴片段)
3. AI 的产出:生成了哪些文件;哪些直接可用
4. 我发现并修正的问题:例如边界条件遗漏、竞态、越权、测试是假的(断言为空)
5. 验证方法:单元 / 集成测试、故意破坏关键逻辑后测试变红、类型检查、代码审查、真实环境冒烟;贴命令和输出
6. 结论:AI 节省了哪些时间(如实描述),哪些部分必须自己把关
7. 会话记录:session-logs/<文件名>(已脱敏)
```
### 完成标准 ### 完成标准
- 自我介绍 ≤ 1 分钟、项目讲解 ≤ 4 分钟,各计时 3 遍;视频已录好。 - 自我介绍 ≤ 1 分钟、项目讲解 ≤ 4 分钟,各计时 3 遍;视频已录好。
- `cases/ai-coding.md` 的“验证方法”一节有可复现的命令和输出;会话记录已脱敏并通过检查脚本。
--- ---
@@ -389,6 +436,9 @@ python keyword_check.py jd/某公司.txt resume.md
[ ] 项目经历每一行都是“做了什么 + 怎么做 + 结果”,数字都能找到出处 [ ] 项目经历每一行都是“做了什么 + 怎么做 + 结果”,数字都能找到出处
[ ] 工作经历已脱敏,没有公司内部名称、接口、数据 [ ] 工作经历已脱敏,没有公司内部名称、接口、数据
[ ] 仓库、演示链接都能打开(用手机和别人的电脑试一次) [ ] 仓库、演示链接都能打开(用手机和别人的电脑试一次)
[ ] 1~2 个代表项目都有截图和演示视频,写清“我负责的部分”
[ ] “从问题到上线”案例有问题、指标、取舍、上线和迭代数据
[ ] “AI 编程”案例写清验证方法,附脱敏后的会话记录
[ ] 简历 PDF 两页以内,没有错别字,联系方式正确 [ ] 简历 PDF 两页以内,没有错别字,联系方式正确
``` ```
@@ -398,8 +448,25 @@ python keyword_check.py jd/某公司.txt resume.md
### 完成标准(阶段 4 上半验收) ### 完成标准(阶段 4 上半验收)
- [ ] 3 个公开仓库 + 演示视频 - [ ] 3 个公开仓库 + 演示视频;其中 1~2 个代表项目有截图、视频和负责范围说明(`portfolio.md`)
- [ ] `cases/problem-to-launch.md`、`cases/ai-coding.md` 写完,`session-logs/` 已脱敏
- [ ] 简历(主版本 + 3 个岗位方向版本) - [ ] 简历(主版本 + 3 个岗位方向版本)
- [ ] 3 条 STAR、口述稿计时达标 - [ ] 3 条 STAR、口述稿计时达标
- [ ] 至少 1 位他人审阅过并完成修改 - [ ] 至少 1 位他人审阅过并完成修改
- [ ] 在总纲进度表勾掉第 15 周 - [ ] 在总纲进度表勾掉第 15 周
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [AI 编程工具与验证](../topics/ai/ai-coding/index.md) | 课程:[验证 AI 产出](../topics/ai/ai-coding/02-verify-evidence.md);场景:[团队引入 AI 编程](../topics/ai/ai-coding/scenarios/ai-assisted-feature.md);[面试题](../topics/ai/ai-coding/interview.md) |
| [CI/CD](../topics/devops/cicd/index.md) | 场景:[多语言仓库的流水线](../topics/devops/cicd/scenarios/multi-lang-pipeline.md) |
| [Git](../topics/devops/git/index.md) | 课程:[合并、变基和撤销](../topics/devops/git/02-merge-rebase-recovery.md);场景:[线上紧急修复和密钥误提交](../topics/devops/git/scenarios/hotfix-and-leaked-secret.md);[面试题](../topics/devops/git/interview.md) |
**跨技术栈场景**:[客服知识库问答](../scenarios/customer-service-kb.md)
<!-- week-topics:end -->
+65
View File
@@ -118,6 +118,15 @@ career/
--- ---
### 补充:计算机基础和算法(依据 BOSS直聘 2026-10-23 调研)
调研中有岗位提到算法 / 数据结构和计算机基础,部分公司一面会现场写题。本周每天抽 30~45 分钟:
- 算法:按 [数据结构与算法](../topics/cs/algorithms/index.md) 的 9 个模式各做 1~2 道力扣中等题,先说思路和复杂度再写;示例 `patterns.py` 的测试要能自己重写一遍。
- 网络 / 操作系统:[面试题](../topics/cs/network-os/interview.md) 的“基础”部分能脱稿回答(输入 URL 发生了什么、三次握手、进程线程协程、epoll)。
- Web 安全:[面试题](../topics/cs/web-security/interview.md) 中 XSS / CSRF / SQL 注入 / SSRF 能结合自己的 AI 项目讲防御。
- 系统设计:第 4 天用 [跨技术栈场景](../scenarios/index.md) 中的 8 个场景练习,每个能讲 5 分钟。
## 第 4 天:项目深挖和系统设计 ## 第 4 天:项目深挖和系统设计
### 学习内容 ### 学习内容
@@ -303,3 +312,59 @@ python drill.py interview-notes.md 5
- [ ] 第一批至少 10 个岗位已投递 - [ ] 第一批至少 10 个岗位已投递
- [ ] 面试复盘循环已经开始(至少有一条复盘记录) - [ ] 面试复盘循环已经开始(至少有一条复盘记录)
- [ ] 总纲开头状态改为“已完成(YYYY-MM-DD)”,并写下“下一步如果继续学”选哪一个(总纲第 12 节),提交并推送 - [ ] 总纲开头状态改为“已完成(YYYY-MM-DD)”,并写下“下一步如果继续学”选哪一个(总纲第 12 节),提交并推送
<!-- week-topics:start -->
## 本周相关专题
> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;想调整就修改对应专题文件的 frontmatter 后重新生成。
| 技术栈 | 课程 / 场景 / 面试题 |
| --- | --- |
| [Agent 设计](../topics/ai/agent-design/index.md) | [面试题](../topics/ai/agent-design/interview.md) |
| [Agent 评测与运维](../topics/ai/agent-ops/index.md) | [面试题](../topics/ai/agent-ops/interview.md) |
| [AI 编程工具与验证](../topics/ai/ai-coding/index.md) | [面试题](../topics/ai/ai-coding/interview.md) |
| [Function Calling 工具调用](../topics/ai/function-calling/index.md) | [面试题](../topics/ai/function-calling/interview.md) |
| [LangChain](../topics/ai/langchain/index.md) | [面试题](../topics/ai/langchain/interview.md) |
| [LangGraph](../topics/ai/langgraph/index.md) | [面试题](../topics/ai/langgraph/interview.md) |
| [模型侧基础(了解级)](../topics/ai/llm-serving/index.md) | [面试题](../topics/ai/llm-serving/interview.md) |
| [低代码 AI 平台(Dify / Coze)](../topics/ai/lowcode/index.md) | [面试题](../topics/ai/lowcode/interview.md) |
| [MCP 模型上下文协议](../topics/ai/mcp/index.md) | [面试题](../topics/ai/mcp/interview.md) |
| [提示词与上下文工程](../topics/ai/prompt-engineering/index.md) | [面试题](../topics/ai/prompt-engineering/interview.md) |
| [RAG 检索增强生成](../topics/ai/rag/index.md) | [面试题](../topics/ai/rag/interview.md) |
| [向量数据库](../topics/ai/vector-db/index.md) | [面试题](../topics/ai/vector-db/interview.md) |
| [数据管道基础](../topics/backend/data-pipeline/index.md) | [面试题](../topics/backend/data-pipeline/interview.md) |
| [Elasticsearch](../topics/backend/elasticsearch/index.md) | [面试题](../topics/backend/elasticsearch/interview.md) |
| [Gin Web 框架](../topics/backend/gin/index.md) | [面试题](../topics/backend/gin/interview.md) |
| [Go 语言](../topics/backend/go/index.md) | [面试题](../topics/backend/go/interview.md) |
| [gRPC 与微服务](../topics/backend/grpc-microservices/index.md) | [面试题](../topics/backend/grpc-microservices/interview.md) |
| [Java / Spring Boot(了解级)](../topics/backend/java-spring/index.md) | [面试题](../topics/backend/java-spring/interview.md) |
| [MongoDB](../topics/backend/mongodb/index.md) | [面试题](../topics/backend/mongodb/interview.md) |
| [消息队列(RabbitMQ / Kafka)](../topics/backend/mq/index.md) | [面试题](../topics/backend/mq/interview.md) |
| [MySQL](../topics/backend/mysql/index.md) | [面试题](../topics/backend/mysql/interview.md) |
| [Node.js(了解级)](../topics/backend/nodejs/index.md) | [面试题](../topics/backend/nodejs/interview.md) |
| [PostgreSQL](../topics/backend/postgresql/index.md) | [面试题](../topics/backend/postgresql/interview.md) |
| [Redis](../topics/backend/redis/index.md) | [面试题](../topics/backend/redis/interview.md) |
| [数据结构与算法(面试)](../topics/cs/algorithms/index.md) | 课程:[复杂度分析和九个高频模式](../topics/cs/algorithms/01-complexity-patterns.md);场景:[业务中的算法](../topics/cs/algorithms/scenarios/business-algorithms.md);[面试题](../topics/cs/algorithms/interview.md) |
| [网络与操作系统基础](../topics/cs/network-os/index.md) | 课程:[网络基础](../topics/cs/network-os/01-http-tcp.md);课程:[操作系统基础](../topics/cs/network-os/02-os-basics.md);场景:[线上连接问题排查](../topics/cs/network-os/scenarios/connection-troubleshooting.md);[面试题](../topics/cs/network-os/interview.md) |
| [Web 安全基础](../topics/cs/web-security/index.md) | 课程:[Web 安全基础](../topics/cs/web-security/01-xss-csrf-sqli-cors-ssrf.md);场景:[AI 客服上线前的安全评审](../topics/cs/web-security/scenarios/ai-app-security.md);[面试题](../topics/cs/web-security/interview.md) |
| [CI/CD](../topics/devops/cicd/index.md) | [面试题](../topics/devops/cicd/interview.md) |
| [Docker 与 Compose](../topics/devops/docker/index.md) | [面试题](../topics/devops/docker/interview.md) |
| [Git](../topics/devops/git/index.md) | [面试题](../topics/devops/git/interview.md) |
| [Kubernetes 基础](../topics/devops/k8s/index.md) | [面试题](../topics/devops/k8s/interview.md) |
| [Linux 运维基础](../topics/devops/linux/index.md) | [面试题](../topics/devops/linux/interview.md) |
| [Nginx](../topics/devops/nginx/index.md) | [面试题](../topics/devops/nginx/interview.md) |
| [前端测试与性能](../topics/frontend/fe-testing-perf/index.md) | [面试题](../topics/frontend/fe-testing-perf/interview.md) |
| [React](../topics/frontend/react/index.md) | [面试题](../topics/frontend/react/interview.md) |
| [SSR(Nuxt / Next.js)](../topics/frontend/ssr/index.md) | [面试题](../topics/frontend/ssr/interview.md) |
| [TypeScript](../topics/frontend/typescript/index.md) | [面试题](../topics/frontend/typescript/interview.md) |
| [Vite](../topics/frontend/vite/index.md) | [面试题](../topics/frontend/vite/interview.md) |
| [Vue 3](../topics/frontend/vue/index.md) | [面试题](../topics/frontend/vue/interview.md) |
| [webpack](../topics/frontend/webpack/index.md) | [面试题](../topics/frontend/webpack/interview.md) |
| [asyncio 异步编程](../topics/python/asyncio/index.md) | [面试题](../topics/python/asyncio/interview.md) |
| [FastAPI](../topics/python/fastapi/index.md) | [面试题](../topics/python/fastapi/interview.md) |
| [Python 语言](../topics/python/python/index.md) | [面试题](../topics/python/python/interview.md) |
**跨技术栈场景**:[秒杀 / 高并发抢购](../scenarios/flash-sale.md)
<!-- week-topics:end -->
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/env python3
"""根据 catalog.json 中每个条目的 week 字段,在 plan/weekNN-*.md 中生成“本周相关专题”一节。
- 生成内容放在 <!-- week-topics:start --> 和 <!-- week-topics:end --> 之间,重复运行会替换,不会重复插入
- 第一次插入的位置:“## 本周自查清单 / ## 本周验收”之前(代码块之外);没有这两个标题时放在文末
- 先运行 tools/build_catalog.py 生成 catalog.json
用法:python3 tools/gen_week_topics.py [--check] (--check 只检查是否需要更新,需要时返回 1)
"""
from __future__ import annotations
import json
import re
import sys
from collections import defaultdict
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
START, END = "<!-- week-topics:start -->", "<!-- week-topics:end -->"
ANCHOR = re.compile(r"^## (本周自查清单|本周验收)")
FENCE = re.compile(r"^\s*(```|~~~)")
TYPE_ORDER = {"lesson": 0, "scenario": 1, "interview": 2}
TYPE_NAME = {"lesson": "课程", "scenario": "场景", "interview": "面试题"}
AI_CODING_NOTE = ("- **AI 编程练习(每周)**:本周至少一个功能用 AI 编程工具(Cursor / Claude Code / Codex 等)完成,"
"按 [AI 编程:工作流](../topics/ai/ai-coding/01-workflow-rules-skills.md) 写清需求和规则,"
"按 [验证与证据](../topics/ai/ai-coding/02-verify-evidence.md) 保存测试结果和会话记录(脱敏后),"
"第 15 周整理成“AI 编程 + 验证方法”的应聘案例。")
def build_section(week: int, items: list[dict], stacks: dict[str, dict]) -> str:
by_stack: dict[str, list[dict]] = defaultdict(list)
cross: list[dict] = []
for it in items:
if it["type"] == "scenario" and it["domain"] == "cross":
cross.append(it)
elif it["type"] in TYPE_ORDER and it.get("stack"):
by_stack[it["path"].split("/")[2]].append(it)
lines = [START, "", "## 本周相关专题", "",
"> 本节由 `tools/gen_week_topics.py` 根据专题文件的 `week` 字段自动生成,请勿手改;"
"想调整就修改对应专题文件的 frontmatter 后重新生成。", ""]
if week <= 14:
lines += [AI_CODING_NOTE, ""]
if by_stack:
lines += ["| 技术栈 | 课程 / 场景 / 面试题 |", "| --- | --- |"]
for sid in sorted(by_stack, key=lambda s: (stacks.get(s, {}).get("domain", ""), s)):
st = stacks.get(sid, {})
name = f"[{st.get('title', sid)}](../{st['index']})" if st.get("index") else sid
links = []
for it in sorted(by_stack[sid], key=lambda x: (TYPE_ORDER[x["type"]], x.get("order") or 0, x["path"])):
title = TYPE_NAME[it["type"]] if it["type"] == "interview" else it["title"].split(":")[0]
links.append(f"{TYPE_NAME[it['type']]}:[{title}](../{it['path']})" if it["type"] != "interview"
else f"[面试题](../{it['path']})")
lines.append(f"| {name} | {';'.join(links)} |")
lines.append("")
if cross:
lines += ["**跨技术栈场景**:" + "、".join(f"[{c['title'].split(':')[0]}](../{c['path']})" for c in sorted(cross, key=lambda c: c["path"])), ""]
lines.append(END)
return "\n".join(lines)
def insert(text: str, section: str) -> str:
if START in text and END in text:
return re.sub(re.escape(START) + r".*?" + re.escape(END), lambda _: section, text, count=1, flags=re.S)
in_fence = False
lines = text.split("\n")
for i, line in enumerate(lines):
if FENCE.match(line):
in_fence = not in_fence
elif not in_fence and ANCHOR.match(line):
return "\n".join(lines[:i] + [section, ""] + lines[i:])
return text.rstrip("\n") + "\n\n" + section + "\n"
def main() -> int:
check = "--check" in sys.argv
cat = json.loads((ROOT / "catalog.json").read_text(encoding="utf-8"))
stacks = {s["stack"]: s for s in cat["stacks"]}
per_week: dict[int, list[dict]] = defaultdict(list)
for it in cat["items"]:
if it["path"].startswith(("topics/", "scenarios/")):
for w in it.get("week") or []:
per_week[int(w)].append(it)
stale = []
for f in sorted((ROOT / "plan").glob("week*.md")):
week = int(re.match(r"week(\d+)", f.name).group(1))
old = f.read_text(encoding="utf-8")
new = insert(old, build_section(week, per_week.get(week, []), stacks))
if new != old:
stale.append(f.name)
if not check:
f.write_text(new, encoding="utf-8")
if check:
if stale:
print("需要重新生成:" + "、".join(stale))
return 1
print("各周“本周相关专题”已是最新")
return 0
print(f"已更新 {len(stale)} 个周计划文件")
return 0
if __name__ == "__main__":
sys.exit(main())