# [高德一面] 一个 tcp 连接能发几个 http 请求

如果是 HTTP 1.0,默认不支持长连接,所以 一个 TCP 发送 一个 HTTP 请求;

如果是 HTTP 1.1,支持了长连接,只要 TCP 连接不断开,便可以一直发送 HTTP 请求,HTTP 2.0 同理

# [腾讯一面] V-DOM 的优势

DOM 引擎 、JS 引擎相互独立,又工作在同一线程。JS 代码调用 DOM API 必须挂起 JS 引擎、转换传入参数数据、激活 DOM 引擎,DOM 重绘后再转换可能有的返回值,最后激活 JS 引擎并继续执行。若频繁的 DOM API 调用,重新计算布局、重新绘制图像会引起更大的性能消耗。

优势:

  1. V-DOM 不会立马进行重排和重绘
  2. V-DOM 进行频繁修改,然后一次性比较并修改真实 DOM 中需要改的部分,最后在真实 DOM 中进行排版重绘,减少过多的 DOM 节点排版与重绘损耗
  3. V-DOM 有效降低大面积真实 DOM 的重绘与排版,因为最终与真实 DOM 比较差异,可以只渲染局部

# [字节跳动] CommonJS 和 es6 模块引用的区别

目前浏览器端虽写法是以 esm 为主,但是各种前端工具转换为 cjs,差别:

  1. cjs 模块输出的是一个值的拷贝,esm 模块输出的是值的引用
  2. cjs 模块是运行时加载,esm 模块是编译时输出接口
  3. cjs 是单个值导出,esm 允许导出多个
  4. cjs 是动态语法,可以写在判断内,esm 是静态语法,只能写在顶层
  5. cjs 的 this 是当前模块,esm 的 this 是 undefined

# cookie token 和 session 的区别

浏览器系列之 cookie 和 samesite 属性 (opens new window)

# [头条] 如何选择图片格式

图片格式 压缩方式 透明度 动画 浏览器兼容 适应场景
JPEG 有损压缩 不支持 不支持 所有 复杂颜色及形状、尤其是照片
GIF 无损压缩 支持 支持 所有 简单颜色、动画
PNG 无损压缩 支持 不支持 所有 需要透明度时
APNG 无损压缩 支持 支持 Firefox、Safari、IOS Safari 需要半透明效果的动画
WebP 有损压缩 支持 支持 Chrome、Opera、Android、Chrome Android、Browser 复杂颜色以及形状,浏览器平台可预知
SVG 无损压缩 支持 支持 所有(IE8以上) 简单图形,需要良好的缩放体验,需要动态控制图片特效

# 首屏和白屏时间如何计算

首屏时间计算,可以由 Native WebView 提供类似 onload 的方法实现,在 ios 下对应的是 webViewDidFinishLoad,在 android 下对应的是 onPageFinished 事件。

白屏的定义有很多种,场景不同,时间计算方式不同。

# 小程序 和 H5 的区别

  1. 渲染方式不同,小程序时 native 渲染,同时也支持 web 渲染
  2. 小程序特有的双线程设计

# 如何判断 0.1 + 0.2 与 0.3 相等?

  1. 非 ES 独有
  2. IEEE754 标准中 64 位的存储格式,比如 11 位存偏移值
  3. 其中涉及的三次精度丢失

JavaScript 深入之浮点数精度 (opens new window)

参考 math.js big.js

# [腾讯二面] v8 引擎执行一段 js 代码

在执行一段代码时,JS 引擎首先会创建一个执行栈

然后 JS 引擎会创建一个全局执行上下文,并 push 到执行栈中,这个过程 JS 引擎会为这段代码中所有的变量分配内存并赋一个初始值(undefined),在创建完成之后,JS 引擎会进入执行阶段,这个过程 JS 引擎会逐行执行代码,并为之前分配好内存的变量逐个赋真实值。

如果这段代码中存在 function的声明和调用,那么 JS 引擎会创建一个函数执行上下文,并 push 到执行栈中,其创建过程与全局执行上下文一样。但有特殊情况,即当函数中存在对其他函数的调用时,JS 引擎会在父函数执行的过程中,将子函数的全局执行上下文 push 到执行栈,这也是为什么子函数能够访问到父函数内所声明的变量。

还有一种特殊情况是,在子函数执行的过程中,父函数已经 return 了,这种情况下,JS 引擎会讲父函数的上下文从执行栈中移除,与此同时,JS 引擎会为还在执行的子函数上下文创建一个闭包,这个闭包里保存了父函数内生命的变量以及其赋值,子函数仍然能够在其上下文中访问并使用这些变量/常量。当子函数执行完毕,JS 引擎才会将子函数的上下文以及闭包一并从执行栈中移除。