好,那我们就正式进入阶段 2 的数据设计。先说清楚:阶段 2 分两半------先设计并整理数据 ,再写 ingest 入库脚本。今天只讲前半段(数据),因为入库脚本要按你的数据格式来写,数据没定型之前讲脚本就是空谈。
数据设计要定四件事:方向、文档格式、目录组织、数量与质量。我一样样讲,最后给你一个模板,你先写一篇给我看,格式对了再批量写。
第一件事:定方向
先只选一个岗位方向,比如 Java 后端、Python 后端、前端、算法。这决定你的知识库和评测集考什么。不要一次做两个方向,小而精最重要。下面我会用"Java 后端"举例,如果你做别的方向,告诉我,我把考点清单换一份。
第二件事:文档格式(最重要)
一个文件 = 一个完整的小考点,不要一个文件塞一堆主题。原因很关键,跟你的检索设计直接相关:入库时文档会按 chunk_size=300、overlap=50 切成 300 字左右的小块,检索命中的是"块"而不是整篇。所以一篇文档聚焦一个知识点,切出来的每一块才有明确含义、才能带上干净的来源。一篇建议 500~1500 字,大概会被切成 2~5 块,正合适。
每篇文档用这个统一模板,内容必须用自己的话写(既是学习过程,也避免版权问题):
# Redis 缓存穿透、击穿、雪崩
> 方向:Java 后端
> 主题:缓存
## 什么是缓存穿透
(用自己的话解释,200~500 字)
## 什么是缓存击穿
(用自己的话解释)
## 什么是缓存雪崩
(用自己的话解释)
## 常见解决方案
(分点写清思路,不堆代码)
---
来源:
- Redis 官方文档:https://redis.io/docs/latest/
- 《Redis 设计与实现》第 X 章
命名规则:文件名用主题名,别用空格和特殊符号,比如 redis-cache-penetration.md(也可以用中文,但英文文件名在后续脚本里更省心)。文件名将来会作为"来源"显示在回答里,所以起名要能一眼看出是哪个知识点。
第三件事:目录组织
data/docs/ 下面按主题建子文件夹,比如:
data/docs/
├── jvm/ # JVM、垃圾回收
├── concurrency/ # 并发、线程
├── mysql/ # 索引、事务、锁
├── redis/ # 缓存
├── network/ # 计算机网络
├── os/ # 操作系统
└── framework/ # Spring、中间件等
按主题分文件夹,入库时每个块能带上"主题"这个元数据,溯源更清晰。
第四件事:数量与质量
目标是 20~40 篇。先精后多:不要第一天就硬凑 30 篇,先写 5 篇高质量的,把格式和质量标准定下来,再逐步补到 20+。每篇写完自查两件事:是不是聚焦一个考点、是不是用自己的话写的、末尾有没有来源。
Java 后端的考点清单(示例)
按主题给你一份起步清单,每个点一篇:
- JVM:JVM 内存区域、垃圾回收算法、Minor GC 与 Full GC、类加载过程
- 并发:线程状态与生命周期、synchronized 与锁升级、volatile 与 happens-before、线程池核心参数、ThreadLocal 与内存泄漏
- MySQL:B+ 树索引、聚簇与非聚簇索引、事务隔离级别、MVCC、慢查询优化、主从复制
- Redis:数据结构与使用场景、缓存穿透/击穿/雪崩、持久化 RDB 与 AOF、过期策略与淘汰策略、分布式锁
- 网络:TCP 三次握手四次挥手、HTTP 与 HTTPS、浏览器输入 URL 的过程
- 操作系统:进程与线程、虚拟内存与分页、死锁的四个条件
- 框架/项目:Spring IoC 与 AOP、Spring 事务失效场景、你的项目难点总结
这不是死清单,你可以增删,但数量保持在 20~40 篇。
现在你的任务
先做两件事:
- 告诉我你定的方向(Java 后端 / Python 后端 / 前端 / 其他)。
- 按上面的模板,自己动手写第一篇 样板文档,放到
data/docs/对应子文件夹里,然后把内容贴给我看。我帮你审格式、审"是否聚焦一个考点、来源标没标",确认没问题后你再照这个标准批量写。
你先动手写一篇,我们以这一篇为样板把质量标准定死。