跳到主要内容

主题模版

模版结构

主题模版的 BNF 范式描述如下:

<TopicTemplate> ::= <TopicHeader> <TopicDescription>? <TopicContent>

# ------------------------------
# 主题头部区域(标题 + 状态标识)
# ------------------------------
<TopicHeader> ::= "#" <TopicTitle> <StatusIndicator>?
<TopicTitle> ::= <String>
<StatusIndicator> ::= "✅" | "🔄" | "📝" | "❌"

# ------------------------------
# 可选的主题描述区域
# ------------------------------
<TopicDescription> ::= <Paragraph>

# ------------------------------
# 主题内容区域,包含多个问题
# ------------------------------
<TopicContent> ::= (<QuestionBlock>)+

# ------------------------------
# 问题块(符合问题模版结构)
# ------------------------------
<QuestionBlock> ::= <HeadingBlock> <DescriptionBlock>? <AnswerBlock>

主题组织原则

核心原则

主题组织遵循认知学习规律,帮助面试者自然地构建知识体系,避免知识诅咒。对于复杂的主题,可以进一步建立目录,按照子主题来再做拆分。

提示

对于学科下主题,如果该主题下涉及多个子主题,建议拆解出升级到学科层级,比如框架等,虽然都归类为框架,但是框架本身并不是一个特定学科,所以每个框架都可以单开一个学科,然后在学科下再细分主题。

主要排序原则(由高到低优先级)

  1. 知识依赖关系

    • 确保前置知识先于需要这些前置知识的内容出现
    • 例如:先讲变量和类型,再讲类型转换
  2. 概念层级递进

    • 从基础概念到进阶应用
    • 例如:先讲基本数据类型,再讲引用类型,最后讲类型判断方法
  3. 复杂度递增

    • 从简单到复杂
    • 例如:先讲作用域,再讲闭包
  4. 应用频率

    • 从日常高频使用概念到低频特殊场景
    • 例如:先讲常规DOM操作,再讲页面性能优化
  5. 面试问到频率

    • 在实际面试中被问到的概率高低
    • 例如:事件循环比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.mdJavaScript 基础类型系统
数组算法02.01.array.md数组相关算法问题
链表算法04.linkedlist.md链表数据结构算法
React 组件01.component.mdReact 组件系统

主题内容组织规范

1. 主题描述

每个主题文件开头应包含:

  • 主题标题:清晰表达主题内容
  • 状态标识:表明主题完成度
  • 主题描述:简要说明主题涵盖的内容和学习目标

2. 问题组织

主题内的问题应按照以下顺序组织:

  1. 基础概念问题(P0 优先级)
  2. 核心应用问题(P0-P1 优先级)
  3. 进阶理解问题(P1-P2 优先级)
  4. 深度分析问题(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) - 异步场景下的类型处理

主题质量检查清单

内容完整性

  • 主题标题清晰明确
  • 状态标识正确
  • 主题描述完整
  • 问题覆盖全面
  • 问题排序合理

结构规范性

  • 文件命名符合规范
  • 问题格式符合模版
  • 答案结构完整
  • 代码示例可运行
  • 延伸阅读相关

学习效果

  • 知识递进合理
  • 难度梯度适当
  • 实际应用充分
  • 面试重点突出
  • 延伸学习引导
提示

一个好的主题模版应该能够帮助学习者系统性地掌握某个技术领域,同时为面试准备提供清晰的学习路径。通过合理的组织结构和内容安排,确保学习者能够循序渐进地构建知识体系。

55%