Skip to content

Vue3 高频面试题体系(前端面试复习版)

目标:按照真实前端面试的高频方向,系统化复习 Vue3。

适合:

  • Vue3 前端开发
  • 准备前端面试
  • 想从“会用 Vue”提升到“理解 Vue”

建议学习方式:

  1. 学完一个模块后自己复述
  2. 使用 AI 继续深挖
  3. 一定要结合真实项目
  4. 不要死记硬背

一、Vue3 基础核心(必问)

这一部分几乎所有 Vue 面试都会问。


1. Vue3 相比 Vue2 有什么提升

高频问题

  • Vue3 为什么更快
  • 为什么重写
  • Proxy 为什么比 defineProperty 好
  • Composition API 为什么出现

核心点

  • Proxy
  • Tree Shaking
  • Composition API
  • 更好的 TypeScript 支持
  • 编译优化
  • PatchFlag
  • 静态提升

深挖方向

  • Vue2 为什么数组监听有问题
  • 为什么 Vue2 需要 $set
  • Proxy 能监听哪些操作

2. Composition API

高频问题

  • 为什么使用 Composition API
  • 和 Options API 区别
  • setup 执行时机
  • setup 为什么没有 this
  • <script setup> 做了什么

核心点

  • 逻辑复用
  • 更好的类型推导
  • 避免 options 横向拆分

深挖方向

  • setup 比 beforeCreate 还早
  • 编译时宏
  • defineProps 原理

二、响应式原理(核心重点)

这一块是 Vue 面试的核心中的核心。

不会响应式,很难算真正理解 Vue3。


1. reactive 和 ref 区别

必会问题

  • 为什么有 ref
  • ref 为什么要 .value
  • reactive 为什么不能直接赋值
  • reactive 和 ref 如何选择

核心点

  • reactive 基于 Proxy
  • ref 基于 getter/setter
  • primitive 类型问题
  • 自动解包

深挖方向

  • ref 为什么还能响应式
  • shallowRef
  • triggerRef
  • customRef

2. Vue3 响应式原理

必会内容

  • track
  • trigger
  • effect
  • WeakMap
  • dep
  • 依赖收集
  • 派发更新

必须理解的数据结构

js
WeakMap => Map => Set

AI 深挖建议

text
请从源码角度讲解 Vue3 的响应式原理

3. computed

高频问题

  • computed 和 watch 区别
  • computed 为什么有缓存
  • dirty 标记
  • lazy effect

深挖方向

  • computed 是同步还是异步
  • computed 为什么不能做异步

4. watch 和 watchEffect

高频问题

  • watch 和 watchEffect 区别
  • immediate
  • deep
  • flush
  • cleanup

深挖方向

  • watch 为什么能拿 oldValue
  • watchEffect 为什么不能
  • flush: post/pre/sync

三、生命周期(高频)


1. Vue3 生命周期变化

高频问题

  • beforeDestroy 改成什么
  • destroyed 改成什么

核心点

  • beforeUnmount
  • unmounted

2. setup 和生命周期关系

高频问题

  • setup 执行时机
  • setup 能不能访问 data
  • setup 和 created 谁先执行

3. keep-alive 生命周期

高频问题

  • activated
  • deactivated

真实项目特别爱问。


四、组件通信(高频)


1. 父子通信

必会内容

  • props
  • emits
  • defineExpose

深挖方向

  • props 为什么只读
  • emit 为什么要声明

2. v-model 原理

Vue3 重点

js
modelValue
update:modelValue

深挖方向

  • 多 v-model
  • v-model 修饰符

3. provide / inject

高频问题

  • 响应式问题
  • 使用场景

4. 跨组件通信

高频内容

  • mitt
  • pinia
  • provide/inject

深挖方向

  • 为什么 Vue3 去掉 EventBus

五、组件渲染与 Diff(中高级重点)

这一块是中高级分水岭。


1. 虚拟 DOM

高频问题

  • 为什么需要虚拟 DOM
  • 虚拟 DOM 比真实 DOM 快吗

正确理解

不一定更快,而是更可控。


2. Diff 算法

必会内容

  • 同层比较
  • key
  • 双端 diff
  • 最长递增子序列(LIS)

深挖方向

  • 为什么不能用 index 当 key
  • 为什么 key 可以提升性能

3. PatchFlag

高频内容

  • 编译优化
  • 动态节点标记

4. 静态提升

高频内容

  • hoistStatic

六、Vue3 编译原理(高级)


1. template 到 render 过程

核心流程

text
template
-> AST
-> transform
-> generate
-> render

2. 为什么 Vue3 更快

必会内容

  • Block Tree
  • PatchFlag
  • 静态提升

七、性能优化(真实项目高频)


1. Vue 性能优化方案

高频内容

  • 路由懒加载
  • keep-alive
  • v-show/v-if
  • computed 缓存
  • 大列表优化
  • 虚拟列表

2. 大列表优化

高频内容

  • 虚拟列表
  • 分页
  • 懒加载

3. watch 性能问题

深挖方向

  • deep watch 性能
  • 无限递归更新

八、Pinia(Vue3 高频)

现在基本属于必问内容。


1. Pinia vs Vuex

高频内容

  • 去 mutation
  • TS 更友好
  • 模块天然拆分

2. Pinia 响应式原理

高频问题

  • store 为什么是响应式

3. 持久化

真实项目

  • localStorage
  • pinia-plugin-persistedstate

九、路由(真实项目高频)


1. Vue Router 原理

高频问题

  • hash vs history
  • history 为什么需要服务端支持

2. 动态路由

高频内容

  • addRoute
  • 权限控制

3. 路由守卫

高频内容

  • beforeEach
  • beforeResolve
  • afterEach

深挖方向

  • next 为什么容易出问题
  • Vue Router 4 为什么弱化 next

十、工程化(Vue3 面试越来越多)


1. Vite 原理

高频内容

  • ES Module
  • 为什么冷启动快
  • 预构建
  • HMR

真实问题

  • optimizeDeps
  • .vite 缓存
  • Outdated Optimize Dep

2. Vite 和 Webpack 区别

高频内容

  • 开发阶段
  • 构建阶段

十一、SSR / SEO(加分项)


1. CSR vs SSR

高频内容

  • 首屏
  • SEO

2. hydration

中高级重点

  • 服务端 HTML 激活

十二、源码级(高级面试)


1. effect 实现


2. scheduler


3. nextTick 原理

高频内容

  • 微任务
  • Promise.then

4. 异步更新队列


十三、真实项目问题(最重要)

现在很多面试不只是八股。

而是:

你在项目里真正做过什么。


1. 权限系统

必须重点准备

  • 动态路由
  • RBAC
  • 按钮权限
  • 菜单权限

2. 登录方案

高频内容

  • token 刷新
  • 单点登录
  • iframe 授权

3. 性能优化案例

必须准备

  • 你真正做过什么优化
  • 数据指标
  • 优化前后

十四、面试官最爱“连续深挖”的问题


Vue3 响应式

text
reactive 和 ref 区别

为什么 ref 需要 value

track trigger 原理

WeakMap 为什么用 WeakMap

computed 为什么有缓存

watchEffect 为什么没有 oldValue

Diff

text
为什么 key 重要

为什么不能用 index

Vue3 diff 优化了什么

LIS 是什么

Vite

text
为什么快

为什么不打包

预构建是什么

为什么用 esbuild

HMR 为什么快

十五、推荐复习顺序(非常重要)


第一阶段(必须掌握)

  • Composition API
  • reactive/ref
  • watch/computed
  • 生命周期
  • 组件通信

第二阶段(中高级)

  • diff
  • 虚拟 DOM
  • PatchFlag
  • nextTick
  • scheduler

第三阶段(工程化)

  • Vite
  • 性能优化
  • 路由权限

第四阶段(源码)

  • effect
  • track
  • trigger
  • AST
  • 编译原理

十六、最有效的 AI 复习方式(推荐)


方法1:深挖模式

text
请连续深挖 Vue3 响应式,直到源码级

方法2:面试模式

text
你现在是高级前端面试官,请面试我 Vue3,一次只问一个问题

方法3:项目模式

text
请结合后台管理系统场景,讲 Vue3 权限控制

方法4:源码模式

text
请手写简易版 reactive

十七、你当前最该重点突破的方向(结合你的技术栈)

第一优先级

  • Vue3 响应式
  • watch/computed
  • diff
  • nextTick

第二优先级

  • Vite
  • 工程化
  • 缓存
  • optimizeDeps

第三优先级

  • 动态路由
  • 权限系统
  • 登录授权

这些都非常接近真实企业项目场景。


十八、推荐你的复习节奏(非常建议)

每天学习结构(1~2 小时)

第一阶段:学习(30 分钟)

学习一个核心模块。

例如:

  • reactive/ref
  • diff
  • Vite

第二阶段:深挖(30 分钟)

使用 AI 深挖:

text
继续深挖
text
从源码角度解释
text
真实项目中会遇到什么问题

第三阶段:输出(30 分钟)

一定要自己讲。

例如:

text
我来回答,你帮我评分

面试最重要的是:

能清晰表达。


十九、最终目标

最终你要达到的不是:

“我看过 Vue3”

而是:

  • 能讲原理
  • 能讲设计原因
  • 能讲真实项目
  • 能抗住连续追问
  • 能从源码角度解释问题

这样你在中高级前端面试中会非常有竞争力。

基于 Obsidian + VitePress 构建