2024年Web前端最全「2024」打算跳槽涨薪,必问面试题及答案——VUE3 篇(1),前端开发者跳槽面试

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总

实现 DOM 的方式进行 WebGL 编程。

3、vue2 和 vue3 的响应式有什么区别?


vue2 的响应式原理:

  • 对象:是通过 Object.defineProperty 对 对象的已有属性值的读取和修改进行劫持。

Object.defineProperty( ‘data’, ‘count’, {

get(){ },

set(){ }

})

存在的问题:对象直接添加新属性或删除已有属性的时候,界面不会自动更新。

  • 数组:是通过重写数组更新数组一系列更新元素的方法,来实现元素修改的劫持。

// 伪代码

const originalProto = Array.prototype

const arrayProto = Object.create(originalProto)

[‘push’,‘pop’,‘shift’,‘unshift’,‘splice’,‘reverse’,‘sort’].forEach(key=>{

arrayProto[key] = function(){

originalProto[key].apply(this.arguments)

notifyUpdate()

}

})

存在问题:直接通过下标替换元素或更新length的时候,界面不会自动更新。

针对 vue2 对象和数组的某些更新,界面不能自动更新的问题,vue2 通过 $set 方法,实现视图的实时更新。

vue3的响应式原理:

vue3 响应式是使用 ES6 的 proxy 和 Reflect 相互配合实现数据响应式,解决了 vue2 中视图不能自动更新的问题。

proxy 是深度监听,所以可以监听对象和数组内的任意元素,从而可以实现视图实时更新。

4、vue3 组合式API生命周期钩子函数有变化吗?


setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显示的定义它们。其他的钩子都可以编写到 setup 内。

值得注意的是组合式API中的钩子函数,通过在生命周期钩子前面加上 “on” 来访问组件的生命周期钩子,需要注册,并且只能在 setup 期间同步使用,因为它们依赖于内部的全局状态来定位当前组件实例。

import { onMounted } from “vue”

export default {

setup() {

// mounted

onMounted(() => {

console.log(‘Component is mounted!’)

})

}

}

下图是选项式API 和 组合式API 生命周期钩子对比:

5、Composition API 与 Options API 有什么区别?


Options API 是啥?

vue2 中我们把一个 vue 文件中 data、methods、props、mounted、computed 等定义属性和方法,共同处理页面逻辑,这种方式叫做 Options API。

这种方式开发的复杂组件,同一个功能的往往需要在不同 vue 配置项中定义属性和方法,代码比较分散。如果功能比较复杂,维护代码的时候往往会很难分清每个方法对应的功能,增加了代码维护成本。所以 vue3 舍弃了 Options API ,换用 Composition API。

Composition API 是啥?

Composition API 是 vue3 新增的,所以 vue2 没有。在 Composition API 中,根据代码逻辑功能来组织的,一个功能所定义的所有 API 都会放到一起,这样即使功能复杂,代码量增大,都可以一下子定位到某个功能的所有代码,代码维护方便。它的最大特点就是:高内聚,低耦合。

vue3 仍然支持 options API,但我们更推荐使用 Composition API。优劣比较:

  • 更好的可编程性。

  • 更优的代码组织。

  • 更好的逻辑抽象能力。

  • 对 tree-shaking 友好,代码也更容易压缩。

  • 没有 this ,没烦恼。

6、watch 和 watchEffect 的区别?


watch 和 watchEffect 都是监听器,watchEffect 是一个副作用函数。它们之间的区别有:

  1. watch 需要传入监听的数据源,而 watchEffect 可以自动手机数据源作为依赖。

  2. watch 可以访问倒改变之前和之后的值,watchEffect 只能获取改变后的值。

  3. watch 运行的时候不会立即执行,值改变后才会执行,而 watchEffect 运行后可立即执行。这一点可以通过 watch 的配置项 immediate 改变。

7、vue2 如何升级到 vue3 ?


如果是把之前的 vue2 项目升级到 vue3 ,先卸载旧版本的 vue-cli,安装最新版本。安装完成之后,检查 vue 的版本。然后需要注意,把项目中 vue3 发生改变或被废弃的特性需要进行修改。如:

  • $children 被 vue3 移除,使用 $children 的需要替换为 $ref。

  • filters 被移除,更改为 computed 。

  • $destory 被移除,需要删除掉。

  • 插槽的新变化。

  • Vuex 使用发生改变。

  • vue-router 使用发生改变等等。

可以自行在官网查看升级指南。地址如图

8、v-if 和 v-for 的优先级哪个高?


在 vue2 中 v-for 的优先级更高,但是在 vue3 中优先级改变了。v-if 的优先级更高。

在 vue2 中 v-for 和 v-if 同时出现时,可放在一个标签内,如下写法:

{{ item.show }}

data(){

return{

ss:[

{ id: 1, show: true, name: ‘1’ },

{ id: 2, show: false, name: ‘2’ },

{ id: 3, show: true, name: ‘3’ },

]

文末

技术是没有终点的,也是学不完的,最重要的是活着、不秃。

零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。

最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

自学最怕的就是缺乏自驱力,一定要自律,杜绝“三天打鱼两天晒网”,到最后白忙活一场。

高度自律的同时,要保持耐心,不抛弃不放弃,切勿自怨自艾,每天给自己一点点鼓励,学习的劲头就会很足,不容易犯困。

技术学到手后,找工作的时候一定要好好准备一份简历,不要无头苍蝇一样去海投简历,容易“竹篮打水一场空”。好好的准备一下简历,毕竟是找工作的敲门砖。

拿到面试邀请后,在面试的过程中一定要大大方方,尽力把自己学到的知识舒适地表达出来,不要因为是自学就不够自信,给面试官一个好的印象,面试成功的几率就会大很多,加油吧,骚年!

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值