版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Vue高频真实面试题(零基础到进阶全套)一、Vue基础核心面试题(初级必问)1、说说Vue2和Vue3的核心区别?这是面试最基础的必考题,核心差异集中在底层原理、API风格、性能和工程化上:1.底层原理:Vue2基于Object.defineProperty做数据劫持,只能监听对象已有属性,无法监听新增、删除属性,也不支持数组下标、长度修改的监听;Vue3使用Proxy代理整个对象,可监听任意属性的增删、数组所有操作,监听范围更全面。2.编程风格:Vue2以Options选项式API为主,代码按选项拆分(data、methods、computed),复杂业务逻辑碎片化;Vue3支持组合式API,可按业务功能聚合代码,复用性更强,适合大型项目。3.响应式机制:Vue2响应式需要对数据逐层递归劫持,初始化开销大;Vue3采用懒递归,只有被访问的属性才会进行响应式处理,初始渲染速度更快,内存占用更低。4.新增特性:Vue3新增setup语法糖、ref/reactive、Teleport、Suspense、CompositionAPI,同时支持碎片模板,无需唯一根标签。5.打包体积:Vue3做了模块化拆分,支持按需引入,相比Vue2体积更小,tree-shaking友好。2、Vue的双向绑定原理是什么?双向绑定核心是数据劫持+视图更新+事件监听。简单来说:数据变化驱动视图更新,视图修改反过来更新数据。Vue2核心:通过Object.defineProperty劫持data中数据的get/set方法,数据修改时触发set,通知依赖更新视图;同时通过v-model监听表单输入事件,将视图最新值同步到数据。Vue3核心:通过Proxy代理数据,拦截读写、删除等操作,结合effect副作用函数实现视图更新,机制更完善。补充:v-model本质是语法糖,等价于:value绑定数据+@input监听输入。3、v-if和v-show的区别?项目中怎么选择使用?v-if:是真正的条件渲染,条件为false时,元素直接销毁、不渲染DOM;切换时会频繁创建、销毁DOM,开销较大。支持模板渲染、可以配合v-else使用。v-show:只是通过CSSdisplay属性控制显示隐藏,DOM始终存在页面中,切换只修改样式,开销很小。不支持v-else,不能用于template标签。使用场景:1.页面一次性渲染、很少切换的模块,用v-if,减少初始DOM渲染和内存占用;2.需要频繁切换显示隐藏的弹窗、标签栏、按钮状态,用v-show,提升切换流畅度。4、v-for为什么要加key?key能用index吗?key是Vue虚拟DOM的唯一标识,作用是精准对比新旧虚拟DOM,减少不必要的DOM更新,提升diff算法效率。不推荐用index作为key:如果数组进行删除、插入、排序操作,数组索引会重新排序,导致key错乱,diff算法会误判元素变化,造成DOM错误更新、表单数据错乱、渲染闪烁等问题。最佳实践:使用后端返回的唯一ID作为key。5、Vue组件的生命周期有哪些?各自的使用场景?生命周期是组件从创建、挂载、更新到销毁的完整过程,核心常用钩子:1.created:组件实例创建完成,数据、方法已初始化,但DOM未生成,无法操作DOM。常用于初始化数据、发起接口请求。2.mounted:DOM挂载完成,页面节点渲染完毕。常用于操作DOM、初始化定时器、监听事件、加载第三方插件。3.updated:数据更新后DOM重新渲染完成。可获取更新后的DOM状态,避免频繁操作。4.beforeUnmount:组件销毁前执行。核心用于清除定时器、移除事件监听、取消请求,防止内存泄漏。二、Vue核心原理面试题(中级重点)1、说说Vue虚拟DOM和diff算法?虚拟DOM是对真实DOM的抽象描述,用JS对象模拟DOM结构,避免频繁操作真实DOM带来的性能损耗。页面数据变化时,会生成新的虚拟DOM树,通过diff算法对比新旧虚拟DOM,找出差异节点,只更新变化的部分DOM,而非全量刷新页面。Vue2diff特点:同级对比,不跨层级比较,通过key精准复用节点,采用头尾双指针优化列表diff效率。Vue3diff优化:新增静态标记,静态节点直接跳过对比,只更新动态节点,大幅提升渲染性能。2、computed和watch的区别?适用场景?computed计算属性:1.基于依赖缓存,依赖不变则不会重复计算;2.是属性,可直接在模板使用,支持双向、只读;3.逻辑简洁,适合多数据衍生一个结果、简单数据计算(筛选、拼接、数值计算)。watch监听:1.无缓存,数据每次变化都会执行回调;2.是函数,支持异步操作、复杂逻辑;3.适合数据变化后执行异步操作、复杂业务逻辑(监听关键词搜索、弹窗状态、路由变化)。3、Vue数据更新为什么有时视图不更新?怎么解决?该问题主要出现在Vue2中,源于Object.defineProperty的监听缺陷:1.新增对象属性、删除对象属性,无法触发视图更新;2.通过数组下标修改元素、修改数组length,无法触发更新。解决方案:1.官方API:使用this.$set新增/修改属性,this.$delete删除属性;2.数组修改:使用push、splice、map等可被监听的数组方法;3.强制更新:必要时使用this.$forceUpdate();4.最优解:Vue3直接使用Proxy,从根源解决该问题。4、nextTick的作用和原理?Vue数据更新是异步批量更新,修改数据后,DOM不会立即更新,而是缓存更新队列,等待同一事件循环结束后统一更新,提升性能。nextTick的作用:等待DOM更新完成后执行回调,可以在里面获取最新的DOM节点、操作更新后的视图。使用场景:修改数据后,需要立即操作最新DOM的场景。三、Vue组件通信面试题(高频必考)1、Vue常用的组件通信方式有哪些?1.父子通信:父传子props,子传父$emit;2.多层级祖孙通信:provide/inject,无需逐层传参;3.兄弟/跨组件通信:全局事件总线($bus)、Pinia/Vuex状态管理;4.直接实例访问:$parent、$children、$refs(适合简单场景,不推荐复杂业务使用);5.跨页面/全局通信:本地存储结合状态管理。2、props传值,子组件能不能直接修改?为什么?不能直接修改。Vue规定props是单向数据流,父组件数据变更会同步到子组件,但子组件不能反向修改父组件props,避免数据混乱、状态不可控。如果需要修改,正确做法:子组件定义本地变量接收props,或通过$emit通知父组件修改原数据。3、Vuex和Pinia的区别?现在项目为什么多用Pinia?1.结构简化:Pinia去除了Vuex繁琐的mutations,直接在actions中修改状态,代码更简洁;2.模块化:Pinia天然模块化,每个仓库独立,无需手动配置modules,支持按需引入;3.类型支持:Pinia对TS友好,类型推导更精准;4.轻量化:API简单,上手成本低,适配Vue3组合式语法,是官方推荐的新一代状态管理工具。四、Vue路由面试题(工程必备)1、路由导航守卫有哪些?执行顺序?常用守卫:全局守卫、路由独享守卫、组件内守卫。执行顺序:全局前置守卫beforeEach→路由独享守卫beforeEnter→组件内beforeRouteEnter→全局后置守卫afterEach。核心用途:登录权限拦截、页面标题修改、路由跳转校验、未登录拦截。2、路由懒加载的作用?怎么实现?作用:打包时将路由对应的组件拆分独立chunk文件,进入对应路由才加载资源,减小首屏打包体积,优化首屏加载速度,解决首页白屏、加载慢的问题。实现方式:使用import()动态导入语法配置路由组件。3、route和router的区别?$route:路由信息对象,只读,包含当前路由的path、params、query、meta等信息;$router:路由实例对象,可操作,包含push、replace、go等跳转方法。五、Vue项目实战&性能优化面试题(进阶)1、Vue项目性能优化你做过哪些?1.路由懒加载、组件懒加载,拆分打包资源,优化首屏速度;2.图片、静态资源压缩,使用CDN加载第三方资源;3.长列表优化:虚拟列表、分页加载,避免一次性渲染大量DOM;4.合理使用v-if、v-show,避免无效DOM渲染;5.销毁组件时清除定时器、事件监听,防止内存泄漏;6.打包优化:去除冗余依赖、开启gzip压缩、tree-shaking;7.接口缓存、防抖节流,减少重复请求和无效渲染。2、Vue内存泄漏的常见场景和解决方案?常见场景:定时器未清除、全局事件未移除、监听未取消、异步请求未取消、第三方插件实例未销毁。解决方案:在beforeUnmount钩子中,清除定时器、移除事件监听、终止异步请求、销毁插件实例。3、Vue3组合式API相比选项式API的优势?1.代码聚合:按业务功能组织代码,不再按选项拆分,复杂项目可读性更高;2.复用灵活:可通过自定义hooks抽离通用逻辑,复用性远优于mixin;3.无命名冲突:解决mixin变量、方法重名覆盖的问题;4.TS支持更好,类型推导精准,适合大型团队项目维护。六、高频坑点面试题(极易答错)1、mixin的缺点是什么?1.变量、方法来源不清晰,代码可读性差;2.多mixin嵌套容易出现命名冲突,覆盖原有逻辑;3.优先级混乱,维护成本高,Vue3项目基本推荐用hooks替代mixin。2、v-mo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 避光输液课件
- 2026医院感染控制测试题及答案
- 2026年秋季学期小学六年级信息科技教学计划(鲁教版)
- 2026年监理工程师考试《案例分析(水利)》真题及答案
- 2026年安全员《A证》通关练习题和答案(考点精练)附答案
- 2025年四川省公务员考试申论真题试卷(含答案)
- 办公室设计方案课件
- 办公室接待礼仪课件
- 2026年四级必背阅读题目及答案
- 鼻功能检查课件
- 2026 银行秋招 EPI 真题试卷及答案
- 2026小学生科普常识知识竞赛题及答案
- 2026年名著长征试题(附答案)
- 4.多位数乘两位数(进位)教学设计2026-2027学年人教版四年级上册数学
- 新能源充电桩标准化施工规范
- 2026年永州职业技术学院单招职业技能考试题库及答案
- 解除专业分包合同协议
- 2026年招聘消防文员笔试题库附答案
- 急诊科诊疗指南及操作规范(2025版)
- QC/T 1238-2025燃料电池发动机用空气滤清器
- 雨课堂学堂在线学堂云《高等工程热力学(北京理工)》单元测试考核答案
评论
0/150
提交评论