飞书 
一面 1 
- 自我介绍
 - 问你最擅长的技术栈是什么 Vue
 - 根据简历,问你做项目的整个流程
 - 项目中遇到的问题,以及解决方法
 - 网页性能优化
 - 浏览器的循环机制
 - Vue2.0 添加属性的方法,$set,添加后页面会立即更新吗
 - Vue2.0 响应式的原理
 - Vue2.0 和 Vue3.0 的区别
 - 实现 new 方法(手写代码)
 - 实现深拷贝(手写代码)
 - 给定两个版本号,比较大小(手写代码) 
- v1=2.0 v2=1.0 输出 1
 - v1=2.0 v2=1.0.1 输出 1
 - v1=2.0 v2=3.0 输出-1
 - v1=2.001.1 v2=2.01.1 输出 0
 - v1=2.0 v2=2.0 输出 0
 - v1=2.0 v2=2.0.0 输出 0
 
 
js
function compareVersion(v1, v2) {
  // 分割版本号字符串为数组
  let arr1 = v1.split(".");
  let arr2 = v2.split(".");
  // 获取最长长度,用于循环比较
  let maxLength = Math.max(arr1.length, arr2.length);
  for (let i = 0; i < maxLength; i++) {
    // 将当前段转换为整数进行比较
    let num1 = parseInt(arr1[i] || "0", 10);
    let num2 = parseInt(arr2[i] || "0", 10);
    // 如果num1大于num2,则返回1
    if (num1 > num2) {
      return 1;
    }
    // 如果num1小于num2,则返回-1
    else if (num1 < num2) {
      return -1;
    }
  }
  // 所有段都相等时,返回0表示两者相等
  return 0;
}一面 2 
- var、let、const 的区别;
 - 谈谈 promise?异步编程;为什么要异步或是要 promise?
 - 谈到 axios 时,问了下 axios 怎么实现的,与 ajax 及 fetch 的区别?
 - 给一段代码输出返回值?settimeout\promise\ascny 相关;
 - tcp 四次握手?
 - css 动画旋转相关问题?
 - 写个点赞延时执行的函数,给定参数延迟时间及 callback?
 
一面 3 
- 讲一讲微前端有哪些实现策略
 - 讲一讲你之前的项目采取了哪些安全策略? 讲一讲 XSS 攻击和 CSRF 攻击
 - 实现三栏布局, 用 float + BFC 和 flex 两种方式
 - 实现单行文本在父元素中不换行, 溢出部分变成省略号形式
 - 防抖, 节流的定义及二者区别, 手写防抖的实现
 - 讲一讲浏览器缓存机制, 涉及到哪些 http 报文字段?
 - 讲一讲 js 事件循环机制, 列举宏任务, 微任务有哪些?看代码说结果
 - 算法: 给定一个字符串, 里面只有 a, b, c 三种字符, 要求从头遍历到尾, 去掉所有的 b, 和所有的 ac
 
js
function removeChars(str) {
  let result = "";
  for (let i = 0; i < str.length; i++) {
    if (
      str[i] !== "b" &&
      !(str[i] === "a" && i + 1 < str.length && str[i + 1] === "c")
    ) {
      result += str[i];
    } else if (str[i] === "a" && i + 1 < str.length && str[i + 1] === "c") {
      i++; // 跳过下一个字符,因为它是和当前'a'组成'ac'
    }
  }
  return result;
}一面 4 
- 项目难点【描述】
 - 如何设计权限系统,如何维护和定义、表的数据结构是怎样的【举例】【描述】
 - 中间人劫持,怎么防止。x-frame-option? 白屏怎么办?也不一定嵌入 iframe 啊,可以嵌入脚本、图片,怎么阻止
 - class 组件和 function 组件对比。写过安卓吗,那对 class 组件有什么看法【描述】
 - hook 缺点,hook 代码难维护怎么解决【描述】
 - redux 为什么每次 reducer 要返回一个新对象,面对大量节点如何优化【
 - immuatable 和 shouldupdate 配合、immuatable 数据一些对比问题【描述】
 - http 缓存、离线包原理、移动端首屏幕加载速度优化、webview 冷启动、预热【描述】
 - 一个很牛逼很多功能的 class 组件,里面有业务生命周期(获取数据前后、弹出窗口前后...),怎么在函数组件里面直接复用它【举例】
 - 给定一个整数数组 a,其中 1 ≤ a[i] ≤ n (n 为数组长度), 其中有些元素出现两次而其他元素出现一次。【编程】
 - 找到所有出现两次的元素。你可以不用到任何额外空间并在 O(n)时间复杂度内解决这个问题吗?
 
一面 5 
字节校招 
- 自我介绍
 - 前端学习路线
 - 项目中遇到的难点
 - token 登录怎么实现的
 - 我想关闭浏览器后还能保持登录状态怎么实现
 - 还有其它的登录方法吗
 - Vue 路由中我想用前进和后退怎么实现
 - 项目用的什么类型路由模式
 - hash 模式怎么实现前进和后退
 - Vue 为什么要有虚拟 DOM?好处和工作流程?
 - 如果我计算属性有三个值计算了三次,那页面渲染了几次?
 - 那如果我又加了一个异步数据呢?
 - Vue 从 DOM 树建立完成到页面上呈现做了哪些工作?
 - Vue 的渲染机制能详细说一下吗? 
- 都说标签里面要加 key,你知道为什么吗?
 - 那 for 和 if 里面加 key 效果一样吗?
 
 - 说一下闭包。
 - 闭包用在什么场景
 - 重排和重绘的概念,如何可以减少?
 - http2.0 相比 http1.0 多了哪些特性?
 - 为什么可以多路复用?队头阻塞了解吗?
 - http1.0 是怎么做的?
 - 浏览器为什么只能建立 6 个连接?
 - 那为什么 XXX(一个不知道的概念)允许让浏览器可以建立多个连接,不是不好吗?
 - 浏览器的渲染线程是怎么工作的?
 - 浏览器渲染线程和 js 线程冲突吗?是一起同时工作的?
 - 一个浏览器只能有一个进程吗?
 - 有没有遇到过看项目文档不懂的时候,怎么解决的?
 - 代码题:写输出结果。
 - 代码题:异步实现加法
 
二面 1 
- cdn 原理【描述】
 - 为什么多域名部署【描述】
 - 单元测试、e2e 测试【描述】
 - event loop【描述】
 - 项目介绍一下【描述】
 - 客户端 mock 怎么支持【描述】【举例】
 - 怎么 mock 真数据,我需要真的 id 怎么办,除了写死【描述】
 - 什么情况用 ts、什么时候不用【描述】
 - 组件、库一定要,不重要的业务代码、节奏快的业务代码不用
 - 单元测试和 ts 结合【描述】【举例】
 - 全球远程调度机器实现自动化测试【描述】
 - cjs 实现 esm【伪代码】
 
三面 1 
- 你之前的部门用的微前端什么方案
 - 讲讲 js 原型链, 手写用 Object.create()实现继承的代码
 - Webpack 打包原理; 你都知道哪些 plugin, 讲讲常见的 plugin 的功能和原理;
 - 问了一堆 babel 的配置,完全听不懂...
 - 除了 Webpack 你还接触过哪些前端打包工具? 讲讲 Webpack, rollup, vite 三者的区别
 - 你们的项目是怎么解决样式隔离问题的? CSS Module 还是 CSS in JS 你说你之前的项目用的 CSS Module, 那它有哪些缺点? 你使用:global(), 在微前端中如何做到样式隔离?
 - 每个微前端子工程加一个 babel-plugin-react-css-modules, 打包时给该子工程内所有 class 名前面加上该子工程标识
 - 你使用 :global() 去定义 antd 底层 class,如果 antd 版本更新, 底层 class 名变了,你怎么办?除了手动修改代码好像是没办法
 - 讲讲 mobx 原理, 用的什么设计模式
 - 讲讲 vuex 和 mobx 区别? 讲讲单例模式, 观察者模式和发布-订阅模式 de
 - 自己动手实现一个 js 单例模式
 - 闭包 + 立即执行函数, 或者将变量绑定在全局作用域
 - 讲讲什么是闭包
 - ts 里 type 和 interface 的区别以及使用场景
 - ts 的泛型接触过吗? 泛型主要为了解决什么问题
 - Node.js 相对于原生 js 有哪些区别?
 - 列举你知道的前端优化方案, 讲讲 React 的异步加载和懒引入原理
 - 你刚才说到避免浏览器重排 如何获取某个 DOM 节点的位置? 用 clientTop 和 clinetLeft 为什么会导致浏览器重排?
 - 你刚才说优化方案里讲到避免内存泄露, 说说如何排查内存泄漏? 火焰图接触过吗
 - 讲讲前端工程化主要涉及哪些内容
 - 你刚才提到规范化 那你讲讲你们项目的 git 提交规范吧
 
三面 2 
- 项目介绍。权限系统业界内怎么设计,常见的几种【描述】
 - 工作量体现到什么地方,现在工作量大吗【描述】
 - 最困难的环节【举例】
 - 优点缺点、未来规划
 - 怕被人挑战吗,怎么应对