要招一个会vue的开发者:

  • 作为面试官的你,你还会每次都只是问这些老土的问题吗?
    • 你对MVVM的理解是什么?
    • 你知道什么是双向绑定吗?你了解它的原理吗?
    • 说说vue的生命周期有哪些?
    • 组件通讯有哪些?
    • 你用过vuex吗?
    • ...

  • 作为面试者的你,在网上搜索下「vue面试题及答案」,看完后你是不是觉得:

    • 自己掌握了武林秘籍?
    • 能忽悠住面试官了?
    • 我熟练掌握vue了?

记一次印象深刻的面试

面试过很多小伙伴(要招会vue的开发者),没工作经验的,5年工作经验的,甚至10多年工作经验的...让我印象最深,也觉得最为经典的一个面试:

  • 有一天,来了一位5年前端工作经验的小伙子,在很多项目中使用过vue的面试者,故事就从这里开始了:
  • (开篇省略N多对话……)
  • :看你简历上说你在项目中有用到过vue对吗?
  • 小伙子:有啊,我们项目中就有用到过……
  • :你认为你对vue的理解到什么程度?(对自我的认知)
  • 小伙子:做过很多项目,基本上都了解了,很熟练
  • :不错,那我问下你 「vue为什么要求组件模板只能有一个根元素?」
  • 小伙子:恩……没在意过
  • :没关系,那 「你了解vue的diff演算法吗?」
  • 小伙子:恩……没用到过
  • :没事,那我再问下你,「在.vue文件中style是必须的吗?那script是必须的吗?为什么?」
  • 小伙子:恩……(此时小伙子有点著急了,说)
  • 小伙子:你为何 不按套路提问 呢?你应该这样问我:MVVM是什么,生命周期有哪些,双向绑定的原理啊,我对这些比较熟悉。
  • :此时的我,被反问给愣住了(难道是我错了吗?我是农村来的不懂套路,还好我经历过风风雨雨,假装镇定下)。
  • :这样啊,你给我说下,生命周期的原理是什么?
  • 小伙子:……
  • :要你自己实现一个双向绑定的微型框架你该怎么做呢?
  • 小伙子:……
  • (继续省略N多对话……)
  • 小伙子走前,跟我说了句:哥,我以后不敢再说我会vue了,回去我要再好好学习vue……
  • 后话:估计小伙子出门后,肯定会千万个吐槽:面试造火箭工作拧螺丝

30多位小伙伴倾力贡献

  • 看到网上vue相关的题量都非常少,完全不能满足大家对知识的渴望。所以我联系了30多位真正使用过vue,从各个方面筛选出了220个vue相关的知识点,全方面为你保驾护航!这些知识点还会持续更新……
  • 目前vue相关的知识点收录量为全网(全球)第一
  • 收录在了

《前端面试每日3+1》?

github.com

vue面试题?

github.com

还有疑问?

  • 问:这些题有答案吗?
  • 答:有,在你脑中!授人以鱼不如授人以渔(只有自己动手去做,去思考才会变成你的答案,理解背后的原理才能做到游刃有余,不要去背,分分钟露馅!)
  • 问:知识点会过期吗?
  • 答:会,但没这么快,活到老学到老,框架经常更新,知识点就会持续更新
  • 问:这么多知识点我该怎么学?
  • 答:先挑些你会的,找点成就感,然后再查漏补缺,坚持每天学习

有更好的建议吗?

  • 勤思考
  • 多动手
  • 善总结

对了打个广告

  • 《前端面试每日3+1》,学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。
  • 希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。
  • 在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)

超多题预警开始……


题目最后更新时间:2019.06.26

vue | vue-cli | vue-router | vuex | ElementUI | ElementUI | mint-ui

如果你觉得这些题太easy了,可以到github上联系作者贡献你觉得好玩、有趣、有挑战性的题让大家来挑战吧。 题目链接到这里查看:收录在了

《前端面试每日3+1》?

github.com

haizlin/fe-interview?

github.com
图标

vue

  • vue渲染模板时怎么保留模板中的HTML注释呢? [[我来挑战]]
  • Vue.observable你有了解过吗?说说看 [[我来挑战]]
  • 你知道style加scoped属性的用途和原理吗? [[我来挑战]]
  • 你期待vue3.0有什么功能或者改进的地方? [[我来挑战]]
  • vue边界情况有哪些? [[我来挑战]]
  • 如何在子组件中访问父组件的实例? [[我来挑战]]
  • watch的属性用箭头函数定义结果会怎么样? [[我来挑战]]
  • 在vue项目中如果methods的方法用箭头函数定义结果会怎么样? [[我来挑战]]
  • 在vue项目中如何配置favicon? [[我来挑战]]
  • 你有使用过babel-polyfill模块吗?主要是用来做什么的? [[我来挑战]]
  • 说说你对vue的错误处理的了解? [[我来挑战]]
  • 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别? [[我来挑战]]
  • 在.vue文件中style是必须的吗?那script是必须的吗?为什么? [[我来挑战]]
  • vue怎么实现强制刷新组件? [[我来挑战]]
  • vue自定义事件中父组件怎么接收子组件的多个参数? [[我来挑战]]
  • 实际工作中,你总结的vue最佳实践有哪些? [[我来挑战]]
  • vue给组件绑定自定义事件无效怎么解决? [[我来挑战]]
  • vue的属性名称与method的方法名称一样时会发生什么问题? [[我来挑战]]
  • vue变数名如果以_、$开头的属性会发生什么问题?怎么访问到它们的值? [[我来挑战]]
  • vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序? [[我来挑战]]
  • vue如果想扩展某个现有的组件时,怎么做呢? [[我来挑战]]
  • 说下$attrs$listeners的使用场景 [[我来挑战]]
  • 分析下vue项目本地开发完成后部署到伺服器后报404是什么原因呢? [[我来挑战]]
  • v-once的使用场景有哪些? [[我来挑战]]
  • 说说你对vue的表单修饰符.lazy的理解 [[我来挑战]]
  • vue为什么要求组件模板只能有一个根元素? [[我来挑战]]
  • EventBus注册在全局上时,路由切换时会重复触发事件,如何解决呢? [[我来挑战]]
  • 怎么修改vue打包后生成文件路径? [[我来挑战]]
  • 你有使用做过vue与原生app交互吗?说说vue与ap交互的方法 [[我来挑战]]
  • 使用vue写一个tab切换 [[我来挑战]]
  • vue中什么是递归组件?举个例子说明下? [[我来挑战]]
  • 怎么访问到子组件的实例或者子元素? [[我来挑战]]
  • 在子组件中怎么访问到父组件的实例? [[我来挑战]]
  • 在组件中怎么访问到根实例? [[我来挑战]]
  • 说说你对Object.defineProperty的理解 [[我来挑战]]
  • vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么? [[我来挑战]]
  • vue组件里的定时器要怎么销毁? [[我来挑战]]
  • vue组件会在什么时候下被销毁? [[我来挑战]]
  • 使用vue渲染大量数据时应该怎么优化?说下你的思路! [[我来挑战]]
  • 在vue中使用this应该注意哪些问题? [[我来挑战]]
  • 你有使用过JSX吗?说说你对JSX的理解 [[我来挑战]]
  • 说说组件的命名规范 [[我来挑战]]
  • 怎么配置使vue2.0+支持TypeScript写法? [[我来挑战]]
  • <template></template>有什么用? [[我来挑战]]
  • vue的is这个特性你有用过吗?主要用在哪些方面? [[我来挑战]]
  • vue的:class和:style有几种表示方式? [[我来挑战]]
  • 你了解什么是函数式组件吗? [[我来挑战]]
  • vue怎么改变插入模板的分隔符? [[我来挑战]]
  • 组件中写name选项有什么作用? [[我来挑战]]
  • 说说你对provide和inject的理解 [[我来挑战]]
  • 开发过程中有使用过devtools吗? [[我来挑战]]
  • 说说你对slot的理解有多少?slot使用场景有哪些? [[我来挑战]]
  • 你有使用过动态组件吗?说说你对它的理解 [[我来挑战]]
  • prop验证的type类型有哪几种? [[我来挑战]]
  • prop是怎么做验证的?可以设置默认值吗? [[我来挑战]]
  • 怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢? [[我来挑战]]
  • 说说你对vue组件的设计原则的理解 [[我来挑战]]
  • 你了解vue的diff演算法吗? [[我来挑战]]
  • vue如何优化首页的载入速度? [[我来挑战]]
  • vue打包成最终的文件有哪些? [[我来挑战]]
  • ajax、fetch、axios这三都有什么区别? [[我来挑战]]
  • vue能监听到数组变化的方法有哪些?为什么这些方法能监听到呢? [[我来挑战]]
  • vue中是如何使用event对象的? [[我来挑战]]
  • vue首页白屏是什么问题引起的?如何解决呢? [[我来挑战]]
  • 说说你对单向数据流和双向数据流的理解 [[我来挑战]]
  • 移动端ui你用的是哪个ui库?有遇到过什么问题吗? [[我来挑战]]
  • 你知道nextTick的原理吗? [[我来挑战]]
  • 说说你对v-clock和v-pre指令的理解 [[我来挑战]]
  • 写出你知道的表单修饰符和事件修饰符 [[我来挑战]]
  • 说说你对proxy的理解 [[我来挑战]]
  • 你有自己用vue写过UI组件库吗? [[我来挑战]]
  • 用vue怎么实现一个换肤的功能? [[我来挑战]]
  • 有在vue中使用过echarts吗?踩过哪些坑?如何解决的? [[我来挑战]]
  • 如果让你教一个2-3年经验前端经验的同事使用vue,你该怎么教? [[我来挑战]]
  • vue性能的优化的方法有哪些? [[我来挑战]]
  • SSR解决了什么问题?有做过SSR吗?你是怎么做的? [[我来挑战]]
  • 说说你觉得认为的vue开发规范有哪些? [[我来挑战]]
  • vue部署上线前需要做哪些准备工作? [[我来挑战]]
  • vue过渡动画实现的方式有哪些? [[我来挑战]]
  • vue在created和mounted这两个生命周期中请求数据有什么区别呢? [[我来挑战]]
  • vue父子组件双向绑定的方法有哪些? [[我来挑战]]
  • vue怎么获取DOM节点? [[我来挑战]]
  • vue项目有做过单元测试吗? [[我来挑战]]
  • vue项目有使用过npm run build --report吗? [[我来挑战]]
  • 如何解决vue打包wendor过大的问题? [[我来挑战]]
  • webpack打包vue速度太慢怎么办? [[我来挑战]]
  • vue在开发过程中要同时跟N个不同的后端人员联调介面(请求的url不一样)时你该怎么办? [[我来挑战]]
  • vue要做许可权管理该怎么做?如果控制到按钮级别的许可权怎么做? [[我来挑战]]
  • 说下你的vue项目的目录结构,如果是大型项目你该怎么划分结构和划分组件呢? [[我来挑战]]
  • 在移动端使用vue,你觉得最佳实践有哪些? [[我来挑战]]
  • 你们项目为什么会选vue而不选择其它的框架呢? [[我来挑战]]
  • 对于即将到来的vue3.0特性你有什么了解的吗? [[我来挑战]]
  • vue开发过程中你有使用什么辅助工具吗? [[我来挑战]]
  • vue和微信小程序写法上有什么区别? [[我来挑战]]
  • 怎么缓存当前的组件?缓存后怎么更新? [[我来挑战]]
  • 你了解什么是高阶组件吗?可否举个例子说明下? [[我来挑战]]
  • 为什么我们写组件的时候可以写在.vue里呢?可以是别的文件名后缀吗? [[我来挑战]]
  • vue-loader是什么?它有什么作用? [[我来挑战]]
  • 说说你对vue的extend(构造器)的理解,它主要是用来做什么的? [[我来挑战]]
  • 如果将axios非同步请求同步化处理? [[我来挑战]]
  • 怎么捕获组件vue的错误信息? [[我来挑战]]
  • 为什么vue使用非同步更新组件? [[我来挑战]]
  • 如何实现一个虚拟DOM?说说你的思路 [[我来挑战]]
  • 写出多种定义组件模板的方法 [[我来挑战]]
  • SPA单页面的实现方式有哪些? [[我来挑战]]
  • 说说你对SPA单页面的理解,它的优缺点分别是什么? [[我来挑战]]
  • 说说你都用vue做过哪些类型的项目? [[我来挑战]]
  • 在vue项目中如何引入第三方库(比如jQuery)?有哪些方法可以做到? [[我来挑战]]
  • 使用vue手写一个过滤器 [[我来挑战]]
  • 你有使用过render函数吗?有什么好处? [[我来挑战]]
  • 写出你常用的指令有哪些? [[我来挑战]]
  • 手写一个自定义指令及写出如何调用 [[我来挑战]]
  • 组件进来请求介面时你是放在哪个生命周期?为什么? [[我来挑战]]
  • 你有用过事件汇流排(EventBus)吗?说说你的理解 [[我来挑战]]
  • 说说vue的优缺点分别是什么? [[我来挑战]]
  • DOM渲染在哪个周期中就已经完成了? [[我来挑战]]
  • 第一次载入页面时会触发哪几个钩子? [[我来挑战]]
  • vue生命周期总共有几个阶段? [[我来挑战]]
  • vue生命周期的作用是什么? [[我来挑战]]
  • vue和angular有什么区别呢? [[我来挑战]]
  • 如何引入scss?引入后如何使用? [[我来挑战]]
  • 使用vue开发过程你是怎么做介面管理的? [[我来挑战]]
  • 为何官方推荐使用axios而不用vue-resource? [[我来挑战]]
  • 你了解axios的原理吗?有看过它的源码吗? [[我来挑战]]
  • 你有封装过axios吗?主要是封装哪方面的? [[我来挑战]]
  • 如何中断axios的请求? [[我来挑战]]
  • axios是什么?怎样使用它?怎么解决跨域的问题? [[我来挑战]]
  • 说说你对vue的template编译的理解? [[我来挑战]]
  • v-on可以绑定多个方法吗? [[我来挑战]]
  • vue常用的修饰符有哪些?列举并说明 [[我来挑战]]
  • 你认为vue的核心是什么? [[我来挑战]]
  • v-model是什么?有什么用呢? [[我来挑战]]
  • 说说你对vue的mixin的理解,有什么应用场景? [[我来挑战]]
  • SPA首屏载入速度慢的怎么解决? [[我来挑战]]
  • 删除数组用delete和Vue.delete有什么区别? [[我来挑战]]
  • 动态给vue的data添加一个新的属性时会发生什么?怎样解决? [[我来挑战]]
  • 组件和插件有什么区别? [[我来挑战]]
  • 说说你使用vue过程中遇到的问题(坑)有哪些,你是怎么解决的? [[我来挑战]]
  • 说说你对选项el,template,render的理解 [[我来挑战]]
  • vue实例挂载的过程是什么? [[我来挑战]]
  • vue在组件中引入插件的方法有哪些? [[我来挑战]]
  • v-if和v-for的优先顺序是什么?如果这两个同时出现时,那应该怎么优化才能得到更好的性能? [[我来挑战]]
  • 分别说说vue能监听到数组或对象变化的场景,还有哪些场景是监听不到的?无法监听时有什么解决方案? [[我来挑战]]
  • $nextTick有什么作用? [[我来挑战]]
  • 为什么data属性必须声明为返回一个初始数据对应的函数呢? [[我来挑战]]
  • 怎么在watch监听开始之后立即被调用? [[我来挑战]]
  • watch怎么深度监听对象变化? [[我来挑战]]
  • watch和计算属性有什么区别? [[我来挑战]]
  • vue如何监听键盘事件? [[我来挑战]]
  • v-for循环中key有什么作用? [[我来挑战]]
  • 怎么在vue中使用插件? [[我来挑战]]
  • 你有写过自定义组件吗? [[我来挑战]]
  • 说说你对keep-alive的理解是什么? [[我来挑战]]
  • 怎么使css样式只在当前组件中生效? [[我来挑战]]
  • 你有看过vue的源码吗?如果有那就说说看 [[我来挑战]]
  • 你有写过自定义指令吗?自定义指令的生命周期(钩子函数)有哪些? [[我来挑战]]
  • v-show和v-if有什么区别?使用场景分别是什么? [[我来挑战]]
  • 说说你对MVC、MVP、MVVM模式的理解 [[我来挑战]]
  • 说下你对指令的理解? [[我来挑战]]
  • 请描述下vue的生命周期是什么? [[我来挑战]]
  • vue组件之间的通信都有哪些? [[我来挑战]]
  • 什么是虚拟DOM? [[我来挑战]]
  • 什么是双向绑定?原理是什么? [[我来挑战]]
  • vue和react有什么不同?使用场景是什么? [[我来挑战]]
  • 说说vue的优缺点 [[我来挑战]]
  • 有使用过vue吗?说说你对vue的理解 [[我来挑战]]

vue-cli

  • vue-cli生成的项目可以使用es6、es7的语法吗?为什么? [[我来挑战]]
  • vue-cli怎么解决跨域的问题? [[我来挑战]]
  • vue-cli中你经常的载入器有哪些? [[我来挑战]]
  • 你知道什么是脚手架吗? [[我来挑战]]
  • 说下你了解的vue-cli原理?你可以自己实现个类vue-cli吗? [[我来挑战]]
  • 怎么使用vue-cli3创建一个项目? [[我来挑战]]
  • vue-cli3你有使用过吗?它和2.x版本有什么区别? [[我来挑战]]
  • vue-cli默认是单页面的,那要弄成多页面该怎么办呢? [[我来挑战]]
  • 不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么? [[我来挑战]]

vue-router

  • vue-router怎么重定向页面? [[我来挑战]]
  • vue-router怎么配置404页面? [[我来挑战]]
  • 切换路由时,需要保存草稿的功能,怎么实现呢? [[我来挑战]]
  • vue-router路由有几种模式?说说它们的区别? [[我来挑战]]
  • vue-router有哪几种导航钩子( 导航守卫 )? [[我来挑战]]
  • 说说你对router-link的了解 [[我来挑战]]
  • vue-router如何响应路由参数的变化? [[我来挑战]]
  • 你有看过vue-router的源码吗?说说看 [[我来挑战]]
  • 切换到新路由时,页面要滚动到顶部或保持原先的滚动位置怎么做呢? [[我来挑战]]
  • 在什么场景下会用到嵌套路由? [[我来挑战]]
  • 如何获取路由传过来的参数? [[我来挑战]]
  • 说说active-class是哪个组件的属性? [[我来挑战]]
  • 在vue组件中怎么获取到当前的路由信息? [[我来挑战]]
  • vur-router怎么重定向? [[我来挑战]]
  • 怎样动态载入路由? [[我来挑战]]
  • 怎么实现路由懒载入呢? [[我来挑战]]
  • 如果让你从零开始写一个vue路由,说说你的思路 [[我来挑战]]
  • 说说vue-router完整的导航解析流程是什么? [[我来挑战]]
  • 路由之间是怎么跳转的?有哪些方式? [[我来挑战]]
  • 如果vue-router使用history模式,部署时要注意什么? [[我来挑战]]
  • route和router有什么区别? [[我来挑战]]
  • vue-router钩子函数有哪些?都有哪些参数? [[我来挑战]]
  • vue-router是用来做什么的?它有哪些组件? [[我来挑战]]

vuex

  • vuex使用actions时不支持多参数传递怎么办? [[我来挑战]]
  • 你觉得vuex有什么缺点? [[我来挑战]]
  • 你觉得要是不用vuex的话会带来哪些问题? [[我来挑战]]
  • vuex怎么知道state是通过mutation修改还是外部直接修改的? [[我来挑战]]
  • 请求数据是写在组件的methods中还是在vuex的action中? [[我来挑战]]
  • 怎么监听vuex数据的变化? [[我来挑战]]
  • vuex的action和mutation的特性是什么?有什么区别? [[我来挑战]]
  • 页面刷新后vuex的state数据丢失怎么解决? [[我来挑战]]
  • vuex的state、getter、mutation、action、module特性分别是什么? [[我来挑战]]
  • vuex的store有几个属性值?分别讲讲它们的作用是什么? [[我来挑战]]
  • 你理解的vuex是什么呢?哪些场景会用到?不用会有问题吗?有哪些特性? [[我来挑战]]
  • 使用vuex的优势是什么? [[我来挑战]]
  • 有用过vuex吗?它主要解决的是什么问题?推荐在哪些场景用? [[我来挑战]]

ElementUI

  • ElementUI是怎么做表单验证的?在循环里对每个input验证怎么做呢? [[我来挑战]]
  • 你有二次封装过ElementUI组件吗? [[我来挑战]]
  • ElementUI怎么修改组件的默认样式? [[我来挑战]]
  • ElementUI的穿梭组件如果数据量大会变卡怎么解决不卡的问题呢? [[我来挑战]]
  • ElementUI表格组件如何实现动态表头? [[我来挑战]]
  • ElementUI使用表格组件时有遇到过问题吗? [[我来挑战]]
  • 有阅读过ElementUI的源码吗? [[我来挑战]]
  • 项目中有使用过ElementUI吗?有遇到过哪些问题?它的使用场景主要是哪些? [[我来挑战]]
  • 有用过哪些vue的ui?说说它们的优缺点? [[我来挑战]]

mint-ui

  • mint-ui使用过程中有没有遇到什么坑?怎么解决的? [[我来挑战]]
  • 说出几个mint-ui常用的组件 [[我来挑战]]
  • mint-ui是什么?你有使用过吗? [[我来挑战]]

推荐阅读:

相关文章