前端面试时面试官想要听到什么答案(关于一些Vue的问题)

本文会列举一些平时面试时问到的问题和答案,并说明面试官在当时问到这个问题时所期望对方的回答:

vue生命周期(钩子函数)

问题

请说一下vue的生命周期函数(钩子函数)。

问题描述

首先关于生命周期函数,一般我的第一个问题就是这个,我认为是每个使用vue的都要清楚的,如果这个问题答的问题很大其实我都不太想继续往下进行了。

即使英语不标准(我就是不标准的人,并不是说这是个问题)也要去把关键点说清楚,哪个地方有ed哪个地方没有ed其实是很关键的,或者可以手写下来,因为常用的就是created和mounted所以前4个可以清楚的手写出来并不难,后面4个不去详细说明都没事。(我自己工作中基本没用过后面4个)

在哪个周期能够首次拿到data数据和在哪个周期能够首次拿到mounted中的dom元素,如果没有说到这个问题,我一般会一直往下问,直到他说出来这两个答案。

期望答案

beforeCreate、created(此时需说明可以在created中首次拿到data中定义的数据)、beforeMount、mounted(此时需说明dom树渲染结束,可访问dom结构)、beforeUpdate、updated、beforeDestroy、destroyed

computed中的getter和setter

问题

说一下computed中的getter和setter。

问题描述

很多情况,我问到这个问题的时候对方的回答都是vue的getter和setter、订阅者模式之类的回答,我就会直接说问的并不是这个,而是computed,直接让对方说computed平时怎么使用。

很多时候得到的回答是computed的默认方式,只使用了其中的getter,就会继续追问如果想要再把这个值设置回去要怎么做,当然一般会让问到这个程度的这个问题他都答不上来了。

期望答案

watch监听对象

问题

如何watch监听一个对象内部的变化。

问题描述

这个问题我感觉是一个不应该不会的问题,可是我遇到的人大部分都没有给出我所期望的答案,有些人会说直接监听obj,好一点的会说直接点出来监听obj.key,但是很少有人回答deep,开始我还会去问immediate,但是太多人不知道了,所以后来我就只问监听对象了,只有回答出deep的才会去问immediate的作用。

期望答案

如果只是监听obj内的某一个属性变化,可以直接obj.key进行监听。

如果对整个obj深层监听

immediate的作用:当值第一次进行绑定的时候并不会触发watch监听,使用immediate则可以在最初绑定的时候执行。

v-for循环key的作用

问题

v-for循环时为什么要加key。

问题描述

问这个问题时,好多人再先回答的都是页面有警告,编辑器有提示,我会直接说不考虑报错和提示的问题,或者会问如果不加key的话,页面会不会出现什么异常情况。有的人会说是一个标识,标识他的唯一性,我会继续追问为什么要标识唯一性呢,不加又怎么样?

期望答案

vue的dom渲染是虚拟dom,数据发生变化时,diff算法会只比较更改的部分,如果数据项的顺序被改变,Vue将不是移动DOM元素来匹配数据项的改变,而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

举例说明:有一个列表我们现在在中间插入了一个元素,diff算法会默认复用之前的列表并在最后追加一个,如果列表存在选中一类的状态则会随着复用出现绑定错误的情况而不是跟着原元素,key的作用就可以给他一个标识,让状态跟着数据渲染。

$nextTick

问题

$nextTick用过吗,有什么作用。

问题描述

问到这个问题时,很多人都会说到可以处理异步,而往下追问为什么要用nextTick,他解决了什么问题,不用他会怎么样的时候就很多人说不上来了。

期望答案

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。(官网解释)

解决的问题:有些时候在改变数据后立即要对dom进行操作,此时获取到的dom仍是获取到的是数据刷新前的dom,无法满足需要,这个时候就用到了$nextTick。

$set

问题

vue中的$set用过吗,为什么要用它,解决了什么问题

问题描述

这个问题知道的人就基本都能说出来,但是不知道的就是一点不了解,有的还会说到es6的set结构

期望答案

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')(官方示例)

我自己的理解就是,在vue中对一个对象内部进行一些修改时,vue没有监听到变化无法触发视图的更新,此时来使用$set来触发更新,使视图更新为最新的数据。

组件间的传值

问题

说一下组件间的传值方式,你知道的所有方式都说一下

问题描述

这个问题其实就是想看官方文档有没有具体看过,因为很多传值方式官方文档上有描述,但是项目中用的相对较少。

基本都能回答上来,父传子:props;子传父:$emit;兄弟:eventbus;vuex;有一些会说到sessionStorage和localStorage、路由传参(这个答案其实并不是我想要问的,不过也可以实现一定的传值)

期望答案

1、ovide / inject

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

2、Vue.observable

让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。

返回的对象可以直接用于渲染函数和计算属性内,并且会在发生改变时触发相应的更新。也可以作为最小化的跨组件状态存储器,用于简单的场景:

3、$attrs

包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。

4、$listeners

包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。

5、props

6、$emit

7、eventbus

8、vuex

9、$parent / $children / ref

以上就是前端面试时面试官想要听到什么答案(关于一些Vue的问题)的详细内容

小编是一个有着5年工作经验的架构师,关于web前端,自己有做材料的整合,一个完整学习web前端的路线,学习材料和工具。需要的伙伴可以私信我,免费送给大家。对于学习web前端有任何问题(学习方法,学习效率,如何就业)都可以问我。希望你也能凭自己的努力,成为下一个优秀的程序员!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一些常见的Vue前端面试题及其答案: 1. 什么是Vue.js? 答:Vue.js是一个轻量级的JavaScript框架,用于构建用户界面。它易于使用,具有高效的性能和可扩展性。Vue.js采用了MVVM(Model-View-ViewModel)模式,将UI与业务逻辑分离,使代码更易于维护和扩展。 2. Vue.js的核心特点是什么? 答:Vue.js的核心特点包括: - 响应式数据绑定 - 组件化开发 - 轻量级、高效的性能 - 可定制化、可扩展 3. 什么是Vue组件? 答:Vue组件是可复用的、自包含的代码块,用于构建用户界面。组件可以包含HTML、CSS和JavaScript代码,并且可以接受输入和输出。Vue组件采用了单文件组件(SFC)的方式进行开发,将组件的相关代码放在同一文件中,使得组件更易于维护和重用。 4. 什么是Vue的生命周期钩子函数? 答:Vue的生命周期钩子函数是一组函数,用于在Vue实例生命周期中执行特定的操作。这些钩子函数包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed。开发者可以通过这些钩子函数来控制Vue实例的行为和状态。 5. 什么是Vue的路由? 答:Vue的路由是一种管理页面之间导航的机制。它可以帮助开发者构建单页应用程序(SPA),在页面之间进行无刷新的导航。Vue的路由采用了Vue Router插件,可以通过配置路由表来实现页面之间的导航。 6. 什么是Vue的指令? 答:Vue的指令是一种特殊的HTML属性,用于将Vue实例的数据绑定到DOM元素上。Vue的指令包括v-model、v-bind、v-if、v-for、v-show等等。开发者可以通过这些指令来控制DOM元素的行为和状态。 7. 什么是Vue的模板语法? 答:Vue的模板语法是一种将Vue实例中的数据绑定到HTML模板中的机制。Vue的模板语法采用了插值、指令、计算属性等方式实现数据绑定。这使得开发者可以将数据和UI分离,并且更容易地构建复杂的用户界面。 以上是一些常见的Vue前端面试题及其答案,希望对你有所帮助。 ### 回答2: Vue前端面试题及答案如下: 1. Vue的特点是什么? Vue具有简单、灵活、高效的特点。它使用虚拟DOM进行渲染,提高性能;采用组件化开发,方便复用和维护;支持响应式数据绑定,实更新页面;支持指令和过滤器,方便处理DOM操作和数据过滤。 2. Vue的生命周期有哪些? Vue的生命周期包括:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed。这些生命周期钩子函数可以在不同的阶段执行相应的操作,比如在mounted阶段可以进行异步请求数据,或者在beforeDestroy阶段清理定器等。 3. Vue中的双向绑定是如何实现的? Vue使用了数据劫持和观察者模式来实现双向绑定。通过Object.defineProperty()方法对数据对象进行劫持,当数据发生变化,触发相应的getter和setter方法,同更新视图中的数据。而观察者模式则通过Watcher对象来监听数据的变化,并将变化通知给视图进行更新。 4. Vue中的指令有哪些? Vue常用的指令有v-if、v-for、v-bind、v-on、v-model等。其中v-if用于条件渲染元素,v-for用于循环渲染元素,v-bind用于绑定属性或类名,v-on用于绑定事件,v-model用于双向绑定表单元素的值。 5. Vue的路由是如何实现的? Vue可以通过Vue Router实现前端路由。Vue Router通过hash或history模式来监听URL的变化,并根据配置的路由表来匹配相应的组件进行渲染。通过路由的切换,可以实现单页应用的页面切换、参数传递等功能。 总结:以上是一些常见的Vue前端面试题及简要答案。在面试过程中,除了了解以上知识点,还需要在实际项目中具备一定的经验和实践能力,以能够更好地应对面试官的提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值