前端面试题总库 — 数据规范
本文档规定
interview-bank/下所有面试题的统一格式、字段含义与编号规则。 所有贡献者新增题目前必须阅读本规范。
一、题目 ID 规则
每道题必须有全局唯一 ID,格式为:
text
FB-{domain}-{type}-{level}-{seq}| 字段 | 含义 | 示例 |
|---|---|---|
FB | Interview 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 参考答案
必填。参考答案应分层:
- 核心要点:一句话回答
- 详细解释:原理、机制、边界情况
- 代码示例(如适用)
- 最佳实践/注意事项
对于低频或边缘题,允许使用"精炼答案 + 延伸阅读"模式。
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.md15-react.md44-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/ 是视图文件,不重复存放完整题目,只存放:
- 该分类下的精选题目(完整题目,数量控制在 50-100 道)
- 其他相关题目的 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 中的完整示例。