2023前端面试题总结--回答比较口语化,可能不是特别准确

文章目录

一、高频前端面试题

b站up矫矫矫呀的分享


1.前端三件套:

html

1.flex布局的用法,有哪些属性?

flex布局又称弹性布局,开启Flex布局时,只需要在父级元素上写上display: flex
flex布局用来设置flex子项目flex父容器剩余空间中占有的份数比例
flex布局中常用属性:
1.flex属性,用来设置flex子项目flex父容器剩余空间中占有的份数比例。
2.align-self 属性 : 控制 flex 子项目 在 侧轴 的排列方式
3.order 属性 : 控制 flex 子项目 的排列顺序
4. flex-direction:设置主轴的方向

2.定位有哪几种?某一种定位方式它的使用场景是什么?(例如,粘性定位的场景是什么?)

最常见是绝对定位和相对定位,还有固定定位和粘性定位。
绝对定位和相对定位一般是一起出现的,子绝父相,子级绝对定位,不会占有位置,可以放在父盒子的任意一个地方,父盒子需要加定位限制子盒子在父盒子中显示
固定定位是将元素固定在浏览器的可视区域,常见的应用是两侧固定的广告
粘性定位可以被认为是相对定位和固定定位的混合,常见的应用是用于实现固定导航头部

3.选择器(例如,.a .b这是什么选择器)

类选择器:.类名
id选择器:#id名
后代选择器:元素1 元素2{ }
子选择器:元素1>元素2 { }
并集选择器:元素1,元素2{ }
伪类选择器:a:hover等

4.清除浮动相关知识

常用的有以下2种
给父元素添加overflow: hidden
或者给需要清除浮动的元素添加一个css样式clear:both;

5.html文件中head标签中常见的标签有哪些?(比如meta,script,title,style等)

title 标签的唯一作用就是定义网页的标题
meta 标签一般用来定义页面的关键字、页面的描述等。这些信息不是提供给读者看的,而是提供给搜索引擎看的
style标签用于定义元素的CSS样式
script标签用于定义页面的JavaScript代码
link标签用于引入外部样式文件

6.script标签中有哪些属性(比如async异步属性这些)?

src:可选,链接外部文件
type :一般都是text/javascript
charset:字符编码属性,可选。默认是utf-8编码
defer:如果script标签设置了该属性,则浏览器会异步的下载该文件并且不会影响到后续DOM的渲染
async:使得script脚本异步的加载并在允许的情况下执行,async的执行,并不会按着script在页面中的顺序来执行,而是谁先加载完谁执行

8.你是否会用canvas,如果会用,了解哪些属性呢?

不是特别熟练,但是有所了解
canvas是HTML5新增的一个标签,它目前能够提供2D图形的绘制,为数据可视化提供基础
通过moveTo(x轴,y轴)方法绘制起始点,通过lineTo(x,y)绘制其他点,调用closePath()可以闭合图形,最后调用stroke()开始绘制图形

css

1.display:none和visibility:hidden之间的区别?它们是否会触发重绘以及回流?

它们都能在浏览器上让某个元素隐藏起来
display: none----将元素的显示设为无,即在网页中不占任何的位置,会影响网页布局
visibility: hidden----它只是简单的让元素看不见,但本身的位置还在
属性更新只是影响元素的外观、风格,而不会影响布局的操作,这种称为重绘
会影响到布局的操作,这样的操作我们称为回流
display: none 会引起页面的回流(又称重排)以及重绘,而visibility: hidden只会引起重绘

2.元素垂直居中问题(定位相关知识,css3的平移和flex相关布局)
  1. 利用元素行高line-height属性
  2. 利用元素上下内边距padding
  3. 利用flex布局
  4. 使用position: fixed 定位
3.盒子模型相关问题(我们了解的2个盒子模型,它们之间的区别是什么?使用场景又是什么?)

盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。有内边距,外边距,边框和内容

js

1.闭包:为什么要使用闭包?什么是闭包?闭包会遇到什么问题?既然有这些问题,我们还为什么要使用闭包?
  1. 闭包实现了数据的私有,比如统计函数调用次数,首先需要定义一个变量i用来统计次数,它是在统计函数外面的,但是如果此时有人修改i的值,统计函数里面的值也会被修改,所以需要将定义的i,和统计函数用一个外层函数框起来。这样就无法直接修改i,如下图:
    在这里插入图片描述
  2. 简单来说,闭包就是能够读取其他函数内部变量的函数
  3. 借助于垃圾回收机制的标记清除法可以看出,很明显,fun是一个全局变量,代码执行完毕不会立即销毁,而fun使用到count函数,count用到fn函数,fn函数里面用到i,因此i被引用就不会被回收,使用一直存在,此时,闭包会造成内存泄漏问题
  4. 如何解决内存泄漏问题?在不使用闭包时,把被引用的变量设置为null
2.继承:有哪几种继承方式?每种继承方式的原理?

所谓继承就是通过某种方式让一个对象可以访问到另一个对象中的属性和方法
在js中常用的继承方式有:原型链继承,借用构造函数继承,组合模式继承,共享原型继承,原型式继承,寄生式继承,寄生组合式继承,ES6中class的继承
原型链继承:通过实例化一个函数使子类的原型指向父类的实例,子类就可以调用到父类的属性和方法
在这里插入图片描述

借用构造函数继承:在子类型的构造函数中调用超类型的构造函数,基本思想就是利用 call 把父类中通过this指定的方法复制到子类创建的实例中
在这里插入图片描述
组合式继承是将原型链继承和构造函数继承二者取其长处组合到一起而产生的继承模式
共享原型继承:该继承方式使得子类和父类共用一个原型
在这里插入图片描述

3.原型链:什么是原型链?这个链的过程?这些原型我们怎么去访问?

原型:每个函数都有prototype属性,称为原型,因为这个属性的值是个对象,也称为原型对象
原型的作用:1.存放一些属性和方法 2.在JavaScript中实现继承
proto:每个对象都有_proto_属性
作用:这个属性指向它的原型对象
在这里插入图片描述
这就引出了原型链这个概念,因为原型也是一个对象,因此原型对象也是有_proto_这个属性的(只要是对象就有这个属性),通过_proto_属性一级一级往上找的这条链式结构(线路)就叫做原型链,找到最高级则返回null
在这里插入图片描述

4.作用域:let,const,var的区别?变量提升问题?

1.var允许重复声明,let,const不允许
2.var存在变量提升问题,let和const没有变量提升问题
3.Let和var是用来声明变量的可以重新赋值,const是用来声明常量的,设置初始值后,不可以重新赋值
4.全局作用域中,var声明的变量会自动变成window对象的变量,但const和let不会
5.var没有块级作用域,let和const有块级作用域(块级作用域:大部分包含{}的都可以构成块级作用域)

5.基本数据类型的判断:有哪些基本数据类型?如何判断这些数据类型?(很常见)

1.js数据类型可以分为两种
基本类型:(string)字符串 (undefined)未定义 (null)空 (numbel) 数字
boolean(布尔) 等
引用类型:数组(array ) function(函数) object(对象)等
2.检测数据类型的4种方法
typeof
instanceof(它的原理是:检测构造函数的 prototype 属性是否在某个实例对象的原型链上)
constructor
object.prototype.tostring.call()

6.数组:数组的哪些方法可以改变数组,数组的哪些方法是不可以改变数组的?数组去重问题?判断数组的方法有哪一些?数组循环的方法有哪一些?(比如map,foreach,for of,for in)

1.改变数组的方法:push(),pop(),unshift(),shift(),reverse(),sort(),splice()
2.不改变数组的方法:
concat(),indexof(),lastindexof()
3.数组去重问题:
利用数组的indexOf方法:新建一个空数组,遍历需要去重的数组,将数组元素存入新数组中,存放前判断数组中是否已经含有当前元素,没有则存入
4.判断数组的方法:
通过Array.isArray()判断,instanceof(),通过constructor判断,通过Object.prototype.toString.call()判断
5.for循环,for in循环,forEach循环,map()

7.parseInt有哪些参数?

parseInt是一种字符串转数字的
parseInt的参数包含两个,一个是字符串string,另一个是被解析值的进制

8.es6的一些新语法(比如模块化他有哪些使用方式?垃圾回收机制)

1.使用let,const定义变量
2.箭头函数
3.模板字符串:可以解析变量
4.类和继承
5.Promise对象
6.async/await异步编程语法糖

9.箭头函数和普通函数的区别?

1.箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数
2.箭头函数不能用于构造函数,普通函数可以用于构造函数,以此创建对象实例
3.箭头函数中this的指向不同,箭头函数自身没有this,它的this是父级普通函数的this,在普通函数中,this总是指向调用它的对象
4.箭头函数不具有arguments对象
5.箭头函数不具有prototype原型对象

2.浏览器相关问题

1.http1,http1.1,http2之间的区别

2.浏览器缓存的一个全过程

在这里插入图片描述
参考该链接

3.cookie,localStorage,sessionStorage的区别(经常问)

1.cookie每次都会携带在http头中,而localStorage和sessionStorage仅仅在客户端(浏览器)中保存
2.cookie只能存放4kb左右的信息,localStorage和sessionStorage可以保存5MB的信息
3.cookie可设置时效,没有设置的话,默认浏览器关闭后清除。localStorage除非被手动清除,否则将会永久保存。sessionStorage关闭页面或浏览器后就会被清除

4.js,css文件阻塞问题(不太明白)

5.async,defer它们异步下载文件的一个区别(不太明白)

defer和async都属于异步加载, 加载的时候不会阻塞DOM解析 defer会比async稳定。
defer是延迟执行(推迟解释,当前html页面解析完成后执行)js,async是当前js文件加载完成后执行js
以下是详细解释:
在这里插入图片描述

6.浏览器输入url后它的一个全过程

1:根据网址进行DNS解析,将相应的域名解析为IP地址
2:客户端根据IP地址去寻找对应的服务器并进行TCP三次握手,建立TCP连接
3:客户端发起HTTP请求,请求对应资源
4:服务器响应并返回相应数据(如:HTML文件)
5:浏览器将获取的HTML文档由HTML解析器解析成DOM树
6:同时由CSS解析器将CSS样式解析成CSS Rule Tree(CSS规则树)
7:将生成的DOM树和CSS规则树合并生成Rendering Tree(渲染树)
8:根据渲染树,在屏幕上对元素进行布局
9:根据渲染树,将各个元素绘制到屏幕上
10:客户端与服务器进行TCP的四次挥手

3.其他问题

1.promise常用的方法有哪些?它的API?promise.all,promise.race?

2.路由相关问题:history与hash的原理和区别(问的很多)

1.如果使用的是hash模式的话,那么在你提交的url路径中会有一个#号,那么#及其后面的内容就是hash值。但是这种没有history模式美观。
2.hash模式最大的特点就是#后面的内容不会随http请求发给服务器
2.在项目上线的时候,hash模式的大概率不会有问题,但是history模式则需要和后端人员商量,解决刷新页面服务的404的问题

3.跨域问题(非常常见):主要是答jsonp和cors

4.项目中前端你是如何发送请求的?(写一下原生ajax发送请求)

5.基于promise怎么封装这个Ajax请求?

4.Vue框架问题

1.双向绑定的原理

双向绑定时基于MVVM模式的,即model-view-viewmodel模式,view指的时视图层,viewModel是业务逻辑层,model是数据层。
viewmodel更像一个桥梁,当用户操作view,viewmodel感知到变化,然后通知model发生改变,反之亦然。
vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。

2.webpack打包相关的问题(比如plugin,babel,loader之间的区别以及用法)

webpack是一个打包模块化js的工具
loader 用于对模块的源代码进行转换。本质上是一个函数,在函数中对接收到的内容进行转化,返回转化后的结果
比如babel-loader就是将ES6转换成ES5
loader像一个“翻译官”,把读到的源文件内容转义成新的文件内容,并且每个loader通过链式操作,把源文件一步步翻译成想要的样子
plugin编写比较灵活。webpack在运行的生命周期中会广播出许多事件,plugin可以监听这些事件,在合适的时机通过webpack提供的API改变输出结果。


二、面试真题

小红书努力的但丁分享


1.小公司实习面试题

1.说一下vue生命周期

vue的生命周期分为8个阶段,分别是:

beforeCreate:在实例初始化之后,数据观测和事件配置之前调用。
created:在实例创建完成后调用,在这一步,实例已完成数据观测,属性和方法的运算,但是还没有进行DOM的挂载。
beforeMount:在挂载开始之前被调用,相关的render函数首次被调用。
mounted:挂载完成后调用,此时,组件已经显示到页面上。
beforeUpdate:在数据更新之前调用,在这一步,可以对更新之前的状态进行修改。
updated:数据已经更新完成后调用,此时,组件已经重新渲染完成。
beforeDestroy:在实例销毁之前调用,此时,实例仍然完全可用。
destroyed:实例销毁之后调用,此时,组件已经被完全卸载,所有的事件监听器和子实例已经被移除。

2.说一下组件通信

组件通信有父子组件之间通信,也有兄弟组件通信
父组件向子组件传值使用props,子组件用props属性接收
在这里插入图片描述
在这里插入图片描述
子组件向父组件传递数据使用$emit用法
$emit绑定一个事件,当该事件被触发时就会将数据传递给父组件
在这里插入图片描述
在这里插入图片描述
ref方法,通过ref属性给子组件设置一个名字,父组件通过$refs组件名来获得子组件,子组件通过$parent获得父组件,实现父子组件中的通信

对于兄弟组件间的通信可以采用:
全局事件总线方法:其实相当于创建一个中转站,可以用于它来传递事件和接受事件
vuex全局事件总线方法可以解决组件间通信的问题,但是如果组件过多,使用全局事件总线就太麻烦了,这是就可以使用vuex,vuex的思想就是将这一些公共的数据抽取出来,作为一个全局变量来管理

3.说一下vuex

vuex是用来解决多组件之间共享数据(状态)问题的
vuex中最重要的三个属性是Actions,mutations和state
其中action用来响应组件中的动作
mutation用来处理数据,有点像计算属性
state用来存储数据
整个流程就是,浏览器通过mapAction将数据传给Action,action通过commit方法将数据同步提交给mutations,mutations会修改state中的值,最后通过getter把对应值跑出去

4.说一下双向绑定的原理

Vue中的双向绑定主要是通过v-model来实现的
大致流程:
1.data通过observer类转换成getter/setter的形式来追踪变化
2.当外界通过watcher读取数据时,会触发getter从而将Watcher添加到依赖中(谁用到这个数据,谁就是这个数据的依赖,Watcher类就是“谁”的具象化)
3.当数据发生了变化时,会触发setter,从而向Dep中的依赖(即Watcher)发送通知
4.Watcher接收到通知后,会向外界发送通知,变化通知到外界后可能会触发视图更新,也有可能触发用户的某个回调函数等。

5.知道哪些vue指令

v-bind单向数据绑定
v-model双向数据绑定
v-on用于事件绑定,常常写成@形式
v-show接受一个表达式或布尔值,相当于给元素添加一个display属性
v-ifv-show有同样的效果,不同的是v-if是重新渲染,v-show是使用display属性来控制隐藏
v-else-if,v-else和v-if配合使用
v-for用来遍历数组,对象,字符串
v-text渲染字符串
v-html渲染为html

6.说一下自定义指令

vue中所有的指令都是v-name这种类型
我们可以使用Vue.directive(dir_name,{})来定义全局自定义指令

7.说一下路由传参

在 Vue.js 中,路由传参主要有两种方式: query 和 params
query: 在 URL 中使用 ?key=value 的形式传递参数,可以在组件中通过 $route.query 来访问。
params: 在 URL 中使用 /:key 的形式传递参数,可以在组件中通过 $route.params 来访问

8.说一下防抖节流

防抖是指连续触发事件但是在设定的一段时间内只执行最后一次,一般是利用定时器实现的
应用场景:搜索框搜索输入,文本编辑器实时保存
节流是指连续触发事件但是在设定的一段时间内只执行一次函数
应用场景:高频事件例如快速点击,鼠标滑动;视频播放记录时间,也是利用定时器实现

9.说一下this

1.如果函数是作为构造函数,使用new方法生成的对象,那么这个函数里面的this指的是该实例对象
2.如果是普通函数,this一般是指该函数的调用对象
3.箭头函数没有自己的this,只能从作用域链的上一层获取this;,所以箭头函数的this是可变的
4.vue中vm中的this一般指的是vm实例对象

10.怎么阻止默认事件

使用 JavaScript 的 event.preventDefault() 方法来阻止事件的默认行为

11.怎么阻止事件冒泡

使用event.stopPropagation()方法可以阻止事件冒泡

12.数组常用的方法(重复)

pop,push,unshift,shift,splice,sort

13.数组去重知道哪些方法(重复)

1.双重for循环
2.indexof判断该数值第一次出现的索引下标是不是和本身的索引下标一样,如果不一样就说明有重复
3.利用filter方法 ,如果数据数值第一次出现的索引下标和自身的索引下标一样则返回到新的数组中
4.声明一个空数组,利用indexOf()如果当前数据数值的索引下标与第一次出现的索引下标一样的话,就给空数组增加

14.字符串操作方法

find,index,count,replace,split

15.怎么判断一个数是不是素数,逻辑怎么写

只能被1和自身整除的数
在这里插入图片描述

16.怎么清除浮动(重复)

clear:both
overflow:hidden

17.div怎么垂直居中(重复)

line-height
flex布局
利用padding

18.怎么画0.5px的线

定义一个div盒子,利用边框线,比如下边框border-bottom:0.5px soild black;

19.说一下盒子模型(重复)

逻辑模型,内边距,外边距,边框,内容区

20.两个异步请求数据操作怎么合并(不会)

21.v-model是谁的语法?

vue

22.query和params的区别

都是用来路由传参的
1.接收参数的方式不同,一个用this.$ route.query.id,一个用this.$ route.params.id
2.query在刷新页面时,参数不会消失,params刷新页面,参数会消失
3.query传来的参数会暴露在地址栏中,类似于get请求,params传递的参数不会暴露在地址栏,类似于post请求

23.vue怎么获取dom?

1.直接给的元素加id,使用document.getElementById(“id”)获取,然后操作 dom 元素(在mouted钩子使用)
2.使用ref,给元素添加ref=“name” ,使用 this.$refs.name 获取到该元素,再对元素进行操作

24.flex布局怎么把元素搞到右上角

25.promise有几种状态,会不会改变

1.什么是promise对象?
Js中进行异步编程的新的解决方案(传统的解决方案——回调函数和事件),用于表示一个异步操作的最终完成 (或失败), 及其结果值.。简单来说,promise对象用来封装一个异步操作并可以获取其结果
2.一共有三种状态:Pending(进行中,初始状态,既不是成功,也不是失败状态。)、Resolved(已完成,又称 Fulfilled)、Rejected(已失败)
3.这三种状态的变化途径只有2种:异步操作从 未完成 pending => 已完成 resolved,异步操作从 未完成 pending => 失败 rejected
4.状态一旦改变,就无法再次改变状态,这也是它名字 promise-承诺 的由来,一个promise对象只能改变一次

26.async和await解决什么问题?

async是ES7中新增内容,对于异步操作的解决方案

27.let和const的区别(重复)

const一般用来定义以后不准备修改的变量,也就是用来定义常量的

28.const定义对象里面的属性值能不能改?

可以

29.常见状态码

常见的Web开发的状态码有以下五种:

  1. 200 OK:请求成功
  2. 404 Not Found:请求的资源不存在
  3. 500 Internal Server Error:服务器内部错误
  4. 401 Unauthorized:未授权,需要用户进行身份验证
  5. 403 Forbidden:拒绝访问,请求被服务器拒绝执行

30.对同步和异步的理解

对于同步请求而言,浏览器在发送一个请求之后,需要等待服务器响应返回,才能够发送下一个请求
与同步请求相对,发送异步请求不需要等待服务器响应,随时可以发送下一次的请求

31.常见的宏任务,微任务?

js把异步任务分为宏任务和微任务(优先执行)
宏任务是由宿主(浏览器,node)发起,例如:script,事件,网络请求,定时器
微任务是由js引擎发起的任务,主要的异步任务就是promise(promise本身同步,then/catch的回调函数是异步的)

32.怎么判断2个数组相等?

js不能直接用= = =或者==判断两个数组是否相等
要判断数组是否相等,可以先转换为字符串tostring,若顺序不同则 先给数组排序 再转字符串 最后在比较

33.es6遍历数组的方法?(重复)

forEach

34.前端怎么给数据加密

base64,md5

35.两个html文件怎么传值?

1.通过window.location.href发送,location.search接收
2.通过window.location.open()发送

36.vue3了解多少?

37.用户输入url会发生什么?(重复)

输入url–>dns地址解析–>根据ip地址找服务器–>tcp三次握手–>返回数据–>将html解析成dom树–>将css解析成css树–>将dom树和css树合起来变成渲染树–>渲染页面–>tcp四次挥手结束

38.flex布局元素怎么放右下角(重复)

39.js的设计模式?

很多,单例模式,策略模式,代理模式,发布订阅模式,组合模式等等

40.遍历数组的方法,哪个可以跳出循环,哪个效率最高

foreach不能跳出循环,for循环性能最好

41.promise捕获错误的方式

rejected和catch捕获错误
reject 是 Promise 的方法,而 catch 是 Promise 实例的方法

42.异步任务有哪些?

1.宏任务:script,事件请求,定时器
2.微任务:promise async/wait

43.组件通信(重复)

44.生命周期父子组件执行顺序

父beforecreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted
当父组件执行完 beforeMount 挂载开始后,会依次执行子组件中的钩子,直到全部子组件mounted挂载到实例上,父组件才会进入mounted钩子

45.过滤器有没有用过?

过滤器filter是数组对象的一个方法,该方法不会改变原数组。

46.点击可以切换高亮的选项卡怎么实现?

47.图标跟随鼠标移动怎么实现?

核心原理:每次鼠标移动,我们都会获得最新的鼠标坐标,把这个x和y坐标作为图片的top和left值就可以移动图片
鼠标宠物跟随–图片跟随鼠标移动

2.蔚来前端面试题

1.flex:1是什么意思?

是flex布局中的一个属性值,flex:1表示元素的宽度或高度会根据父容器的剩余空间自动调整,即占据剩余空间的比例为1。

2.怎么画0.5px的线?(重复)

3.说一下事件循环?

事件循环又叫做消息循环,是浏览器渲染主线程的工作方式。在Chrome的源码中,它开启一个不会结束的for循环,每次循环从消息队列中取出第一个任务执行,而其他线程只需要在合适的时候将任务加入到队列末尾即可

4.cookie,localStorage,sessionStorage的区别(重复)

6.说一下v8的垃圾回收机制

原本的垃圾回收机制在每次回收时都要检查内存中所有的对象,这样的话,一些大、老、存活时间长的对象与新、小、存活时间短的对象检查频率相同,但是前者并不需要频繁进行清理,因此采用分代式垃圾回收机制。
V8中将堆内存分为新生代和老生代两区域,采用不同的垃圾回收策略进行回收。

7.async/await用过吗,讲讲?
Promise和async/await是两种不同的JavaScript异步编程方式。Promise是ES6中新增的一种异步处理方式,它通过then()和catch()方法处理异步操作的成功或失败;而async/await是ES7中新增的异步编程方式,它可以更加直观且简单地处理异步操作。async声明的函数会自动返回一个Promise对象,而await则会阻塞代码的执行,等待Promise的结果返回后再继续执行后续的代码。总的来说,Promise和async/await都是用来解决JavaScript中异步编程的问题的,但在具体的使用场景上可能会有所不同

8.vue3学过吗(重复)

9.vue2双向绑定原理(重复)

10.说一下diff算法

diff算法就是用于比较新旧两个虚拟dom之间差异的一种算法

11.为什么data要写成一个函数

Vue组件中的data必须是一个函数,而不是一个对象,这是因为每个组件都是独立的实例,如果data是一个对象,那么所有的组件实例都会共享这个对象,这样就会导致一个组件的数据变化会影响到其他组件的数据,这是非常危险的。
而如果将data定义为一个函数,那么每个组件实例都会调用这个函数来返回一个新的数据对象,这样就可以保证每个组件实例都有自己独立的数据,互不干扰,也就避免了上述问题。

3.小红书前端实现面试题

1.讲一下vue-router(重复)

2.history模式怎么解决刷新404的问题

根据前端发送的请求以及后端已有的资源路径做判断(正则)匹配,区分哪些是前端路由哪些是后端路由
5.ES6有哪些新特性?(重复)
6.vue中组件通信的方式?(重复)

7.详细讲讲事件总线的用法

三、牛客东拼西凑

1.v-if和v-show的区别,底层是什么原理?

7.vue响应式原理

9.computed会有缓存吗

10.watch和computed的区别,watch的高级用法

12.webpack?介绍一下webpack的常用配置

16.css权值
17.引用数据类型和基本数据类型的区别
18.任务循环机制
19.webpack的配置
20.webpack用过什么lorder,说一下作用
21.vue的响应式系统是怎么实现的
22.有封装过组件吗?怎么封装的?
23.jsonp怎么获取跨域的数据?
24.冯诺依曼体系结构
25.多端适配怎么做?
26.移动端适配怎么做?
27.token相关的路由守卫
28.http的请求方法
29.get和post区别
30.transition有哪些属性
31.webpack怎么用的,从头说一下
32.promise和async,await
33.git命令
34.git分支
35.深拷贝
36.什么是事件冒泡和事件捕获,说说它们的区别
37.js深浅拷贝的理解,具体的实现方法
38.nginx的正向代理和反向代理
39.虚拟dom和diff算法
40.echart了解到什么程度,底层是用canvas和re-render
41.怎么实现一个页面不登录就不能访问?权限问题
42.vue怎么获取dom节点
43.怎么对项目进行打包
44.怎么拦截axios请求
45.axios返回的对象是什么

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值