vue面试题

4,911 阅读4分钟

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

A、Vue 实例从创建到销毁的过程,就是生命周期。

B、页面首次加载会触发beforeCreate, created, beforeMount, mounted, beforeUpdate, updated。

C、created表示完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来。

D、DOM 渲染在 mounted 中就已经完成了。

解析: beforeUpdate, updated首次出发不包括 beforeUpdate, updated,beforeUpdate,uodated只有数据更新时候才会触发

2、对于Vue中数据响应式原理的说法,下列哪项是不正确的?[多选题] (BD)

A、采用数据劫持方式,即Object.defineProperty()劫持data中各属性来实现数据响应式

B、视图中的变化通过Watcher更新data中数据

C、若data中某属性多次发生变化,Watcher仅会进入更新队列一次

D、通过编译过程进行依赖收集

解析:视图中变化通过 updated 更新 data 中的数据。 与依赖收集有关的类: DepWatcher, Dep,典型的发布订阅模式, 是一个将监听器和可观测对象连接起来的数组。另外,watcher更新UI界面,不是更新数据。编译唯一目的是生成render函数,依赖收集只在各个组件初始化中过程收集依赖

3、关于Vue组件间的参数传递,下列哪项是不正确的?[单选题](C)

A、子组件给父组件传值,使用$emit方法

B、子组件使用$emit('someEvent')派发事件,父组件使用@someEvent监听

C、祖孙组件间可以使用provide和inject方式跨层级相互传值

D、父组件给子组件传值,子组件通过props接受数据

解析: provideinject 适用于父子组件和跨级组件间的通信,是单向数据流

4、下列关于v-model的说法,哪项是不正确的?[单选题](C)

A、v-model能够实现双向绑定

B、v-model本质上是语法糖。它负责监听用户的输入事件以更新数据

C、v-model是内置指令,不能用在自定义组件上

D、对input使用v-model实际上是指定其:value和:input

解析: 允许一个自定义组件在使用 v-model 时定制 propevent。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。

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

A、key的作用主要是为了高效的更新虚拟DOM

B、若指定了组件的template选项,render函数不会执行

C、使用vm.$nextTick可以确保获得DOM异步更新的结果

D、若没有el选项,vm.$mount(dom)可将Vue实例挂载于指定元素上

解析: eltemplaterender(渲染函数) 都是对 vue 对象对应的 HTML元素(DOM对象);优先级顺序: el < template < render(渲染函数);

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

A、使用 this.$parent查找当前组件的父组件。

B、使用 this.$children按顺序查找当前组件的直接子组件。

C、使用 this.$root查找根组件,并可以配合$children遍历全部组件。

D、使用 this.$refs查找命名子组件。

解析: 使用 this.$children 查找当前组件的直接子组件,可以遍历全部子组件, 需要注意 $children 并不保证顺序,也不是响应式的。

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

A、Vuex 是一个状态管理模式

B、Vuex主要用于多视图间状态全局共享与管理

C、在Vuex中改变状态可以通过mutations和actions

D、Vuex通过Vue实现状态响应式,因此只能用于Vue

解析: vuex 中改变store的唯一途径是提交mutation,通过调用实例化后的vuexmutations中相对应的方法可以实现对状态的改变。另外,同步更改mutations;异步更改actionaction中通过 commit触发 mutations 进行 state数据更改

8、下列关于vue-router的描述,不正确的是哪项?[单选题](C)

A、vue-router常用模式有hash和history两种

B、可以通过addRoutes方法动态添加路由

C、可以通过beforeEnter对单个组件进行路由守卫

D、vue-router借助Vue实现路由信息响应式,因此只能用于Vue

解析: beforeEnter是单个路由的守卫,router.beforeEach是全局路由钩子,beforeRouteEnter才是组件路由钩子

9、关于vue服务端渲染,下列哪项说法是不正确的?[单选题](C)

A、通过服务端渲染,可以优化SEO抓取,提升首页加载速度

B、某些声明周期钩子函数(如beforeCreate、created)能同时运行在服务端和客户端

C、服务端渲染的vue.js是同构开发,因此vue扩展库可以在服务端应用中正常运行

D、组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后在客户端上"激活"为可交互的应用

Vue.js是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将这些静态标记"激活"为客户端上完全可交互的应用程序。 服务器渲染的 Vue.js 应用程序也可以被认为是"同构"或"通用",因为应用程序的大部分代码都可以在服务器和客户端上运行。*服务端是否可以使用vue扩展库没有明确的说明

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

A、使用TypeScript可获得静态类型检查以及最新的ECMAScript特性

B、TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。意味着你完全可以用JS语法编写TS代码

C、使用Vue.extend({})方式声明组件不能获得TypeScript类型推断能力

D、基于类的Vue组件中如果要声明初始数据可以直接声明为实例的属性,如:message: string = 'Hello!'

Vue.extend({})可以声明组件

11、下列关于vue说法哪些是不正确的?[单选题](B)

A、vue简单易上手,性能高效,还便于与第三方库或既有项目整合

B、vue构建的项目复杂度增加较快,仅适合中小型项目

C、vue基于组件构建应用,代码组织简洁、易理解、易维护

D、vue借助虚拟DOM实现跨平台,服务端渲染,以及性能良好的DOM更新策略

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

A、Vue中数组变更通知通过拦截数组操作方法实现

B、编译器目标是创建渲染函数,渲染函数执行将得到VNode树

C、组件内data发生变化时会通知其对应Watcher执行异步更新

D、patching算法首先进行同层级比较,可能执行的操作是节