跳到主要内容

一个月面试复习方案(9 年前端)

总体策略

核心原则

9 年经验的前端面试重点不在八股文的覆盖面,而在于 深度 + 体系化 + 表达力。面试官期望你能从原理、工程、架构三个层面给出有见地的回答。

优先级说明

每篇文档标注优先级,根据面试高频程度和你的时间灵活调整:

标记含义建议时间说明
🔴必学30-45 min深入理解,能讲清原理,高频考点
🟡重点15-20 min掌握核心要点,能回答基本问题
🟢速览5-10 min知道概念即可,被问到能简单回答

每天 3.5-4 小时,30 天共约 110 小时,覆盖全部 463 篇知识文档。

每日练手:保持题感

为什么要把算法和手写分散到每天?

集中突击容易"学了后面忘了前面"。将 34 道算法题25 道手写题 分散到每天,每天固定 30-40 分钟练手,保持手感和肌肉记忆,面试时才能下意识写出来。

阶段日期安排
新题阶段Day 1-24每天 1-2 道算法 + 1 道手写(🔴 题优先排前两周)
收尾阶段Day 25最后 1 道手写题
复习阶段Day 26-29复习错题 + 高频题速写热手
模拟阶段Day 30全真模拟面试
9 年经验面试的核心差异

和初中级不同,资深面试考察的是:

  1. 技术深度 —— 不只是"怎么用",要讲清"为什么"和"怎么实现的"
  2. 架构能力 —— 系统设计、技术选型、权衡取舍
  3. 工程思维 —— 规范落地、CI/CD、监控告警、团队协作
  4. 业务理解 —— 技术方案如何服务业务目标
  5. 领导力信号 —— 推动技术改进、带人经验、跨团队协作

第 1 周:算法基础 + 前端核心 + 项目梳理

知识文档:算法基础 6 + JS 18 + TS 16 + CSS 18 + HTML 6 + 浏览器 16 + 项目 24 = 104 篇 每日练手:算法 11 题 + 手写 7 题

Day 1:算法基础 + JavaScript 语言核心

上午:算法基础速览(6 篇)

为什么从算法基础开始?

算法基础是后续 30 天每日练手的前置知识。先建立复杂度分析、数据结构、常见算法思维的框架,后面每天做题才能高效。

优先级文档重点
🔴常见算法思维双指针、滑动窗口、递归、DP、贪心、回溯
🔴解题思路与方法论读题、分析、设计、编码、测试
🟡复杂度分析大 O 表示法、时间/空间复杂度
🟡数据结构基础数组、链表、栈、队列、哈希表、树
🟢排序算法快排、归并、堆排序
🟢二分查找基础模板、常见变体

下午:JavaScript 语言核心(9 篇)

优先级文档重点
🔴作用域与作用域链词法作用域、变量提升、TDZ、let/const
🔴闭包闭包原理、应用场景、内存问题
🔴this 指向4 种绑定规则、箭头函数、优先级
🔴原型与继承原型链、继承方式、ES6 class
🔴Event Loop 事件循环宏/微任务、输出题必考
🟡数据类型与类型判断typeof/instanceof、类型转换
🟡异步编程Promise、async/await、错误处理
🟡ES6+ 新特性解构、可选链、空值合并
🟡V8 垃圾回收与内存泄露分代回收、内存泄露场景

📝 每日练手

类型题目考点
🧮 算法两数之和哈希表
🧮 算法有效的括号
✍️ 手写手写 PromisePromises/A+ 规范
常考输出题

Event Loop 输出题几乎必考,重点练习 Promise + setTimeout + async/await 混合执行顺序。

Day 2:JavaScript 进阶与工具

优先级文档重点
🔴Proxy 与 ReflectVue 3 响应式基础、元编程
🟡深拷贝与浅拷贝实现方式、循环引用
🟡防抖和节流概念、应用场景、手写
🟡JavaScript 模块化ESM vs CJS、Tree Shaking
🟡Set 和 MapWeakMap/WeakRef、实际应用
🟡数组方法高阶函数、迭代方法
🟢Symbol 与迭代器迭代协议、Generator
🟢正则表达式常用场景、性能
🟢位运算权限控制、算法应用

📝 每日练手

类型题目考点
🧮 算法反转链表迭代、递归
🧮 算法合并两个有序链表链表操作
✍️ 手写深拷贝与浅拷贝循环引用、WeakMap

Day 3:TypeScript 全覆盖

优先级文档重点
🔴泛型泛型约束、条件类型、infer
🔴工具类型Partial/Pick/Omit 原理
🔴type vs interface区别、声明合并
🔴类型守卫is、asserts、可辨识联合
🟡TypeScript 与 React组件 Props、Hooks 类型
🟡条件类型extends、infer、分发
🟡联合类型与交叉类型联合 |、交叉 &、分发
🟡深度工具类型DeepPartial/DeepReadonly
🟡映射类型keyof、in、as 子句
🟡实现 Pick/Omit手写 Pick/Omit/Exclude
🟢TypeScript 基础知识类型系统概览
🟢类型断言as、!、satisfies
🟢类型推断变量推断、泛型推断
🟢装饰器TS5 标准装饰器
🟢模板字面量类型模板字面量、字符串操作
🟢TypeScript 配置strict、paths、模块解析

📝 每日练手

类型题目考点
🧮 算法移动零双指针
🧮 算法最小栈辅助栈
✍️ 手写手写 EventEmitter发布订阅、TypeScript 泛型

Day 4:CSS 全覆盖

优先级文档重点
🔴Flex 布局容器/项目属性、flex 简写
🔴BFC 块级格式化上下文触发条件、应用场景
🔴CSS 居中方案至少 5 种方案
🔴移动端适配viewport、rem/vw、1px
🟡Grid 布局模板属性、Grid vs Flex
🟡盒模型border-box、margin 塌陷
🟡定位与层叠上下文5 种定位、z-index
🟡选择器与优先级优先级计算、:has()
🟡响应式设计媒体查询、容器查询、clamp()
🟡CSS 动画与过渡transition、animation、GPU
🟡常见布局实现圣杯/双飞翼、粘性页脚
🟢CSS-in-JS 与原子化 CSSstyled-components、Tailwind
🟢CSS 性能优化contain、content-visibility
🟢CSS 自定义属性CSS 变量、主题切换
🟢浮动与清除浮动clearfix 方案
🟢CSS 预处理器Sass/Less/PostCSS
🟢隐藏元素的方式9 种方式对比
🟢CSS 新特性Nesting、@layer、@scope

📝 每日练手

类型题目考点
🧮 算法三数之和排序 + 双指针
✍️ 手写手写 Promise 静态方法all/race/allSettled/any

Day 5:HTML + 浏览器原理 Part 1

HTML(6 篇):

优先级文档重点
🟡语义化与可访问性语义化标签、ARIA、WCAG
🟡HTML5 新特性Canvas、拖拽、Web Storage
🟡meta 标签与 SEOviewport、OG 协议
🟢表单与表单验证FormData、React 表单
🟢Canvas 与 SVG2D API、动画、性能对比
🟢Web ComponentsShadow DOM、Custom Elements

浏览器 Part 1(8 篇):

优先级文档重点
🔴浏览器渲染原理关键渲染路径、重排重绘
🔴从输入 URL 到页面展示全链路面试经典题
🔴浏览器缓存机制强缓存 vs 协商缓存
🔴跨域问题CORS、简单/预检请求
🔴跨页面通信BroadcastChannel、SharedWorker、postMessage、MessageChannel
🟡浏览器安全XSS/CSRF 防御
🟡事件机制冒泡、捕获、委托
🟡前端存储技术Cookie/localStorage/IndexedDB
🟡浏览器进程架构多进程、站点隔离

📝 每日练手

类型题目考点
🧮 算法字符串相加模拟竖式加法
🧮 算法千分位格式化数字字符串处理
✍️ 手写手写 new/instanceof/typeof原型链遍历

Day 6:浏览器 Part 2 + 项目梳理开始

浏览器 Part 2(8 篇):

优先级文档重点
🟡script 的 defer 和 async加载方式、执行顺序
🟡Web WorkersWorker 类型、Service Worker
🟡History API 与前端路由pushState、Hash/History
🟢页面生命周期DOMContentLoaded、bfcache
🟢requestAnimationFrame动画原理、requestIdleCallback
🟢WebSocket 与 SSE实时通信方案对比
🟢浏览器兼容性特性检测、Polyfill
🟢浏览器指纹Canvas/WebGL 指纹

项目经验梳理开始(下午):

项目经验是资深面试的重中之重

9 年经验的面试,50% 以上时间在聊项目。用 STAR 法则结构化 2-3 个核心项目。

选择 2-3 个核心项目(技术挑战大、有量化成果),开始 STAR 梳理:

S(Situation):项目背景、团队规模、你的角色
T(Task):你负责什么、面临什么技术挑战
A(Action):你做了什么、技术方案是什么、为什么这么选
R(Result):量化结果(性能提升 X%、效率提升 X 倍)

📝 每日练手

类型题目考点
🧮 算法合并区间排序 + 贪心
✍️ 手写手写柯里化 curry占位符、类型安全

Day 7:项目经验深度准备

Step 1:选择 2-3 个核心项目

选择标准:

  • 技术挑战大、有亮点的项目
  • 能体现架构设计能力的项目
  • 有量化成果的项目(性能提升 X%、效率提升 X 倍)

Step 2:用 STAR 法则结构化每个项目

S(Situation):项目背景、团队规模、你的角色
T(Task):你负责什么、面临什么技术挑战
A(Action):你做了什么、技术方案是什么、为什么这么选
R(Result):量化结果(性能、效率、业务指标)

Step 3:准备每个项目的深挖点

对照这些文档准备项目相关的高频问题:

优先级文档说明
🔴SWAI 面试高频Next.js、BFF、埋点、Monorepo
🔴Swee 面试高频NestJS、PWA、VTable
🔴RYZZ 面试高频WebSocket、Web3、Next.js
🔴HUYA 面试高频播放器 SDK、SSR、性能优化
🟡SWAI 主站技术总结Next.js 16、React 19
🟡SWAI 后端服务总结NestJS、BFF
🟡SWAI 事件埋点服务总结埋点、BI 分析
🟡SWAI 管理后台技术总结UmiJS、Ant Design Pro
🟡Swee Mobile PWA 技术总结Next.js、PWA、AI 伴侣
🟡Swee 官网技术总结i18n、Sentry
🟡Swee H5 页面技术总结JSBridge、游戏 SSO
🟡Swee 后端服务技术总结NestJS、TypeORM
🟡Swee 管理后台技术总结VTable、薪资结算
🟡Swee 技术评审改进建议
🟢RYZZ 主站技术总结WebSocket+Protobuf
🟢RYZZ H5 页面技术总结Web3、OAuth
🟢RYZZ 管理后台技术总结UmiJS Max 4
🟢RYZZ 图片处理服务Sharp、OSS、CDN
🟢RYZZ 技术评审Monorepo、Docker
🟢HUYA 沉浸式播放器HLS、虚拟列表
🟢HUYA 中台视频上传SDK分片上传、TUS
🟢HUYA 直播m站&视频站重构SSR、性能优化
🟢HUYA 视频站播放器SDKHLS、弹幕
🟢FKW 凡科快图Canvas、Fabric.js

Step 4:准备通用项目问题

必须能流利回答:

  1. 介绍一下你做过最有挑战的项目 → 参考
  2. 你做过最有成就感的事 → 参考
  3. 你在项目中遇到的最难的 Bug → 参考
  4. 你推动过哪些技术改进 → 参考
  5. 你是怎么做技术选型的 → 参考

📝 每日练手

类型题目考点
🧮 算法接雨水双指针 / 单调栈
✍️ 手写限流调度器并发控制、优先级

第 2 周:框架原理 + 工程化体系

知识文档:React 18 + Vue 17 + 构建 14 + 工程化 12 + 性能 16 = 77 篇 每日练手:算法 10 题 + 手写 7 题

Day 8:React 核心原理

优先级文档重点
🔴Fiber 架构数据结构、双缓冲、时间切片
🔴虚拟 DOM 与 Diff 算法三种 Diff 策略、key
🔴Hooks 原理链表结构、闭包陷阱
🔴Reconciliation协调算法、lastPlacedIndex
🟡渲染流程Render vs Commit 阶段
🟡setState 批量更新React 18 自动批处理

📝 每日练手

类型题目考点
🧮 算法二叉树的层序遍历BFS、队列
🧮 算法二叉树的最大深度递归
✍️ 手写LRU 缓存双向链表 + 哈希表

Day 9:React 高级 + 状态管理

优先级文档重点
🔴React 性能优化memo/useMemo/useCallback
🔴状态管理方案Redux vs Zustand vs Jotai
🟡组件通信方案Props、Context、状态提升
🟡生命周期演变16/17/18/19 变化
🟡懒加载与代码分割React.lazy、Suspense
🟡列表渲染优化key 原理、虚拟列表
🟡合成事件事件委托、原生事件区别

📝 每日练手

类型题目考点
🧮 算法对称二叉树镜像递归
🧮 算法二叉树的右视图BFS 层序
✍️ 手写遍历二叉树前/中/后序、Morris

Day 10:React 18/19 + 生态

优先级文档重点
🔴React 18 新特性Concurrent、useTransition
🔴React 19 新特性Compiler、Actions、use
🔴Server Components 深入RSC 原理、Server/Client 边界
🟡Next.js 核心知识App Router、SSR/SSG
🟡React Router 原理数据加载、路由守卫

📝 每日练手

类型题目考点
🧮 算法从前序与中序遍历序列构造二叉树递归分治
✍️ 手写异步串行与并行串行、并行、限流并行

Day 11:Vue 全覆盖

优先级文档重点
🔴Vue 3 为什么使用 ProxyProxy vs defineProperty
🔴Vue 3 响应式原理深入ref/reactive、依赖收集
🔴虚拟 DOM 与 Diff 算法快速 Diff、与 React 对比
🟡Composition API vs Options API逻辑复用
🟡Vue 2 vs Vue 3 对比迁移策略
🟡computed vs watch三者区别
🟡组件通信方式props/emit、provide/inject
🟡Vue 生命周期Options vs Composition
🟡Vue Router 原理Hash/History、导航守卫
🟡Vuex vs Pinia状态管理对比
🟡模板编译原理Parse/Transform/Generate
🟢keep-alive 原理LRU 缓存
🟢v-if vs v-show条件渲染对比
🟢v-for 中的 keykey 在 Diff 中的作用
🟢script setup 语法defineProps/defineEmits
🟢Teleport 与 Suspense内置组件
🟢Vue 性能优化虚拟列表、懒加载

📝 每日练手

类型题目考点
🧮 算法无重复字符的最长子串滑动窗口
✍️ 手写数组扁平化 flat递归、reduce、Generator

Day 12:构建工具全覆盖

优先级文档重点
🔴Webpack 核心原理构建流程、Loader、Plugin
🔴Vite 原理与优势No-Bundle、ESM、HMR
🔴Tree ShakingESM 静态分析、sideEffects
🟡代码分割与懒加载splitChunks、动态导入
🟡Webpack 性能优化构建速度、产物体积
🟡Webpack 迁移 Vite迁移步骤、常见坑
🟡Babel 原理AST 转换、Polyfill 策略
🟡esbuild 与 SWCGo/Rust 构建工具
🟢Loader 与 Plugin 开发自定义 Loader/Plugin
🟢Source Mapdevtool、VLQ 编码
🟢模块联邦Host/Remote、微前端
🟢Rollup 与库打包ESM 打包、tsup
🟢PostCSS 与 AutoprefixerCSS 转换、browserslist
🟢Rspack/FarmRust 构建工具

📝 每日练手

类型题目考点
🧮 算法岛屿数量DFS 洪水填充
✍️ 手写重试机制 retry指数退避、可取消

Day 13:工程化体系全覆盖

优先级文档重点
🔴CI/CD 与自动化部署GitHub Actions、部署策略
🔴Monorepo 管理pnpm workspace、Turborepo
🔴前端监控与埋点错误/性能监控、SDK 设计
🟡代码规范与 LintESLint + Prettier + Husky
🟡微前端架构qiankun、Module Federation
🟡前端基础建设脚手架、公共包、物料
🟡前端测试策略Jest/Vitest、E2E
🟡Docker 与容器化Dockerfile、多阶段构建
🟢Git 工作流Git Flow、Conventional Commits
🟢组件库建设Storybook、Design Token
🟢环境管理与配置dotenv、Feature Flags
🟢Kubernetes 基础K8s 核心概念、HPA

📝 每日练手

类型题目考点
🧮 算法课程表拓扑排序(类似依赖分析)
✍️ 手写请求缓存请求去重、TTL 缓存

Day 14:性能优化全覆盖

优先级文档重点
🔴首屏优化关键渲染路径、预加载
🔴打包优化代码分割、Tree Shaking
🔴Web 性能指标与监控Core Web Vitals
🟡渲染优化重排重绘、GPU 加速
🟡长列表优化react-window
🟡SSR 与 SSG方案选择
🟡图片优化WebP/AVIF、懒加载
🟡内存优化内存泄漏、WeakMap
🟡常见性能问题与排查DevTools 排查
🟢大文件上传和下载分片、断点续传
🟢低网速下的白屏问题骨架屏、SSR
🟢动画性能优化CSS 动画、WAAPI
🟢Web Worker 优化线程池、Transferable
🟢字体优化font-display、子集化
🟢Lighthouse 性能审计评分解读
🟢性能预算预算制定、监控

📝 每日练手

类型题目考点
🧮 算法爬楼梯DP 入门
🧮 算法买卖股票的最佳时机贪心
✍️ 手写模板字符串解析双大括号、嵌套属性

第 3 周:全栈基础 + 系统架构

知识文档:Node 17 + 系统设计 32 + 设计模式 14 + 网络 12 + 服务端 23 = 98 篇 每日练手:算法 8 题 + 手写 7 题

Day 15:Node.js 全覆盖

优先级文档重点
🔴Node.js 基础特点、V8、单线程非阻塞
🔴Event Looplibuv 六阶段、与浏览器差异
🟡模块系统CJS vs ESM、循环依赖
🟡进程与线程cluster、worker_threads
🟡Express 与 Koa中间件原理、洋葱模型
🟡NestJS 框架深入IoC、装饰器、Guard
🟡Node.js 主流框架对比Express/Koa/NestJS/Fastify
🟡包管理器npm/yarn/pnpm
🟢Buffer 与 Stream四种流、背压、pipe
🟢文件系统读写、Promise API
🟢HTTP 模块createServer、Keep-Alive
🟢错误处理异步错误、uncaughtException
🟢调试与性能分析inspect、profiling
🟢Node.js 安全SQL注入、XSS
🟢数据库连接连接池、ORM
🟢部署与运维PM2、Docker
🟢Node.js 新特性ESM、test runner

📝 每日练手

类型题目考点
🧮 算法全排列回溯
✍️ 手写大数相加字符串加法、BigInt

Day 16:系统设计 Part 1 —— SDK + 组件 + 基建

优先级文档重点
🔴前端 SDK 通用架构设计插件化、事件驱动
🔴设计组件库分层架构、Headless UI
🔴前端 React 组件通用设计Compound Components
🟡设计 BFF 网关层请求聚合、限流熔断
🟡前端 CI/CD 部署系统Pipeline、灰度发布
🟡设计 SSR 框架与应用架构Hydration、Streaming
🟡设计前端沙箱隔离系统Proxy 沙箱、CSS 隔离
🟡设计前端灰度发布系统Feature Flag、A/B 测试

📝 每日练手

类型题目考点
🧮 算法最大子数组和Kadane 算法
✍️ 手写版本号比较基础比较、版本范围

Day 17:系统设计 Part 2 —— 复杂系统

优先级文档重点
🔴设计知识库系统文档管理、全文搜索
🔴设计实时通讯系统WebSocket、消息投递
🔴设计权限管理系统RBAC、动态路由
🟡设计在线协同编辑系统OT、CRDT、Yjs
🟡设计低代码/可视化搭建平台Schema 驱动、拖拽
🟡设计表单引擎Schema 驱动、联动
🟡设计富文本编辑器Slate.js、ProseMirror
🟡设计在线表格系统Canvas 渲染、公式引擎
🟡设计单点登录系统CAS、OAuth 2.0、PKCE

📝 每日练手

类型题目考点
🧮 算法零钱兑换完全背包 DP
✍️ 手写解析 URL 参数query string、URLSearchParams

Day 18:系统设计 Part 3 —— 业务系统

优先级文档重点
🟡设计前端埋点监控系统错误监控、SDK
🟡设计大文件上传系统分片、断点续传
🟡设计 Feed 信息流系统无限滚动、推拉模型
🟡设计搜索自动补全系统Trie、防抖
🟡设计 AI Agent 的前端架构流式渲染、工具调用
🟢设计直播弹幕系统Canvas、消息队列
🟢设计多语言管理系统i18n、翻译管理
🟢设计扫码登录系统状态机、WebSocket

📝 每日练手

类型题目考点
🧮 算法最长递增子序列DP + 二分
✍️ 手写手写 reducereduce/reduceRight

Day 19:系统设计 Part 4 + 设计模式

系统设计剩余(8 篇):

优先级文档重点
🟢设计视频播放器 SDKHLS、插件化
🟢设计在线图片编辑器Canvas、Fabric.js
🟢设计图片处理 CDN 服务Sharp、CDN 缓存
🟢设计秒杀系统的前端高并发、降级
🟢设计移动端上拉加载下拉刷新Touch 手势
🟢设计 H5 海报生成系统html2canvas
🟢设计文件预览系统PDF.js、水印
🟢Web3 钱包连接方案EIP-1193

设计模式(14 篇):

优先级文档重点
🔴观察者模式与发布订阅模式两者区别
🟡单例模式懒汉饿汉、应用场景
🟡策略模式消除 if-else
🟡代理模式ES6 Proxy、缓存代理
🟡工厂模式简单/抽象工厂
🟡装饰器模式HOC、TS 装饰器
🟢适配器模式接口转换
🟢迭代器模式迭代协议
🟢状态模式状态机
🟢命令模式撤销重做
🟢组合模式树形结构
🟢模板方法模式算法骨架
🟢中介者模式解耦交互
🟢享元模式对象池

📝 每日练手

类型题目考点
🧮 算法LRU 缓存哈希 + 双向链表
🧮 算法数组中的第 K 个最大元素快速选择
✍️ 手写手写 map 和 filtermap/filter/forEach

Day 20:计算机网络全覆盖

优先级文档重点
🔴HTTP/HTTPS 协议状态码、Headers、TLS
🔴TCP 与 UDP三次握手、四次挥手
🔴HTTP/2 与 HTTP/3多路复用、QUIC
🟡DNS 域名解析解析过程、前端优化
🟡Cookie 与 Session安全属性、分布式
🟡JWT 认证结构、刷新机制
🟡RESTful API 设计幂等性、版本控制
🟡网络安全HTTPS、中间人攻击
🟢CDN 原理边缘节点、缓存策略
🟢网络模型OSI 七层、TCP/IP 四层
🟢代理与负载均衡正向/反向代理、Nginx
🟢GraphQL与 REST 对比

📝 每日练手

类型题目考点
🧮 算法搜索旋转排序数组二分查找变体
✍️ 手写红绿灯async/await、状态机

Day 21:服务端全覆盖

优先级文档重点
🔴Nginx 配置与部署反向代理、负载均衡
🔴认证鉴权体系JWT、OAuth 2.0、RBAC
🟡微服务基础服务拆分、API 网关
🟡服务端缓存策略Redis、穿透/击穿/雪崩
🟡限流与熔断令牌桶、熔断器
🟡分布式系统基础CAP、分布式锁
🟡API 设计与文档OpenAPI、版本控制
🟡Serverless 与边缘计算函数计算、冷启动
🟢Linux 常用命令文件操作、进程管理
🟢消息队列Kafka、异步解耦
🟢日志与监控体系ELK、Prometheus
🟢服务端性能优化数据库优化、连接池
🟢WebSocket 服务端Socket.IO、集群
🟢gRPC 与 RPCProtocol Buffers
🟢GraphQL 服务端Schema、DataLoader
🟢容器与编排基础Docker、K8s
🟢服务端安全SSRF、密钥管理
🟢文件存储与 OSS对象存储、CDN
🟢定时任务与后台作业Cron、Bull Queue
🟢邮件与通知服务邮件、推送
🟢Webhook 设计与实现签名验证、重试
🟢健康检查与优雅停机探针、零停机
🟢配置中心与密钥管理Vault、动态配置

📝 每日练手

类型题目考点
🧮 算法螺旋矩阵边界收缩模拟
✍️ 手写sleep 函数可取消、AbortController

第 4 周:扩展领域 + 场景实战 + 模拟面试

知识文档:数据库 22 + 编译 3 + 跨端 7 + Wasm 2 + AI 19 + 场景 44 + 开放 28 = 125 篇 每日练手:算法 5 题 + 手写 4 题 + 复习巩固

Day 22:数据库 + 编译原理

数据库(22 篇):

优先级文档重点
🟡SQL vs NoSQL选型依据
🟡数据库索引原理B+ 树、最左前缀
🟡事务与并发控制ACID、隔离级别
🟡Redis 基础数据结构、持久化、分布式锁
🟡ORM 框架对比TypeORM/Prisma/Drizzle
🟢MySQL 基础与查询JOIN、子查询
🟢MongoDB 基础文档模型、聚合
🟢数据库设计与范式三范式、ER 模型
🟢SQL 查询优化EXPLAIN、索引优化
🟢PostgreSQL 特性JSONB、CTE
🟢数据库高可用主从复制
🟢数据库迁移与版本管理Migration 工具
🟢数据库安全SQL 注入防御
🟢缓存与数据库一致性Cache Aside
🟢分布式事务2PC、Saga
🟢向量数据库Embedding、RAG
🟢数据建模实战电商/社交模型
🟢数据库连接与连接池配置优化
🟢搜索引擎Elasticsearch
🟢时序数据库与日志存储InfluxDB
🟢数据备份与恢复备份策略
🟢SQLite 与嵌入式数据库Turso、D1

编译原理(3 篇):

优先级文档重点
🟡编译原理基础编译流程、AST
🟢AST 实战应用Babel 插件、ESLint
🟢手写简易编译器JSON Parser

📝 每日练手

类型题目考点
🧮 算法最长回文子串中心扩展
✍️ 手写带过期时间的 localStorageTTL 缓存

Day 23:跨端开发 + WebAssembly + AI Part 1

跨端开发(7 篇):

优先级文档重点
🟡跨端方案对比与选型选型决策框架
🟢PWA 渐进式 Web 应用Service Worker
🟢React Native 基础与原理新架构、JSI
🟢Flutter 基础与原理三棵树、Dart
🟢小程序原理与跨端框架双线程、Taro
🟢Electron 桌面开发IPC、安全
🟢Tauri 桌面开发Rust、WebView

WebAssembly(2 篇):

优先级文档重点
🟢WebAssembly 基础概念、与 JS 交互
🟢Wasm 实战应用FFmpeg.wasm

AI Part 1(10 篇):

优先级文档重点
🔴AI 基础与大语言模型LLM 原理、Token
🟡前端接入大模型 APISSE、Function Calling
🟡流式渲染与 MarkdownReadableStream
🟡Prompt 工程Few-shot、CoT
🟡AI SDK 与工具库Vercel AI SDK
🟡AI 辅助开发工具选型、Rules
🟢RAG 检索增强生成向量数据库、分块
🟢Function Calling 与 AgentAgent 核心循环
🟢MCP 协议Tools/Resources/Prompts
🟢AI 聊天界面设计消息模型、自动滚动

📝 每日练手

类型题目考点
🧮 算法扁平化嵌套数组与对象递归、迭代
🧮 算法DOM 树的最近公共祖先路径比较
✍️ 手写字符串字符分组排序频次排序

Day 24:AI Part 2 + 场景题 Part 1(性能排查 + 线上故障)

AI Part 2(9 篇):

优先级文档重点
🟢AI 应用性能优化TTFT、缓存
🟢AI 应用安全Prompt 注入防御
🟢多模态 AI 应用Vision、语音
🟢浏览器端 AIWebLLM、WebGPU
🟢生成式 UIstreamUI
🟢AI 生成服务端Supabase
🟢AI 数据可视化NL2Chart
🟢向量搜索与 Embedding余弦相似度
🟢AI 全流程研发实战需求到部署

场景题 Part 1 —— 性能排查 + 线上故障(15 篇):

优先级文档重点
🔴页面加载慢排查Navigation Timing
🔴内存泄漏排查Heap Snapshot
🔴线上故障应急止血→定位→修复→复盘
🟡运行时卡顿排查Long Task、时间切片
🟡首屏白屏排查ErrorBoundary
🟡移动端性能排查远程调试
🟡打包产物分析bundle-analyzer
🟡CDN 资源容灾多 CDN 切换
🟡缓存版本不一致SW 更新
🟡偶现 Bug 排查竞态条件
🟢第三方依赖安全漏洞npm audit
🟢部署后样式/功能异常环境变量
🟢资源加载失败处理CDN 切换
🟢异常数据防御性编程Zod 校验
🟢XSS/CSRF 漏洞修复实战DOMPurify、CSP

📝 每日练手

类型题目考点
🧮 算法JSON 深度比较与 DiffdeepEqual、递归比较
🧮 算法实现简易 JSON.parse递归下降解析
✍️ 手写两个数组的交集Set、Map 计数

Day 25:场景题 Part 2 —— 交互方案

优先级文档重点
🔴Token 无感刷新Axios 拦截器、双 Token
🔴接口竞态处理AbortController
🟡复杂表单设计与优化React Hook Form
🟡实时搜索与自动补全防抖、高亮
🟡无限滚动与分页IntersectionObserver
🟡拖拽排序@dnd-kit
🟡多标签页通信与数据同步BroadcastChannel
🟡水印实现与防篡改MutationObserver
🟡前端导出 Excel/PDFSheetJS、jsPDF
🟢倒计时精度与服务端时间同步drift 补偿
🟢前端容错与降级策略ErrorBoundary
🟢请求重试与超时策略指数退避
🟢断线重连与离线处理WebSocket 重连
🟢敏感数据安全处理数据脱敏
🟢前端鉴权方案选型JWT vs Session

📝 每日练手

类型题目考点
✍️ 手写判断 DOM 祖先节点contains、最近公共祖先

所有新题已分配完毕,从明天起进入复习巩固阶段。

Day 26:场景题 Part 3 —— 工程实践

优先级文档重点
🔴前端技术选型方法论评估维度
🟡接手遗留项目重构策略绞杀者模式
🟡技术栈升级迁移Vue2→3、Webpack→Vite
🟡前端质量保障体系测试金字塔
🟡发布与回滚策略灰度、CDN 回切
🟡技术方案设计与评审方案文档模板
🟢代码规范如何落地渐进推行
🟢前后端高效协作API First
🟢需求排期与风险管理工时评估
🟢技术债务管理优先级矩阵
🟢移动端常见兼容问题软键盘、滚动穿透
🟢跨浏览器兼容处理特性检测
🟢微信/WebView 环境兼容JSBridge
🟢响应式适配实践容器查询

📝 每日练手(复习)

回顾 Day 1-7 的算法和手写题,重写做错或不熟的题目:

  • 重写:Promise、深拷贝、两数之和、反转链表
  • 限时:每题 10 分钟内完成

Day 27:开放题 Part 1(高频重点)

行为面试(Behavioral Interview)

资深面试 30%+ 的时间考察软技能。每道开放题都用 STAR 法则准备结构化回答。

优先级文档重点
🔴你做过最有挑战的技术难题STAR 法则
🔴你在项目中遇到的最难解决的 BugBug 排查方法论
🔴你做过最有成就感的项目量化成果
🔴如何做技术方案对比决策矩阵
🔴如何推动团队采用新技术试点→推广
🔴如何理解前端工程化四大支柱
🔴如何理解前端架构分层模型
🟡如何带领前端团队技术规划
🟡如何做好 Code Review关注点、流程
🟡如何看待 AI 对前端的影响能力转型
🟡前端工程师的职业发展路线技术线/管理线
🟡如何衡量前端代码质量度量指标
🟡前端未来 3-5 年的趋势AI 原生
🟡如何做技术规划OKR 设定
🟡如何从业务角度思考技术方案ROI 评估

📝 每日练手(复习)

回顾 Day 8-14 的算法和手写题,重写做错或不熟的题目:

  • 重写:EventEmitter、LRU 缓存、二叉树遍历
  • 限时:每题 10 分钟内完成

Day 28:开放题 Part 2 + 手写高频速刷

开放题 Part 2(14 篇):

优先级文档重点
🟡如何在有限时间内交付高质量代码取舍原则
🟡如果让你重构现有项目渐进式迁移
🟡如何看待微前端适用场景
🟡如何看待前端框架之争技术选型
🟢如何持续学习前端技术学习体系
🟢如何做技术分享选题、演讲
🟢如何培养和指导初中级工程师分层培养
🟢如何建设技术文档体系ADR
🟢如何做好跨部门技术协作联调效率
🟢如何平衡创新和稳定性Feature Flag
🟢你对前端边界扩展的看法BFF、Serverless
🟢如何建设工程师文化Hackathon
🟢如何评估和引入开源方案选型标准
🟢如何处理技术方案的分歧Disagree and Commit

📝 每日练手(复习)

手写高频 5 题限时速刷(每题 8 分钟):

  1. 手写 Promise(含 then 链)
  2. 深拷贝(含循环引用)
  3. 防抖节流
  4. EventEmitter
  5. Promise.all

Day 29:全面复盘 + 查漏补缺

上午:薄弱领域专项复习

回顾 30 天的学习笔记,找出薄弱环节重点突破:

  • 翻阅之前标记的"不熟"或"做错"的题目
  • 重新阅读对应文档的核心部分

下午:高频算法速写

从 34 道算法题中选出 10 道高频题限时默写:

题目限时
两数之和5 min
反转链表5 min
有效的括号5 min
无重复字符最长子串8 min
二叉树层序遍历8 min
LRU 缓存10 min
全排列8 min
接雨水10 min
爬楼梯5 min
三数之和8 min

晚上:自我介绍 + 项目话术

  • 打磨 2 分钟自我介绍
  • 3 个核心项目 STAR 话术过一遍
  • 准备反问问题

Day 30:模拟面试 + 最终 Checklist

上午:模拟面试(3 轮)

一面模拟(基础 + 编码,45 min):

  1. 自我介绍(2 分钟)
  2. JS 基础 2 题(10 分钟)
  3. 框架原理 2 题(10 分钟)
  4. 手写代码 1 题(15 分钟)
  5. 项目深挖(10 分钟)

二面模拟(深度 + 设计,45 min):

  1. 项目深挖 —— 一个项目从头到尾(20 分钟)
  2. 系统设计题(15 分钟)
  3. 场景题 / 开放题(10 分钟)

终面模拟(软技能,30 min):

  1. 职业规划、为什么换工作
  2. 团队协作、冲突处理
  3. 技术视野和判断力

下午:最终 Checklist

  • 自我介绍打磨到 2 分钟,流畅自然
  • 3 个核心项目各能讲 10 分钟,经得起深挖
  • 手写 Promise、深拷贝、防抖节流、EventEmitter 闭眼能写
  • React Fiber / Vue 响应式原理,能画图讲清楚
  • 至少准备 2 个系统设计方案(可画架构图)
  • 算法 34 题思路清晰,核心 20 题能默写
  • 5 个开放题有 STAR 结构化回答
  • 准备好反问问题(团队技术栈、业务方向、技术文化)

每日练手分配总览

算法题分配(34 题 → Day 1-24)

日期题目考点
Day 1两数之和、有效的括号哈希表、栈
Day 2反转链表、合并两个有序链表链表
Day 3移动零、最小栈双指针、栈
Day 4三数之和排序 + 双指针
Day 5字符串相加、千分位格式化字符串
Day 6合并区间排序 + 贪心
Day 7接雨水双指针 / 单调栈
Day 8二叉树层序遍历、最大深度BFS、递归
Day 9对称二叉树、二叉树右视图镜像、BFS
Day 10前序+中序构造二叉树递归分治
Day 11无重复字符最长子串滑动窗口
Day 12岛屿数量DFS
Day 13课程表拓扑排序
Day 14爬楼梯、买卖股票DP、贪心
Day 15全排列回溯
Day 16最大子数组和Kadane
Day 17零钱兑换完全背包 DP
Day 18最长递增子序列DP + 二分
Day 19LRU 缓存、第 K 大元素设计、快选
Day 20搜索旋转排序数组二分变体
Day 21螺旋矩阵模拟
Day 22最长回文子串中心扩展
Day 23扁平化嵌套结构、DOM LCA递归
Day 24JSON Diff、简易 JSON.parse递归比较/解析

手写题分配(25 题 → Day 1-25)

日期题目考点
Day 1手写 PromisePromises/A+ 规范
Day 2深拷贝与浅拷贝循环引用、WeakMap
Day 3手写 EventEmitter发布订阅、泛型
Day 4手写 Promise 静态方法all/race/allSettled/any
Day 5手写 new/instanceof/typeof原型链遍历
Day 6手写柯里化 curry占位符、类型安全
Day 7限流调度器并发控制、优先级
Day 8LRU 缓存双向链表 + 哈希表
Day 9遍历二叉树前/中/后序、Morris
Day 10异步串行与并行限流并行、管道
Day 11数组扁平化 flat递归、reduce
Day 12重试机制 retry指数退避、可取消
Day 13请求缓存请求去重、TTL
Day 14模板字符串解析双大括号、过滤器
Day 15大数相加字符串加法、BigInt
Day 16版本号比较版本范围
Day 17解析 URL 参数query string
Day 18手写 reducereduce/reduceRight
Day 19手写 map 和 filtermap/filter/forEach
Day 20红绿灯async/await、状态机
Day 21sleep 函数可取消、AbortController
Day 22带过期时间的 localStorageTTL 缓存
Day 23字符串字符分组排序频次排序
Day 24两个数组的交集Set、Map 计数
Day 25判断 DOM 祖先节点contains、LCA

文档覆盖统计

分类总数安排日期
算法基础6Day 1
JavaScript18Day 1-2
TypeScript16Day 3
CSS18Day 4
HTML6Day 5
浏览器16Day 5-6
项目经验24Day 7
React18Day 8-10
Vue17Day 11
构建工具14Day 12
前端工程化12Day 13
性能优化16Day 14
Node.js17Day 15
系统架构32Day 16-19
设计模式14Day 19
计算机网络12Day 20
服务端23Day 21
数据库22Day 22
编译原理3Day 22
跨端开发7Day 23
WebAssembly2Day 23
AI19Day 23-24
场景题44Day 24-26
开放题28Day 27-28
算法题34Day 1-24(每日练手)
手写代码25Day 1-25(每日练手)
合计46330 天全覆盖

面试当天 Checklist

  • 回顾自我介绍和核心项目要点
  • 手写题热手(写一道 Promise 或深拷贝)
  • 检查网络、摄像头、麦克风(远程面试)
  • 准备纸笔(现场面试)或在线编辑器(远程面试)
  • 准备 2-3 个反问问题
  • 心态调整:面试是双向选择,展示真实水平就好
面试表达的黄金法则
  1. 先总后分:先给结论,再展开细节
  2. 有深有浅:核心点深入讲,非核心点一句带过
  3. 有理有据:观点 + 原因 + 例子
  4. 主动引导:把话题引向你擅长的领域
  5. 坦诚不装:不会的坦诚说不会,但可以说你的思考方向