主题模版
模版结构
主题模版的 BNF 范式描述如下:
<TopicTemplate> ::= <TopicHeader> <TopicDescription>? <TopicContent>
# ------------------------------
# 主题头部区域(标题 + 状态标识)
# ------------------------------
<TopicHeader> ::= "#" <TopicTitle> <StatusIndicator>?
<TopicTitle> ::= <String>
<StatusIndicator> ::= "✅" | "🔄" | "📝" | "❌"
# ------------------------------
# 可选的主题描述区域
# ------------------------------
<TopicDescription> ::= <Paragraph>
# ------------------------------
# 主题内容区域,包含多个问题
# ------------------------------
<TopicContent> ::= (<QuestionBlock>)+
# ------------------------------
# 问题块(符合问题模版结构)
# ------------------------------
<QuestionBlock> ::= <HeadingBlock> <DescriptionBlock>? <AnswerBlock>
主题组织原则
核心原则
主题组织遵循认知学习规律,帮助面试者自然地构建知识体系,避免知识诅咒。对于复杂的主题,可以进一步建立目录,按照子主题来再做拆分。
提示
对于学科下主题,如果该主题下涉及多个子主题,建议拆解出升级到学科层级,比如框架等,虽然都归类为框架,但是框架本身并不是一个特定学科,所以每个框架都可以单开一个学科,然后在学科下再细分主题。
主要排序原则(由高到低优先级)
-
知识依赖关系
- 确保前置知识先于需要这些前置知识的内容出现
- 例如:先讲变量和类型,再讲类型转换
-
概念层级递进
- 从基础概念到进阶应用
- 例如:先讲基本数据类型,再讲引用类型,最后讲类型判断方法
-
复杂度递增
- 从简单到复杂
- 例如:先讲作用域,再讲闭包
-
应用频率
- 从日常高频使用概念到低频特殊场景
- 例如:先讲常规DOM操作,再讲页面性能优化
-
面试问到频率
- 在实际面试中被问到的概率高低
- 例如:事件循环比WeakMap更常被问到
主题状态标识
状态 | 标识 | 说明 |
---|---|---|
完成 | ✅ | 主题内容完整,所有问题都已编写完成 |
进行中 | 🔄 | 主题正在编写中,部分问题已完成 |
草稿 | 📝 | 主题结构已确定,但内容尚未完善 |
待开始 | ❌ | 主题已规划但尚未开始编写 |
主题模版示例
1. 基础概念主题模版
# 类型和值✅
本主题涵盖 JavaScript 中的数据类型系统,包括原始类型、引用类型、类型判断、类型转换等核心概念。
## JavaScript 中有几种数据类型 ? \{#p0-types}
<Answer>
<!-- 答案内容 -->
</Answer>
## 什么是原始类型和引用类型,有什么区别? \{#p0-primitive-reference}
<Answer>
<!-- 答案内容 -->
</Answer>
## 有哪些方法判断变量的类型 \{#p0-type-check}
<Answer>
<!-- 答案内容 -->
</Answer>
2. 算法主题模版
# 数组算法
本主题涵盖数组相关的常见算法问题,包括排序、查找、合并等操作。
## 数组合并?\{#p0-arr-merge}
给定两个有序数组 s1、s2, 将 s1 和 s2 合并成一个有序数组。
```js
const s1 = [1, 3, 5, 6, undefined, undefined, undefined]
const s2 = [3, 10]
function mergeArrays (arr1, arr2) {
}
答案
两数求和问题?
给定一个数组 S 和一个整数 target,在数组 S 中找到两个数,使得它们的和等于 target。
答案
### 3. **框架主题模版**
```markdown
# React 核心概念
本主题涵盖 React 框架的核心概念,包括组件、状态管理、生命周期等。
## React 组件有哪些类型? \{#p0-component-types}
<Answer>
<!-- 答案内容 -->
</Answer>
## React Hooks 的使用规则是什么? \{#p0-hooks-rules}
<Answer>
<!-- 答案内容 -->
</Answer>
主题文件命名规范
文件命名格式
<TopicFileName> ::= <OrderNumber> "." <TopicSlug> ".md"
<OrderNumber> ::= <TwoDigitNumber>
<TwoDigitNumber> ::= "0" <Digit> | "1" <Digit> | "2" <Digit> | ... | "9" <Digit>
<TopicSlug> ::= <Word> ("-" <Word>)*
命名示例
主题内容 | 文件名 | 说明 |
---|---|---|
类型和值 | 01.type-value.md | JavaScript 基础类型系统 |
数组算法 | 02.01.array.md | 数组相关算法问题 |
链表算法 | 04.linkedlist.md | 链表数据结构算法 |
React 组件 | 01.component.md | React 组件系统 |
主题内容组织规范
1. 主题描述
每个主题文件开头应包含:
- 主题标题:清晰表达主题内容
- 状态标识:表明主题完成度
- 主题描述:简要说明主题涵盖的内容和学习目标
2. 问题组织
主题内的问题应按照以下顺序组织:
- 基础概念问题(P0 优先级)
- 核心应用问题(P0-P1 优先级)
- 进阶理解问题(P1-P2 优先级)
- 深度分析问题(P2-P3 优先级)
3. 问题密度
- 基础主题:每个主题包含 3-5 个核心问题
- 复杂主题:每个主题包含 5-8 个问题,可考虑拆分子主题
- 算法主题:每个主题包含 4-6 个典型算法问题
主题间关联关系
1. 前置依赖
明确标识主题间的依赖关系:
:::tip[前置要求]
学习本主题前,建议先掌握:
- [类型和值](../01.js/01.type-value.md) 中的数据类型概念
- [运算符和表达式](../01.js/02.operator-expression.md) 中的类型转换规则
:::
2. 关联主题
在主题末尾提供相关主题链接:
**相关主题**
- [对象和原型链](../01.js/04.01.object.md) - 深入理解引用类型
- [函数和作用域](../01.js/05.function.md) - 函数中的类型应用
- [异步编程](../01.js/07.async.md) - 异步场景下的类型处理
主题质量检查清单
内容完整性
- 主题标题清晰明确
- 状态标识正确
- 主题描述完整
- 问题覆盖全面
- 问题排序合理
结构规范性
- 文件命名符合规范
- 问题格式符合模版
- 答案结构完整
- 代码示例可运行
- 延伸阅读相关
学习效果
- 知识递进合理
- 难度梯度适当
- 实际应用充分
- 面试重点突出
- 延伸学习引导
提示
一个好的主题模版应该能够帮助学习者系统性地掌握某个技术领域,同时为面试准备提供清晰的学习路径。通过合理的组织结构和内容安排,确保学习者能够循序渐进地构建知识体系。