| 级别 | 经验 | 核心考察点 | 答题要求 |
|---|---|---|---|
| 初级 | 0-1 年 | 基础扎实、代码规范、学习能力 | 能准确回答概念,写出正确代码 |
| 中级 | 1-3 年 | 框架熟练、工程化思维、问题解决 | 能结合项目经验,给出优化方案 |
| 高级 | 3-5 年 | 架构设计、性能优化、技术深度 | 能设计系统,分析利弊,给出数据 |
| 资深 | 5-8 年 | 体系搭建、技术影响力、业务驱动 | 能推动落地,量化成果,培养团队 |
| 架构师 | 8+ 年 | 全局设计、技术选型、组织协作 | 能顶层设计,平衡取舍,预见风险 |
| 总监 | 10+ 年 | 团队管理、战略规划、商业思维 | 能制定战略,搭建梯队,对齐业务 |
| 负责人 | 12+ 年 | 行业洞察、变革领导、商业成功 | 能引领变革,驱动业务,建立生态 |
标准答案:
CSS 盒模型描述元素的空间占用,由内到外:content → padding → border → margin。
| 盒模型 | width 包含 | 设置方式 |
|---|---|---|
| content-box(默认) | content | box-sizing: content-box |
| border-box | content + padding + border | box-sizing: border-box |
// 推荐全局设置 *, *::before, *::after { box-sizing: border-box; } // 示例 .box { width: 200px; padding: 20px; border: 5px solid red; } /* content-box: 实际宽度 = 200 + 20*2 + 5*2 = 250px */ /* border-box: 实际宽度 = 200px(content 自动缩小) */
标准答案:
| 方案 | 优点 | 缺点 |
|---|---|---|
| JSON.parse/stringify | 简单 | 丢失函数、undefined、Date、循环引用 |
| structuredClone | 原生、支持循环引用 | 不支持函数、兼容性 |
| 手写递归 | 最灵活、可控 | 需要维护 |
function deepClone(obj, map = new WeakMap()) { if (obj === null || typeof obj !== 'object') return obj; if (obj instanceof Date) return new Date(obj); if (obj instanceof RegExp) return new RegExp(obj); if (map.has(obj)) return map.get(obj); const clone = Array.isArray(obj) ? [] : {}; map.set(obj, clone); Reflect.ownKeys(obj).forEach(key => { clone[key] = deepClone(obj[key], map); }); return clone; }
标准答案:
事件循环是 JavaScript 处理异步任务的机制。执行顺序:
console.log(1); // 同步 setTimeout(() => console.log(2), 0); // 宏任务 Promise.resolve().then(() => console.log(3)); // 微任务 console.log(4); // 同步 // 输出: 1, 4, 3, 2
标准答案:
使用 Lighthouse、WebPageTest、Chrome DevTools Performance 分析瓶颈
发现:主包 1.2MB、未压缩图片 3MB、TTFB 800ms、第三方脚本阻塞
FCP: 2.5s → 0.8s LCP: 4.2s → 1.5s TTI: 5.1s → 2.0s 跳出率: 35% → 12%
标准答案:
| 指标 | 含义 | 目标 | 采集方式 |
|---|---|---|---|
| LCP | 最大内容绘制 | < 2.5s | PerformanceObserver |
| FID | 首次输入延迟 | < 100ms | Event Timing API |
| CLS | 累积布局偏移 | < 0.1 | Layout Instability API |
| TTFB | 首字节时间 | < 200ms | Navigation Timing |
// 核心采集代码 class Monitor { constructor(config) { this.config = config; this.init(); } init() { this.observeWebVitals(); this.observeErrors(); this.observeBehavior(); } observeWebVitals() { new PerformanceObserver((list) => { for (const entry of list.getEntries()) { this.report('vital', entry); } }).observe({ entryTypes: ['largest-contentful-paint', 'first-input'] }); } report(type, data) { navigator.sendBeacon(`/api/log/${type}`, JSON.stringify(data)); } }
标准答案:
| 问题 | 决策 | 原因 |
|---|---|---|
| 整体重写 vs 渐进迁移 | 渐进迁移 | 业务不能停,风险可控 |
| Options API vs Composition API | 新项目用 Composition | 更好的逻辑复用 |
| Vuex vs Pinia | Pinia | Vue 3 官方推荐,TypeScript 友好 |
迁移完成率: 100% Bug 率: 下降 40% 构建速度: 提升 60% 包体积: 减少 30%
标准答案:
| 模块 | 方案 | 原因 |
|---|---|---|
| 实时通信 | WebSocket + Socket.IO | 自动重连、降级 |
| 冲突解决 | OT/CRDT | 保证最终一致性 |
| 数据存储 | Redis + MongoDB | 热数据缓存、冷数据持久化 |
| 消息队列 | Kafka | 削峰、解耦 |
客户端 → WebSocket 网关 → 协作服务 → Redis/MongoDB
↓
消息队列 Kafka
↓
历史版本服务 → 对象存储
// 简化版 CRDT 实现 class CRDTDocument { constructor() { this.operations = []; this.version = 0; } insert(pos, char, clientId) { const op = { type: 'insert', pos, char, clientId, version: ++this.version }; this.operations.push(op); return op; } delete(pos, clientId) { const op = { type: 'delete', pos, clientId, version: ++this.version }; this.operations.push(op); return op; } // 合并远程操作(无冲突) merge(remoteOps) { for (const op of remoteOps) { if (op.version > this.version) { this.operations.push(op); this.version = op.version; } } } }
标准答案:
| 维度 | 指标 | 目标 | 采集方式 |
|---|---|---|---|
| 效率 | 代码产出率 | 提升 30% | Git 提交统计 |
| 效率 | 需求交付周期 | 缩短 25% | Jira 数据统计 |
| 质量 | Bug 率 | 下降 20% | Bug 系统 |
| 质量 | 代码审查通过率 | 提升 15% | CR 数据统计 |
| 满意度 | 开发者 NPS | > 50 | 问卷调查 |
| 成本 | 工具 ROI | > 300% | 成本/收益计算 |
| 风险 | 影响 | 应对措施 |
|---|---|---|
| 代码泄露 | 高 | 私有化部署、禁用云同步 |
| 过度依赖 | 中 | 保留手写能力、关键代码人工审查 |
| 质量下降 | 中 | 加强 CR、AI 生成代码标记 |
| 成本超支 | 低 | 按需采购、分阶段投入 |
标准答案:
背景:团队 20 人,技术水平参差不齐,知识传递靠口口相传。
行动:
成果:
新人上手时间: 2周 → 3天 重复问题: 减少 70% 团队 NPS: +40
标准答案:
构建"高可用、高性能、高扩展"的前端架构,支撑日均千万级 PV。
┌─────────────────────────────────────────┐ │ 接入层:CDN / WAF / 负载均衡 │ ├─────────────────────────────────────────┤ │ 渲染层:SSR / SSG / CSR 混合 │ ├─────────────────────────────────────────┤ │ 应用层:微前端(主应用 + N 个子应用) │ ├─────────────────────────────────────────┤ │ 服务层:BFF / API Gateway │ ├─────────────────────────────────────────┤ │ 基础设施层:监控 / 日志 / 告警 │ └─────────────────────────────────────────┘
| 决策点 | 选择 | 理由 |
|---|---|---|
| 微前端方案 | qiankun | 技术成熟、社区活跃 |
| 状态管理 | Zustand + Jotai | 轻量、TypeScript 友好 |
| 构建工具 | Vite 5 | 开发体验好、构建快 |
| CSS 方案 | Tailwind + CSS Modules | 原子化、可维护 |
| 测试策略 | Vitest + Playwright | 单元 + E2E 全覆盖 |
基础设施搭建、核心模块迁移
全量迁移、性能优化
智能化升级、国际化
标准答案:
设计器(Editor) ├── 组件面板(物料库) ├── 画布(可视化编辑) ├── 属性面板(配置) └── 大纲树(层级) 渲染器(Renderer) ├── Schema 解析 ├── 组件映射 └── 数据绑定 物料库(Materials) ├── 基础组件(Input、Select) ├── 业务组件(商品卡片) └── 布局组件(Flex、Grid)
{
"version": "1.0",
"componentName": "Page",
"props": { "title": "活动页" },
"children": [{
"componentName": "Form",
"props": {
"layout": "vertical",
"labelWidth": 100
},
"children": [{
"componentName": "Input",
"props": {
"placeholder": "请输入姓名",
"required": true,
"rules": [{ "min": 2, "message": "至少2个字符" }]
},
"binding": { "field": "name" }
}]
}]
}
| 难点 | 方案 |
|---|---|
| 组件动态加载 | import() + 组件注册表 |
| 拖拽交互 | react-dnd / 自研 |
| 数据联动 | 发布-订阅 + 表达式引擎 |
| 版本管理 | Schema 快照 + 差异对比 |
标准答案:
| 成本项 | 占比 | 优化空间 |
|---|---|---|
| 人力成本 | 70% | 提升人效、优化结构 |
| 服务器成本 | 15% | CDN 优化、缓存策略 |
| 工具/服务 | 10% | 开源替代、按需采购 |
| 其他 | 5% | 办公、培训 |
成本分析、制定目标、启动提效工具
AI 工具推广、低代码试点
结构优化、外包引入
效果评估、下年规划
标准答案:
| 级别 | 定位 | 核心要求 |
|---|---|---|
| P5(初级) | 执行者 | 独立完成模块开发 |
| P6(中级) | 骨干 | 独立负责项目、指导新人 |
| P7(高级) | 专家 | 架构设计、技术难题 |
| P8(资深) | 资深专家 | 体系搭建、跨团队影响 |
| P9(专家) | 领域专家 | 行业影响力、战略决策 |
| P10+ | 高级专家 | 公司级技术战略 |
标准答案:
将 AI 融入产品全生命周期,从"功能驱动"转向"智能驱动"。
| 因素 | 措施 |
|---|---|
| 一把手工程 | CEO 直接挂帅,月度汇报 |
| 人才 | 引进 AI 专家、全员培训 |
| 数据 | 建设数据中台、标注体系 |
| 算力 | GPU 集群、云服务 |
| 文化 | 容忍失败、鼓励创新 |
AI 功能覆盖率: 80% 效率提升: 50% AI 收入占比: 30% 专利申请: 10+
标准答案:
| 类型 | 占比 | 说明 |
|---|---|---|
| 业务需求 | 60% | 支撑当前业务 |
| 技术优化 | 25% | 性能、质量、效率 |
| 创新探索 | 15% | 新技术、新方向 |
高紧急
│
┌────────────┼────────────┐
│ 立即执行 │ 规划执行 │
│ (Bug修复) │ (架构升级) │
高 ────┼────────────┼────────────┤ 低
影 │ 授权执行 │ 延后/取消 │ 影
响 │ (小优化) │ (低优先级) │ 响
└────────────┼────────────┘
│
低紧急
| 字母 | 含义 | 示例 |
|---|---|---|
| S | Situation(情境) | "在我们电商项目中..." |
| T | Task(任务) | "首屏加载时间过长影响转化率..." |
| A | Action(行动) | "我通过 SSR、代码分割、图片优化..." |
| R | Result(结果) | "LCP 从 4s 降到 1.2s,转化率提升 15%" |