2023年前端面试题
admin
2024-02-07 13:32:02
0

前言

前端关于vue的面试题


提示:以下是本篇文章正文内容,下面案例可供参考

1、ES6的新特性有哪些,举例说明。

Let const 箭头函数 点点点运算符 变量的解构赋值
简化对象写法 形参的默认值 模板字符串 Promise symbol class类 for in for of Set map
generator(接呢瑞特)

2、Css3的新特性有哪些

1、圆角效果;2、图形化边界;3、块阴影与文字阴影;4、使用RGBA实现透明效果;5、渐变效果;6、使用“@Font-Face”实现定制字体;7、多背景图;8、文字或图像的变形处理;9、多栏布局;10、媒体查询等。

3、说一说你对promise的理解。

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

4、什么是深拷贝和浅拷贝?以及封装实现深拷贝的方法

深拷贝:层层拷贝 每一层的数据都会拷贝 — 产生了新的数据
浅拷贝:只拷贝一层数据,深层次对象级别的只拷贝了地址 – 拷贝引用

5、判断数据类型的方法有哪些

Instanceof constructor object.prototype.toString.call() typeOf

6、什么是原型和原型链说一下你的理解

在JavaScript中有这么一句话万物皆可对象
在声明一个函数跟对象的时候 它在声明的时候就有一个原型对象prototype
这个属性指向函数的原型对象,并且这个属性是一个对象数据类型的值。
而protortype 的指向是它的隐式原型 proto

所有对象都有自己的原型对象(prototype)。一方面,任何一个对象,都可以充当其他对象的原型;另一方面,由于原型对象也是对象,所以它也有自己的原型。因此,就会形成一个“原型链”(prototype chain)最终都可以上溯到Object.prototype Object.prototype对象有没有它的原型呢?回答Object.prototype的原型是null。null没有任何属性和方法,也没有自己的原型。因此,原型链的尽头就是null。

7、说一下对闭包的理解,以及闭包的应用场景

是一个可以读取其他函数内部变量的函数,在js中只有函数内部的函数才可以读取该函数内部的变量,因此,闭包可以是一个函数中返回的函数。
闭包的好处:可以读取其他函数内部的变量,并将其一直保存在内存中。
坏处: 可能会造成内存泄露或者内存溢出

8、vue组件中data为什么是一个返回对象的函数

如果data是对象的话,由于对象是引用类型,组件被复用的话,就会创建多个实例。 本质上,这些实例用的都是同一个构造函数。这样就会影响到所有的实例,所以为了保 证组件不同的实例之间data不冲突,data必须是一个函数。

9、写出除了vuex以外,写出6种组件通信的方式,并解释每种通信方式是如何通信的

1.父子通信:父组件使用props组件传递数据,子组件通过事件向父组件发送消息使用
2.子组件给父组件传递值:通过子组件内emit触发自定义事件,子组件使用时v−on绑定自定义事件3.任意组件之间通信emit触发自定义事件,子组件使用时v-on绑定自定义事件 3.任意组件之间通信emit触发自定义事件,子组件使用时v−on绑定自定义事件3.任意组件之间通信emit.$on:eventBus就是创建一个事件中心,相当于中转站,可以用它来传递事件和接受事件,项目比较小时合适
4.v-model,在props中通过input接收,value对参数进行改变
5.父组件通过ref调用子组件方法
6.使用 $ parent和 $ children获取父子组件的参数

10、vue-router路由传参有哪些方法,如何获取路由参数。

params和query
This.route.paramsThis.route.params This.route.paramsThis.route.query

11、vuex是什么?怎么使用?哪种功能场景使用它

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式
This.store.commit(‘参数’,传递的值)This.store.commit(‘参数’,传递的值) This.store.commit(‘参数’,传递的值)This.store.state.参数 — 接收
单页应用中,组件之间的数据状态。

12、Vue-router中hash模式和history模式的区别

hash模式的URL中会夹杂着#号,而history没有。
Vue底层对它们的实现方式不同:
hash模式是依靠onhashchange事件(监听location.hash的改变)
history模式是主要是依靠pushState() replaceState()
pushState():可以创建新的历史记录
replaceState():只能修改当前历史记录
当真正需要通过URL向后端发送HTTP请求的时候,比如我们前端请求的url更改造成页面刷新时 在history模式下如果前端请求的url跟后端不匹配时会产生一个错误

13、说一下vue2的生命周期函数以及各个生命周期函数的作用

创建前:Beforecreate 实例已经初始化,但不能获取DOM节点。(没有data,没有el)
创建后:Created 实例已经创建,仍然不能获取DOM节点。(有data,没有el)
挂载前:beforemount 模板编译完成,但还没挂载到界面上。(有data,有el)
挂载后:Mounted 编译好的模板已挂载到页面中(数据和DOM都已经渲染出来)。
更新前:beforeupdate 数据发生变化立即调用,此时data中数据是最新的,但页面上数据仍然是旧的(检测到数据更新时,但DOM更新前执行)。
更新后:Updated 更新结束后执行,此时data中的值和页面上的值都是最新的。
销毁前:beforedestroy 当要销毁vue实例时,在销毁之前执行。
销毁后:Destroyed 在销毁vue实例时执行。

14、Vue 是如何实现双向绑定的

vue的双向绑定指的是数据变化更新视图,视图变化更新数据。
视图变化更新数据一般就采用事件监听的方式就可以了,数据变化更新视图就需要涉及响应式原理。
vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。

15、Vue 中有哪些导航守卫,并写出导航守卫函数接收的三个参数有什么作用

全局导航守卫:beforeEach、beforeResolve、afterEach
组件内守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave
路由独享守卫:beforeEnter

To:即将要进入的目标 路由对象(route)From:当前导航正要离开的路由对象(route) From:当前导航正要离开的路由对象(route)From:当前导航正要离开的路由对象(route)
Next():路由确认回调函数、next(false): 中断当前的导航、next(‘/’):跳转到一个不同的地址

16、写一下 Object.defineProperty 与proxy的区别

通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,

17、说一下对vue中mixin的理解以及应用场景

mixin(混入),提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能
将组件的公共逻辑或者配置提取出来,哪个组件需要用到时,直接将提取的这部分混入到组件内部即可。这样既可以减少代码冗余度,也可以让后期维护起来更加容易。

18、说一下对slot的理解

所谓的插槽简单的说就是⼀个占位符,将⾃定义组件的内容展示出来.我们知道⾃定义的组件⾥⾯如果写内容的话,⻚⾯是不会显 示出来的,如果我们想让⾃定义组件⾥⾯的内容显示出来,我们就需要使⽤slot的插槽.
⽽插槽分别具名插槽和匿名插槽、以及作⽤域插槽. 我们⽤的⽐较多的具名插槽和匿名插槽,具名插槽需要所有slot标签上指定 name属性,⽽在对应标签上添加v-slot属性.
在项⽬中我们⼀般在进⾏组件封装的时候会使⽤插槽

19、说一下vue2与vue3的区别

1.vue2和vue3双向数据绑定原理发生了改变
vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的。vue3中使用了es6的proxyAPI对数据进行处理。
相比与vue2,使用proxy API 优势有:defineProperty只能监听某个属性,不能对全对象进行监听;可以省去for in 、闭包等内容来提升效率(直接绑定整个对象即可);可以监听数组,不用再去单独的对数组做特异性操作,vue3可以检测到数组内部数据的变化。

2.Vue3支持碎片(Fragments)
就是说可以拥有多个跟节点。

  1. Composition API
    Vue2 与vue3 最大的区别是vue2使用选项类型api,对比vue3合成型api
    20、说一下对keep-alive的理解,以及keep-alive的使用场景
    eep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM
    keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们
    keep-alive可以设置以下props属性:
    include - 字符串或正则表达式。只有名称匹配的组件会被缓存
    exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存
    max - 数字。最多可以缓存多少组件实例
    当我们从首页–>列表页–>商详页–>再返回,这时候列表页应该是需要keep-alive
    从首页–>列表页–>商详页–>返回到列表页(需要缓存)–>返回到首页(需要缓存)–>再次进入列表页(不需要缓存),这时候可以按需来控制页面的keep-alive

21、Vue中为什么要用到路由懒加载并写出路由表中路由懒加载的写法

像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时
()=>import(‘引入路由地址’)

22、写一下命名视图以及嵌套路由

嵌套路由也称之为子路由, 就是在被切换的组件中又切换其它子组件
名视图和具名插槽很像, 都是让不同的出口显示不同的内容
命名视图就是当路由地址被匹配的时候同时指定多个出口, 并且每个出口中显示的内容不同
如果不起名字默认名字就是default


总结

以上为vue面试的总结

相关内容

热门资讯

消息称百度旗下昆仑芯瞄准500... 6 月 29 日消息,据《The Information》昨日援引知情人士消息,百度旗下 AI 芯片...
打造夏日消费新场景 第35届北... 北京商报讯(记者 翟枫瑞)6月29日消息,第35届北京国际燕京啤酒文化节新闻发布会在京举行。本届啤酒...
社保基金持仓数据出炉,一季度增... 最近各大上市公司一季度财报都公开了,咱们国家社保基金的持仓数据也全部曝光。目前社保拿着比亚迪价值44...
36氪首发 | 海思、中兴团队... 作者 | 乔钰杰 编辑 | 袁斯来 硬氪获悉,广州宸思通讯科技有限公司(以下简称“宸思科技”)近日完...
两天蒸发47亿市值!一纸税务通... 一纸税务通知书,能让一家百亿龙头两天蒸发47亿市值。 6月22日,北大荒(600598.SH)公告称...
SK海力士将投资1100万亿韩... SK集团会长崔泰源6月29日在韩国“三大重大计划”发布会上宣布,公司将投资1100万亿韩元扩大半导体...
两只A股,终止上市! 两家A股公司,即将摘牌。 6月29日,退市沪科(600608.SH)公告称,上海证券交易所将在202...
原创 M... 一家成立近十年的自动驾驶公司,在IPO时吸引了14家基石投资者认购近一半的发行股份,其中不乏奔驰、比...
基金忠言|国寿安保滤镜碎,三年... 图片来源:视觉中国 蓝鲸新闻6月29日讯(记者 祁和忠)保险系基金公司国寿安保总经理换人了。 6月2...
三星电机计划加码玻璃基板!相关... 6月29日,玻璃基板概念股午后有所回升, 华工科技(000988.SZ)逼近涨停, 彩虹股份(600...
拉萨海关持续壮大外贸经营主体 ...   新华网拉萨6月28日电(记者蒋梦辰)近日,记者从拉萨海关获悉,今年前5个月,西藏有进出口实绩的外...
机构:二季报临近,医药生物板块... 6月29日,华源证券发布了一篇医药生物行业的研究报告,报告指出,业绩期临近,产业链景气度有望再次迎来...
每日收评科创50放量涨超4.5... 财联社6月29日讯,三大指数全线收红,创业板指探底回升,科创50指数大涨4.61%。沪深两市成交额3...
6月多地土拍结构性升温:深圳单... 进入2026年6月,不少城市核心区地块集中诞生高溢价宗地,热度突出的城市包含深圳、杭州、长沙。 其中...
业绩炸裂!盛达资源半年预盈3.... 6月29日,贵金属矿山龙头盛达资源(000603.SZ)发布 2026 年半年度业绩预告,上半年业绩...
A股午后拉升三大股指收涨:半导... A股三大股指6月29日开盘涨跌互现。早盘沪强深弱,创指一度跌超2%。半导体午后拉升,带动两市上涨,沪...
原创 空... 前言 大家好,我是老金。 这几天,两幅极度割裂的画面放在一起,把我看笑了。 一边是在持续的热浪下,欧...
澳大利亚审慎监管局拟放宽银行风... 澳大利亚审慎监管局(APRA)6月29日就修改 银行信用风险资本设定公开征求意见,旨在加大信贷投放以...
全民炒股,急踩刹车!韩国股市突... 屈红燕/证券时报网 全民狂欢、交易高度拥挤、杠杆资金猛增、新入市投资者表现激进、大型IPO吸金等现象...