# 字节跳动(互娱)

# 一面

  • 自我介绍

  • 介绍做过的组件库的内容

  • 大数据量的同时渲染是如何实现的

  • 介绍一下迁移 ts 项目的背景以及负责的内容

  • 为什么会在服务端渲染的项目中使用 graphql,使用的目的是什么

  • 介绍一下浏览器的缓存

  • 前端安全讲一下

  • 小程序逻辑层和渲染层之间如何通信

  • 算法

    • console.log('开始');
      
      setTimeout(() => {
      	console.log('输出一个信息');
      }, 0);
      
      console.log('执行');
      
      new Promise(resolve => {
      	console.log('马上执行for循环啦');
        for(var i = 0; i < 100; i++){
        	i == 99 && resolve();
        }
      }).then(() => {
        console.log('执行then函数啦')
      });
      
      console.log('结束');
      
    • // 数字格式化问题:1234567089 --> 1,234,567,089
      
    • /*
      求二叉树所有根到叶子路径组成的数字之和
      二叉树每个节点的value范围是1-9
      例如:
                         1
               2                    3 
       4          5
      从根到叶子共3条:1->2->4, 1->2->5, 1->3
      构成的数字为124,125,13,求和124 + 125 + 13 = 262即为所求
      let root = {
          val: 1,
          left: {
              val: 2,
              left: {
                  val: 4,
                  left: null,
                  right: null,
              },
              right: {
                  val: 5,
                  left: null,
                  right: null,
              },
          },
          right: {
              val: 3,
              left: null,
              right: null,
          }
      }
      */
      

# 二面

  • 自我介绍
  • 日常中有用过哪些 es next 的新特性
  • 实现一个 Promise.all
  • 介绍一下你用过哪些 TS 的特性
  • 实现一个 React.Component 的类型声明
  • 迁移 ts 的目的,以及迁移完成之后是否达到愿景
  • 介绍一下你在用 webpack 的时候用过 webpack 里面的哪些东西
  • WebpackDevServer 的工作原理是什么
    • 服务端是如何知道文件发生了修改
    • 服务端对文件是有优化的,知道优化的原理吗
    • 客户端如何进行增量更新
  • 有没有写过 loader
  • loader、plugin 原理
  • 设计一个组件的时候你会有哪些考虑
  • 在开发组件的过程中有用到过哪些设计模式
  • redux 迁移 mobx 的原因