跳到主要内容

xiyin

  1. 浏览器输入一个url 到呈现页面经历了什么

  2. useHooks 用过哪些?useEffect 生命周期。

  3. 函数和 class 区别

  4. useCallback 和 useMemo

  5. 用useCallback 和 useMemo 一定能做到优化渲染吗

  6. useLayout 和 useLayoutEffect useLayoutEffect 是微任务,在渲染前执行,所以操作dom的程序写在useLayoutEffect不会导致闪烁。但服务端渲染时不会执行。 useLayout是宏任务。

  7. 0.1 + 0.2 的精度问题,写一个函数规避

浮点数精度误差 = 0.30000000...001


function preciseAdd(a, b) {
const factor = Math.pow(10, Math.max(decimalPlaces(a), decimalPlaces(b)));
return (Math.round(a *factor) + Math.round(b* factor)) / factor;
}

// 帮助函数:计算一个数的小数位数
function decimalPlaces(num) {
const numStr = num.toString();
if (numStr.includes('.')) {
return numStr.split['.'](1).length;
}
return 0;
}

console.log(preciseAdd(0.1, 0.2)); // 输出 0.3
console.log(preciseAdd(0.123, 0.4567)); // 输出 0.5797
console.log(preciseAdd(1.000001, 2.00002)); // 输出 3.000021
  1. 谈一谈 js 的作用域

  2. 做过哪些性能优化

  3. 前端性能标准

TODO: Mozilla Developer Network (MDN)

  • MDN Web Docs 提供了关于首屏渲染时间(FCP)和首次交互延迟(TTI)等优化的建议,目标是用户在 1 秒内看到首屏内容,并在 5 秒内能完全交互。
    • 主要标准来源:
      • FCP:1 秒以内为较佳。
      • TTI:5 秒以内是较佳目标。