八股文随笔3

1.http2多路复用

自述:
http1版本使用的是单链路,每一个请求都会进行一次TCP链接,当同一域名下进行多次请求时,会同时创建多个链接,浏览器最多处理的并发链路是6-8个。
http2解决了这个问题,当同一域名下进行频繁多次请求时,只需进行一条TCP链接,这个链路可支持多请求往返
官方:
HTTP2 采用二进制格式传输,取代了 HTTP1.x 的文本格式,二进制格式解析更 高效。 多路复用代替了 HTTP1.x 的序列和阻塞机制,所有的相同域名请求都通过同一 个 TCP 连接并发完成。 在 HTTP1.x 中,并发多个请求需要多个 TCP 连接,浏览器为了控制资源会有 6-8 个 TCP 连接都限制。
HTTP2 中 同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延 时和内存消耗。 单个连接上可以并行交错的请求和响应,之间互不干扰

2.slice() 深拷贝数组

slice和concat都能实现深拷贝,但是两个方法都有一个相同的缺陷,就是slice和concat这两个方法,仅适用于对不包含引用对象的一维数组的深拷贝,如果是二维数组,还浅拷贝。
八股文随笔3_第1张图片

3.变量提升和函数提升,优先级

变量提升:变量声明会提升,赋值不会提升。
函数提升:优先级高于变量提升,且不会被同名变量声明覆盖,但是会被变量赋值后覆盖。而且存在同名函数与同名变量时,优先执行函数。

4.preload和prefetch是有什么区别?

preload是预加载当前页面的代码,prefetch是加载将来应用到的代码。
preload:是link中rel的值,在浏览器渲染机制之前执行的,不会影响页面的onLoad事件。as参数表示资源类型。可以支持跨域加载,对于preload加载的js资源,会预加载相应的脚本代码,待到需要时自行调用。
prefetch:是一种利用浏览器的空闲时间加载页面将来可能用到的资源的一种机制;通常可以用于加载非首页的其他页面所需要的资源,以便加快后续页面的首屏速度;
chrome有四种缓存方法:http cache、memory cache、Service Worker cache和Push cache。当preload/prefetch进行预加载完成时,缓存的文件可以存在http cache中,无论文件是否可以缓存。如果文件是可以缓存的,则存在http cache中等待被使用,若不可缓存,则在被使用前会被保存在memory cache中。

5.说说为什么vue和react组件里只能有一个div?

当你写两个div的时候,会提示报错:根模版只允许有一个div,
template具有
隐藏性:该标签不会显示在页面的任何地方,即便里面有多少内容,它永远都是隐藏的状态;
任意性:该标签可以写在页面的任何地方,甚至是head、body、sciprt标签内;
无效性:该标签里的任何HTML内容都是无效的,不会起任何作用;
一个vue组件被vue-loader打包后,会生成vue的实例,通过template的任意性可以知道,template包裹的html可以放在任意的地方,.vue会被vue编译成虚拟dom,用到相应地方,所以只会有一个根结点

你可能感兴趣的:(IT技术,面试,网络)