【2022前端面试题】这几天准备面试,记录了一些可能遇到的面试题和已经遇到的面试题,持续更新

JS基础

javascript内置类型都有哪些?

值类型:string,number,boolean,null,undefind
引用类型:object(function,array......)

javascript中“==”和“===”的区别?

==在比较之前如果两边的值类型不同会进行类型转换之后在进行比较
===比较严格 当类型不相等的时候直接返回false

vue响应式原理?

​ vue会把data里面的所有属性遍历一遍,并通过Object.defineProperty把这些属性转换为setter个getter,在数据进行改变的时候就会触发setter来通知数据变更,然后每个组件都会有一个wacther实例,他会在组件进行渲染的时候把所有接触过的属性记录为依赖,当这些依赖项的setter被触发的时候就会通知wacther,从而使他对应的组件重新渲染

说一下vue单向数据流是什么?

​ 单向数据流指的是数据只能从父组件向子组件进行传递,子组件不能直接改变props,如果想改变只能通过事件触发的方式在父组件中进行修改

promise的出现是为了什么?

​ promise的出现是为了解决回调地狱,传统的ajax请求通过callback的形式返回数据,当请求有多个的时候就会一层嵌套一层的进行请求的调用,而promise的出现可以使你的请求变得更优雅:’)

promise的状态有几种?分别是什么?

​ 一共有三种状态,等待态,成功态,失败态

promise的api都什么?

​ all,race,then,catch,finally

promise.all的实现原理是什么?

​ 首先接收一个promise数组为参数,通过for循环发送请求这些请求,在每一个请求返回数据的时候记录一下返回数据的接口的数量,当这个数量等于接收到参数的数组的数量的时候,在返回所有数据

请写出以下代码运行结果

var a={n:1}
var b=a
a.x=a={n:2}
console.log(a.x) //undefined
console.log(b.x) //{n:2}

考点:连续赋值的运行顺序
题解:

//代码会这样执行
var a={n:1}
var b=a		//a和b指向同一个内存地址,所以在a的属性改变时b的属性也会改变
//*连续赋值会从左往右开始赋值
a.x={n:2}	//这时b的x也会跟着改变
a={n:2}		//a被重新指向到了{n:2}
//所以这是a={n:2},b={n:1,x:{n:2}}
console.log(a.x) //undefined
console.log(b.x) //{n:2}

请把两个数组[‘A1’,‘A2’,‘B1’,‘B2’,‘C1’,‘C2’]和[‘a’,‘b’,‘c’]合并成[‘A1’,‘A2’,‘A’,‘B1’,‘B2’,‘B’,‘C1’,‘C1’,‘C’]

let a=['A1','A2','B1','B2','C1','C2']
let b=['A','B','C']
//首先合并数组,然后进行排序
let x=[...a,...b].sort((c,p)=>{
    return c.charCodeAt(0)-p.charCodeAt(0)//先按第一个字母排序
    ||p.length-	c.length//再按字符串的长度排序
    ||c.charCodeAt(0)-p.charCodeAt(0)//再按每个字符串第二个字符排序
})

说一下vue封装组件的思想

高内聚

  1. props
  2. events
  3. slots
  4. methods

低耦合

​ 尽量让组件的颗粒度小,最大限度的让组件复用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值