Skip to content

前端面试题总库 — 数据规范

本文档规定 interview-bank/ 下所有面试题的统一格式、字段含义与编号规则。 所有贡献者新增题目前必须阅读本规范。


一、题目 ID 规则

每道题必须有全局唯一 ID,格式为:

text
FB-{domain}-{type}-{level}-{seq}
字段含义示例
FBInterview Bank 固定前缀FB
domain面试知识域编号(2 位数字)01 表示 JavaScript
type题型代码(2 位字母)CA 表示 Code Analysis
level难度代码(1 位字母)B 表示 Basic
seq领域内序号(3 位数字)001

示例

text
FB-01-CA-B-001   # JavaScript 代码分析基础第 1 题
FB-15-SD-A-012   # React 系统设计架构第 12 题
FB-52-SS-E-003   # 低代码 软技能 专家第 3 题

题型代码表

代码题型说明
CO概念题(Concept)是什么、为什么、区别
CA代码分析题(Code Analysis)给出代码,判断输出/报错/执行顺序
CD手写代码题(Coding)手写实现某功能
SC场景设计题(Scenario)给定业务场景,给出方案
SD系统设计题(System Design)设计一个系统/平台/架构
FS框架原理题(Framework Source)React/Vue 等框架原理与源码
PE性能优化题(Performance)性能分析、优化方案
SE安全题(Security)安全漏洞、防御方案
EN工程化题(Engineering)构建、CI/CD、Monorepo 等
SS软技能题(Soft Skill)行为面试、沟通、团队
CP综合开放题(Comprehensive)跨领域开放题

难度代码表

代码难度emoji对应岗位
B基础🟢初级(0-3 年)
A进阶🟡高级(3-5 年)
P深入🔴专家(5-8 年)
R架构架构师(8 年+)

二、Markdown 题目模板

每道题必须使用以下模板:

markdown
### FB-{domain}-{type}-{level}-{seq}:题目名称

**题型**:概念题 / 代码分析 / 手写代码 / 场景设计 / 系统设计 / 框架原理 / 性能优化 / 安全 / 工程化 / 软技能 / 综合开放
**难度**:🟢 基础 / 🟡 进阶 / 🔴 深入 / ⚫ 架构
**岗位层级**:初级 / 高级 / 专家 / 架构师
**面试知识域**:01 JavaScript、03 Browser
**标签**:事件循环、闭包、异步、this
**出现频率**:高频 / 中频 / 低频
**预计回答时长**:3-5 分钟

**题目描述**
...

**参考答案**
...

**评分维度**
- 维度 A(40%):...
- 维度 B(35%):...
- 维度 C(25%):...

**常见错误**
- 错误 1:...
- 错误 2:...

**延伸追问**
- 如果候选人答对了,可追问:...
- 如果候选人答错了,可引导:...

**相关题目**
- [FB-01-CO-B-002 另一道相关题](#)
- [level-01-foundation/F01-javascript/03-面试题.md](../../level-01-foundation/F01-javascript/03-面试题.md)

**参考资源**
- [MDN - xxx](https://developer.mozilla.org/...)
- [V8 博客 - xxx](https://v8.dev/...)

三、字段详细说明

3.1 题型

必填。从题型代码表中选择最贴切的一项。

3.2 难度

必填。参考难度代码表。

3.3 岗位层级

必填。可多选,用 / 分隔:

  • 初级
  • 高级
  • 专家
  • 架构师

示例:初级 / 高级 表示该题初级和高级面试都可能出现。

3.4 面试知识域

必填。填写题目主要涉及的知识域编号和名称,多个用 分隔。

示例:01 JavaScript、03 Browser

3.5 标签

必填。3-8 个关键词,用于检索和关联。标签需在 data/tags.json 中注册或复用已有标签。

3.6 出现频率

必填。三选一:

  • 高频:大厂小厂都爱问,几乎必考
  • 中频:经常出现在特定岗位或公司
  • 低频:仅特定场景下出现

3.7 预计回答时长

必填。给面试官参考,例如:

  • 概念题:2-3 分钟
  • 代码分析题:3-5 分钟
  • 手写代码题:5-10 分钟
  • 场景设计题:8-15 分钟
  • 系统设计题:15-30 分钟
  • 软技能题:5-10 分钟

3.8 题目描述

必填。清晰描述题目,代码题需提供完整可运行的代码片段。

3.9 参考答案

必填。参考答案应分层:

  1. 核心要点:一句话回答
  2. 详细解释:原理、机制、边界情况
  3. 代码示例(如适用)
  4. 最佳实践/注意事项

对于低频或边缘题,允许使用"精炼答案 + 延伸阅读"模式。

3.10 评分维度

必填。至少 2 个维度,总权重 100%。帮助面试官统一标准。

示例:

markdown
**评分维度**
- 概念准确性(40%):是否准确说出事件循环阶段
- 举例能力(30%):能否用 `setTimeout` / Promise 举例
- 边界情况(30%):是否提到 `process.nextTick` / `queueMicrotask`

3.11 常见错误

推荐填写。列出候选人常犯的错误,便于面试官识别和纠正。

3.12 延伸追问

推荐填写。给出面试官根据回答情况继续深挖的问题。

3.13 相关题目

推荐填写。用 ID 链接同域或跨域相关题,构建题目网络。

3.14 参考资源

推荐填写。链接到权威文档、源码或深度文章。


四、文件组织规范

4.1 by-domain/ 文件命名

text
{两位数字}-{英文简称}.md

示例:

  • 01-javascript.md
  • 15-react.md
  • 44-mini-program.md

4.2 文件头部

每个 by-domain/*.md 文件开头必须包含该领域说明:

markdown
# {领域名称} 面试题

> 本文件收录 {领域名称} 相关面试题,目标题量 {N} 道。
> 题型覆盖:概念题、代码分析题、手写代码题、场景设计题等。
> 难度覆盖:基础、进阶、深入、架构。

## 目录

- [基础题](#基础题)
- [进阶题](#进阶题)
- [深入题](#深入题)
- [架构题](#架构题)

---

## 基础题

4.3 题目分组

按难度分组:

markdown
## 基础题

### FB-01-CO-B-001:...
...

## 进阶题

### FB-01-CO-A-001:...
...

五、视图文件规范

by-type/by-level/by-company/by-round/ 是视图文件,不重复存放完整题目,只存放:

  1. 该分类下的精选题目(完整题目,数量控制在 50-100 道)
  2. 其他相关题目的 ID 和链接列表

示例:

markdown
# 按题型:系统设计题

> 本文件收录高频系统设计面试题。

## 完整题目

### FB-25-SD-A-001:设计一个前端埋点系统
...

## 更多相关题目

- [FB-25-SD-A-002 设计一个组件库](../../by-domain/25-system-architecture.md#FB-25-SD-A-002)
- [FB-27-SD-A-001 如何优化一个大型 SPA 的首屏性能](../../by-domain/27-performance.md#FB-27-SD-A-001)

六、结构化数据

6.1 data/domains.json

定义所有面试知识域:

json
{
  "domains": [
    {
      "id": "01",
      "name": "JavaScript",
      "file": "01-javascript.md",
      "category": "foundation",
      "targetCount": 300,
      "tags": ["js", "es6", "async", "closure"]
    }
  ]
}

6.2 data/tags.json

定义标签体系:

json
{
  "tags": [
    { "id": "event-loop", "name": "事件循环", "domainIds": ["01"] },
    { "id": "closure", "name": "闭包", "domainIds": ["01"] }
  ]
}

6.3 data/questions.json

由同步脚本自动生成,汇集所有题目元数据:

json
{
  "version": 1,
  "total": 0,
  "questions": [
    {
      "id": "FB-01-CO-B-001",
      "type": "concept",
      "level": "basic",
      "domainIds": ["01"],
      "tags": ["data-types"],
      "title": "JavaScript 有哪些数据类型?",
      "sourceFile": "by-domain/01-javascript.md",
      "frequency": "high"
    }
  ]
}

七、质量检查清单

新增题目后,请自检以下项目:

  • [ ] ID 全局唯一
  • [ ] 题型、难度、岗位层级填写正确
  • [ ] 面试知识域编号存在
  • [ ] 标签不超过 8 个
  • [ ] 参考答案完整
  • [ ] 评分维度权重合计 100%
  • [ ] 代码示例可运行或经过验证
  • [ ] 相关题目链接有效

八、示例题目

by-domain/01-javascript.md 中的完整示例。

基于 MIT 协议发布