前端面试点记录
Posted -kam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试点记录相关的知识,希望对你有一定的参考价值。
1、防抖节流
触发高频事件后n秒内函数只会执行一次
2、数据集合
Set > 不允许重复,只有健值没有健名和数组类似,可以遍历循环有add, delete,has 方法
Map > 字典 键值对的集合,类似集合
4、将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
Array.from(arr.flat(Infinity)).sort((a,b)=>{return b-a})
5、Promise
Promise函数内是同步,then是异步,then是微任务
6、HTTP差异
HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效。
多路复用代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过同一个TCP连接并发完成。
在HTTP1.x中,并发多个请求需要多个TCP连接,浏览器为了控制资源会有6-8个TCP连接都限制。
HTTP2中同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。
单个连接上可以并行交错的请求和响应,之间互不干扰
7、回流必定会发生重绘,重绘不一定会引发回流
重绘
由于节点的几何属性发生改变或者由于样式发生改变而不会影响布局的,称为重绘,例如outline, visibility, color、background-color等,
重绘的代价是高昂的,因为浏览器必须验证DOM树上其他节点元素的可见性。
回流
回流是布局或者几何属性需要改变就称为回流。回流是影响浏览器性能的关键因素,因为其变化涉及到部分页面(或是整个页面)的布局更新。
一个元素的回流可能会导致了其所有子元素以及DOM中紧随其后的节点、祖先节点元素的随后的回流。
8、宏任务与微任务执行顺序
node11以下版本(先执行所有的宏任务,再执行微任务) ; node11及浏览器(顺序执行宏任务和微任务)
9、Vue3.0 为什么弃用Object.defineProperty,采用Proxy 传送门
Object.defineProperty 不能监听数组的变化、只能劫持对象属性、必须深层遍历嵌套的对象
Proxy 可以监听数组变化、代理整个对象而不是对象属性,返回的是一个新的对象、性能更好
10、箭头函数没有自己的this,无法调用call与apply, 因为没有prototype属性,而new执行时需要将构造函数的prototype赋值给新对象的_proto_
11、BFC(Block formatting contexts):块级格式上下文、IFC(Inline formatting contexts):内联格式上下文、GFC(GrideLayout formatting contexts):网格布局格式化上下文、FFC(Flex formatting contexts):自适应格式上下文
12、对象的键名只能是字符串和 Symbol 类型。其他类型的键名会被转换成字符串类型。对象转字符串默认会调用 toString 方法。
以上是关于前端面试点记录的主要内容,如果未能解决你的问题,请参考以下文章
2021阿里淘系前端面试5面+HR面,仿佛听到说别爱我没结果
2021阿里淘系前端面试5面+HR面,仿佛听到说别爱我没结果