如何考察候选人 Vue 技术水平?
16 个回答
首先对于vue考察,我觉得题主你应该先问下面试者vue对于mvvm的一个实现,这是一个通透的理解,不仅能考察对vue的理解,还能了解到求职者在前端这一块整体的一个把关。
其次,对于vue,你还能问下项目开发中经常出现的一些点,比如什么时候适合用methods,什么时候适合用computed,什么时候适合用watch。再比如钩子函数你怎么理解,事件修饰符等等。这些能考察到求职者对vue的基础的一些掌握。
再稍微高级点的就是vue组件开发这一点了,如何合理的抽离出组件,各组件如何通信(父传子,子传父,同级组件),公用方法mixin处理,全局状态该如何存储(这又可以牵扯到vuex),如何自定义组件的指令,内置组件等等等等。
然后你就可以问全家桶了。
再高级点的就是vue-cli脚手架了,vue是如何通过使用webpack进行测试和生产环境进行一个构建处理的(这里题主你还能拉出grunt,gulp让求职者去分析一下三者)。
最后你就可以闲聊一下了,比如问问求职者是不是研究过源码,vue是如何实现一些指令,对于指令解析,vue又是如何获取到指令的expression去做这么一个解析的(如果只说正则处理那就太不负责了,应该听到的是:解析具体expression的处理,比如test.xxx.a["asa"][test1[idx]]的一个处理
对于解析的处理,给你两地址 parseText-https://github.com/vuejs/vue/blob/dev/dist/vue.js#L7948 parseModel-https://github.com/vuejs/vue/blob/dev/dist/vue.js#L5888
对于mvvm的理解,也给你两链接(原谅我无耻的打了波广告) 合格前端系列第三弹-实现一个属于我们自己的简易MVVM库 - 知乎专栏 合格前端系列第四弹-如何监听一个数组的变化 - 知乎专栏
总之,可以问的点有很多。当然,这里我肯定遗漏了一些点,如果有一些其他点大家觉得重要,欢迎大家在评论区指出。
最后, 码字不易, 如果有收获千万别忘记点赞哦
涉及 Vue 的面试问题其实大方向上不太多,但如果细分下来,光是数组监测类的问题,就有下面这么多。
- 问题一:涉及视图更新,你会用什么方式来变更数组?
- 问题二:为什么 Vue 数据改变页面也会同步更新?
- 问题三:Vue 是如何追踪数据发生变化的?
- 问题四:为什么有些数组的数据变更不能被 Vue 监测到?
- 问题五:为什么 Splice 方法也可以触发状态更新?
- 问题六:Vue2.x 监测数组变更的两条限制是因为 defineProperty 吗?
- 问题七:为什么 Object.defineProperty 明明能监听到数组值的变化,而 Vue 却没有实现?
- 问题八:为什么不用 Object.defineProperty 去监听数组中已存在的元素变化?
- 问题九:对于 Vue 监测对象变化有什么要注意的?
可谓是步步紧逼……
那这里使个坏,给候选人一些小提示吧。
面试官让你介绍一段项目经历,如果你使用 Vue 技术栈,也许你会这样说:“我要介绍的是一个基于 Vue2.x 的电商后台管理系统,在项目中我负责的主要是商品管理的功能模块,包含对商品的添加、删除、编辑、查看详情、上架、下架等操作。”
好,你介绍了项目背景,那紧接着,面试官会追问——
管理系统的主要是数据表的增删改查,这里会涉及很多数据更改视图更新的操作。那你通常用什么样的方式变更数组呢? 比如我在页面上有一个列表每行渲染一个数字,我希望变更这个列表里第二行的值,该如何实现呢?
想一想,你要如何应对这个问题?
我遇到过一个候选人提供的方案是下面这样的,大家一起来看下是不是合理:
let vm = new Vue({
data: {
items: [1, 2, 3]
}
})
vm.items[1] = 4
从代码看很明显,候选人直接把数组 items 中的第二项的值从 2 改为 4,以此来实现面试官的要求。
但是你觉得这段代码的运行结果会有问题吗?欢迎和我讨论。