vue面试题汇总
# vue 基础面试题
vue data 为什么要 return,为什么 Vue 的 data 要返回对象?不返回有啥问题?
如何实现 vue 组件的异步加载?
Proxy 与 Object.defineProperty 优劣对比
谈谈 vue 和 react 的区别和优劣,Vue 和 React 的 Diff 算法有哪些区别,react 和 vue 更新机制的区别
jQuery 和 vue 的区别
vue 组件什么时候销毁
vue 的 props 和 slot 的使用,区别
vue 不能检测数组或对象变动问题的解决方法有哪些?
列举 vue 中触发视图更新的方法
你觉得什么样的项目比较适合用 vue 框架?
vue 中用过哪些修饰器?【举例】
SSR 解决了什么问题?有做过 SSR 吗?你是怎么做的?
你对 SPA 单页面的理解,它的优缺点分别是什么?如何实现 SPA 应用呢
SPA 和 MPA 分别适合在什么场景下开发
v-on 可以监听多个方法吗?
怎么理解 vue 单向数据流的
$attrs和$listener 有了解吗
$set和$forceupdate 都做了哪些事
vue scoped 是怎么实现的,dom 上的哈希是如何和 style 中的哈希对应起来的,又是如何保证每次生成的哈希不变的
如果 template 语言换掉的话,会如何处理。
vue 是如何保证父组件重新渲染不导致子级重新渲染的
Vue 从修改属性到渲染到页面上都经历了什么
VUE 脚手架内部的编译过程
vue 的 hook 的使用
props 怎么自定义验证
如果 Vue2 没有实现 VirtualDOM,可以做到服务端渲染吗
function component 里面怎么进行状态共享?
vue 从 data 改变到页面渲染的过程
Vue 在什么时候执行更新
vue 的挂载怎么实现的 el 和
$mount
有啥区别对 vue 中 data 进行更新会发生什么(生命周期进行更新、渲染)
在.vue 文件中 style 是必须的吗?那 script 是必须的吗?为什么?
ref 和$ref 的作用
vue 中怎么重置 data?
为什么 vue 是渐进式的
Vue MVVM 实现思路
# vue 生命周期
vue 生命周期,页面第一次加载会触发哪些 Vue 的生命周期
什么时候用到 bedforeDestory?
在 beforeCreated 中发出请求合适吗?会出现什么问题?
mounted 拿到数据可以后可以直接获取 dom 吗
vue 挂载和卸载父子组件生命周期钩子执行顺序
# vue 组件通信
vue 组件通信的方式,说说他们的原理
eventBus 介绍,使用业务场景,和 vuex 对比,优缺点,vue 中 eventbus 缺陷
手写 emit 传值给父组件的关键实现代码
兄弟组件通信你会考虑用哪些方法
- provide 和 inject 是响应式的吗?(数据并不是响应式)
provide 和 inject 怎么变成响应式
# vue 插槽
vue 插槽 slot 如何用(封装组件多个插槽如何使用)
- 说说你对 slot 的理解?slot 使用场景有哪些?
# vue 指令
v-text 与{{}}与 v-html 区别
vue 自定义指令用过么,有哪些应用场景
说出至少 4 种 vue 当中的指令和它的用法?
v-for 与 v-if 的优先级,为什么 v-if 和 v-for 不能连用
template 是否能用 v-show?
vue 中用 for 循环渲染组件,可以事件委托吗
# vue 项目相关
怎么编写一个 vue 插件、Vue.use 函数里面具体做了哪些事
你是怎么处理 vue 项目中的错误的?
请说出 vue.cli 项目中 src 目录每个文件夹和文件的用法?
vue 要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
说下你的 vue 项目的目录结构,如果是大型项目你该怎么划分结构和划分组件呢?
说说你使用 Vue 框架踩过最大的坑是什么?怎么解决的?
vue 项目中如何约束 rxjs 数据的类型
怎么给 vue 定义全局的方法?
从 0 到 1 自己构架一个 vue 项目,说说有哪些步骤、哪些重要插件、目录结构你会怎么组织
vue 打包后的 js 文大概有哪些,这些文件包含的内容大概是什么
有一个很大的 object 需要父组件传递给子组件,怎样可以不对其进行监听
# vue 高级面试题(追问)
Vue 实例挂载的过程
Vue 源码的整个实现过程。
说说 Vue 的依赖收集过程吧,当数据发生变化后,依赖会重新收集吗?
Vue2 源码中大量节点更新时的策略
Vue 的数据为什么频繁变化但只会更新一次
Vue 的 Mixin,created 和 data 中的值合并策略
keep-alive 的原理是什么,如果不用它的话怎么自己实现类似的效果
Vue 的 filter 原理有了解吗,如果需要你实现一个 filter,可以实现把一个字符串首字母大写的功能,你要如何做
vue-lazyloader 的原理
Vue 虚拟化列表的实现原理
# vue 优化
Vue 使用过哪些优化手段?
vue 首屏加载优化
# vue 双向绑定原理
vue 响应式是如何实现的,vue2 中的响应式有什么问题和不足点;为什么数组下标复制和对象新增属性不会被拦截到。为什么 vue3 中换 proxy 实现了。
v-model 的实现原理,data 中不定义相关字段,直接使用 v-model 可以吗?
vue 数据拦截是怎么实现的?vue2 和 vue3 数据拦截的区别?为什么 proxy 不能向下兼容?
为什么数组不能直接更改下标更新?
Vue2 的数据响应式有两个缺陷,你知道是哪两个缺陷么,为什么会有这样的缺陷,如何解决
Vue 如何实现的数组的监听,为什么 Vue 没有对数组下标修改做劫持
Watcher 的 cleanDeps 是做什么的
如果 data 里有一个对象,不希望它被深层监听,需要怎么做
如果一个变量不在页面上出现过(或者使用过),响应式系统是怎么应对的
父子组件如何分开收集依赖,或者说父子组件如何确保父组件只收集自己的依赖,子组件只收集自己的依赖
在 Watcher 内再 new 一个 Watcher 后,如何保证依赖收集不会出错
watcher 怎么去重
# vue 模板编译过程
Vue 如何将 template 转换为 render 函数?
又是如何识别出标签对应的组件?
组件层级之间的创建顺序是怎样的?渲染顺序又是怎样的?
Vue 调用 render 函数的时机是在什么时机被触发的,后续状态变更导致 render 又是谁触发的
写过 render 函数么,跟 template 有啥区别
Vue Template 生成的 render 函数里面都有什么内容
转换一个.vue 文件有哪些步骤
# vue watch 的原理
watch 的 immediate 为 true 时在生命周期哪一步执行,有无 deep 区别
- watch 与 computed 应用场景,区别,怎么实现的数组 watch
watch 能监听 computed 的属性吗
Watch 进去就触发的?如何做到?
watcher 怎么去重-异步更新队列
# vue computed 的原理
为什么避免在 computed 里面进行修改数据的操作?(答出懒求值应该就可以,实际是特殊 watcher)
computed 计算值为什么还可以依赖另外一个 computed 计算值
computed 如何实现传参?computed 如何赋值
- 父子组件的 created()和 computed()的执行先后顺序,为什么
# vue key 的作用及原理
在 v-for 时写了 key ,将第二个元素和第三个元素交换了顺序,实际的 diff 算法怎样的
为什么不建议用 index 做 key,为什么不建议用随机数做 key
# diff 算法原理
介绍一下 diff 算法,diff 的使用场景
diff 算法具体怎么对比的
patch 的实现原理是怎么样的?
DIFF 算法为什么是 O(n)复杂度而不是 O(n^3) ,
# 虚拟 dom 原理及优缺点
问:为什么要用 Virtul Dom,简述虚拟 dom 实现原理
追问:Virtual Dom 的效率一定比直接操作 Dom 高吗
追问:你说 Virtual Dom 减少不必要的 Dom 操作,让你来设计如何实现这个效果
追问:Vue 的虚拟 DOM 具体实现流程,有没有看过源码,怎么判断两个虚拟 DOM 是否相等?
说说虚拟 DOM 转化为真实 DOM 的过程
Vue 虚拟 DOM 渲染在哪个生命周期
# nextTick 原理及使用场景
为什么可以在 dom 更新后执行
异步更新 DOM 这个操作,Vue 和 React 都是如何实现的,Vue 的异步处理还有其他方式可以做么,除了 MessageChannel 还有其他和他用法类似的 API 么
Vue 使用 nextTick 的原因和作用,项目哪些场景用到了 nextTick
为什么 nexttick 可以保证 dom 更新
# keep-alive 原理
keep-alive 的原理,使用有什么问题?如何解决?