KamYee

前端面试点记录

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 方法。

13、在浏览器地址栏键入URL,按下回车之后会经历以下流程:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  5. 释放 TCP连接;
  6. 浏览器将该 html 文本并显示内容; 
posted @ 2020-02-28 15:18  KamYee  阅读(166)  评论(0编辑  收藏  举报