Vue面试题2

1.关于Vue生命周期,下列选项不正确的是()[单选题]

a.vue实例从创建到销毁的过程,就是生命周期。
b.页面首次加载会触发beforeCreate,created,beforeMount,mounted,beforeUpdate,uodated
c.created标识完成数据观测,属性和方法的运算,初始化时间,$el属性还没有显示出来
d.dom渲染在mounted中就完成了

答案解析:
b.首次加载触发,beforeCreate,created,beforeMount,mounted
beforeUpdate,uodated 只有数据更新时候才会触发

2.对于vue中数据响应式原理说法,不正确的是()[多选题]

a.采用数据劫持方式,即Object.defineProperty()劫持data中各个属性来实现数据响应式
b.视图中变化通过watcher更新data中的数据
c.若data中某个属性多次变化,watcher仅会进入更新队列1次
d.通过变异过程进行依赖收集

答案解析:
b.watcher更新UI界面,不是更新数据
d.编译唯一目的是生成render函数,依赖收集只在各个组件初始化中过程收集依赖

3.Vue中组件参数传递,不正确的是()[单选]

a.子组件给父组件传值,使用emit('someevent')派发事件,父组件使用@someevent监听
c.祖孙组件之间可以使用provide和inject方式跨层级相互传值
d.度组件给子组件传值,子组件通过props接收数据

答案解析:
c.祖孙传值使用provide和inject方式是对的,但是错误在于这种方法都是单向的,无法互相传值(文字游戏)

4.关于v-model说法不正确的是()[单选]

a.v-model能够实现双向绑定
b.v-model本质上是语法糖,负责监听用户输入时间以及更新数据
c.v-model是内置指令,不能使用在自定义组件上
d.对input使用v-model实际上是指定其:value和input

答案解析:
c.v-model是可以使用在自定义组件上的, 子组件在props中通过value接收数据,通过$emit('input')去派发事件

5.下列说法不正确的是哪项()[单选题]

a.key的作用是为了高效的更新虚拟DOM
b.若指定了组件的template选项,render函数不会执行
c.使用vm.$nextTick可以确获得DOM异步更新的结果
d.若没有el选项,vm.$mount(dom)可以将Vue实例挂载于指定元素上

答案解析:
b.el与tamplate存在竞争关系,render函数一定会执行,有render函数template会被忽略

Vue推荐在绝大多数情况下使用template来创建你的HTML
特殊情况下使用render函数(使用JavaScript的编程能力和创建HTML),它比template更接近编译器。

看原理
(Vue原理)[https://www.jianshu.com/p/c1b835e9ed86]

6.下列说法不正确的是哪项()[单选题]

a.使用this.$parent查找当前组件的父组件
b.使用this.$children按照顺序查找当前组件的直接子组件
c.使用this.$root查找根组件,并可以配合$children遍历全部组件
d.使用this.$refs查找命名子组件

答案解析:
b.查找的子组件不知道具体顺序

7.下列关于vuex描述,不正确的是哪项()[单选题]

a.Vuex是一个状态管理模式
b.Vuex主要用于多视图之间状态全局共享与管理
c.在Vuex中改变状态可以通过mutaions和actions
d.Vuex通过Vue实现状态响应式,因此只能使用于Vue

答案解析:
c 改变状态的是mutations,actions内部也是通过context.commit的mutations的方法

8.下列关于vue-router的描述,不正确的是()[单选题]

a.vue-router常用模式hash和history
b.可以通过addRoutes方法动态添加路由
c.可以通过beforeEnter对单个组件进行路由守卫
d.vue-router借助Vue实现路由信息响应式,因此只能用于Vue

答案解析:
c beforeEnter是对单个路由的守卫,不是单个组件

9.关于vue服务器渲染,下列说法不正确的()[单选题]

a.通过服务器渲染,可以优化SEO抓取,提升首页加载速度
b.某些生命周期钩子函数 如(beforeCreate,created) 可以运行在服务端和客户端
c.服务器渲染的vue.js是同构开发,因为vue扩展库可以在服务端应用正常运行
d.组件渲染为服务端的HTML字符串,将他们直接发送到浏览器,最后在客户端上"激活"为可交互的应用

答案解析:
c 服务端是否可以使用vue扩展库没有明确的说明

10.关于typescript在vue中的应用,说法不正确的是()[单选题]

a.使用typeScript可以获得静态类型检查以及最新的ECMAscript特性
b.typeScript是Javascript类型的超集,它可以编译成纯Javascript。意味着你完成可以使用JS语法编写TS代码
c.使用Vue.extend({})方式声明组件不能获得TypeScript类型推断能力
d.基于类的Vue组件中如果要声明初始数据可以直接声明为实例的属性,如 message:string='Hello'

答案解析:
c.Vue.extend({})可以声明组件

11.下列关于vue说法不正确的是()[单选题]

a.vue简单易上手,性能高效,还便于与第三方库或既有项目整合
b.vue构建的项目复杂度增加较快,仅适合中小型项目
c.vue基于组件构建应用,代码组织简洁,易理解,易维护
d.vue借助虚拟DOM实现跨平台,服务端渲染,以及性能良好的DOM更新策略

答案解析:
b Vue2.0后优化了watcher,
以组件为单位添加watcher,(数量降低了)
异步更新数据,(数据变化并非实时更新,每种数据仅仅进入更新队列1次)https://www.jianshu.com/p/463c7f7669df
最大程度精确了虚拟DOM树数据更新位置,(通过diff与patch实现 新旧虚拟DOM树比对,只对变化位置数据更新)
提高了渲染的性能
所以可以使用在大型项目上了

12.下列关于vue原理哪些是正确的()[多选]

a.Vue中数据变更通知,通过拦截数组操作方法实现
b.编译器目标是创建渲染函数,渲染函数执行得到VNODE树
c.组件内data发生变化会通知其对应的Watcher执行异步更新
d.patching算法首先是进行同层级比较,可以执行的操作是节点的增加,删除和更新

答案解析:
abcd
a.数组的7种拦截数据的方法

  • push() 从数组末尾添加值。
  • pop() 删除并返回数组的最后一个元素。
  • shift() 把数组的第一个元素从其中删除,并返回第一个元素的值。
  • unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
  • splice() 向/从数组中添加/删除项目,然后返回被删除的项目。
  • sort() 对数组的元素进行排序。
  • reverse() 用于颠倒数组中元素的顺序

b.正确,见 Vue原理摘录 图1

c.正确,见 Vue原理摘录 图1 触发了setter方法,通知对应组件的watcher执行异步更新

d.正确,参照网上牛人的文章

你可能感兴趣的:(Vue面试题2)