如何考察候选人 Vue 技术水平?

镜像问题 http://www.zhihu.com/question/60548673
关注者
610
被浏览
103,343

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-github.com/vuejs/vue/bl parseModel-github.com/vuejs/vue/bl

对于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,以此来实现面试官的要求。

但是你觉得这段代码的运行结果会有问题吗?欢迎和我讨论。