有意思的面试题汇总

62 阅读2分钟

今天看了下模拟面试的视频,发现有不少东西自己都不太了解,知道答案后想在这里记录下,顺便完善下自己的前端知识。

1. WebSoket检测断联

  1. 监听 onclose 事件

    连接关闭时会触发 onclose 事件,无论正常关闭还是异常断开(如网络中断)都会触发。

  2. 二、心跳机制(Heartbeat)

    WebSocket 没有内置的保活机制,长时间无数据传输可能被服务器或中间代理(如负载均衡)主动断开。通过心跳检测可主动验证连接有效性:

2. qiankun子应用不同的框架如何共享信息

  1. initGlobalState

    主应用通过 initGlobalState 初始化全局状态,并暴露修改方法,随后子应用接收并监听全局状态 ,无论子应用使用什么框架,都能通过 props 获取全局状态和监听方法

  2. 放在页面缓存里,比如我们常见的localStorage/sessionStorage

  3. URL传参,就是我们常见的地址栏传参。

3.监听DOM的变化

这个比较简单,我们可以使用Mutation Observer

4.Vue2为什么数组无法监听

这是因为Vue2中改写(二次封装)了数组的push、pop、shift、unshift方法,其次当时Vue2只考虑了性能,但是数组可以无限长度,去代理太消耗性能了,所以Vue3进行了动态代理。

5.为什么webpack的首屏加载快,但是更新慢,为什么Vite更新快,但是首屏加载慢?

这个原理其实是这样的,webpack是加载完成后再更新页面,这时候压力全在wabpack打包加载的时候了,这时候打开页面就不需要再去加载所需要的逻辑,而Vite是先更新打开了页面,随后在页面里加载逻辑和代码,这时候就会导致首屏加载会显稍慢