# 一面

# 自我介绍

# 介绍一下你们组件库

# 介绍一下redux迁移到mobx的目的

# 官网重构中使用了graphql,这是怎么回事?

# hashMap 和 Object 的区别

# 解释一下 React 中元素和组件的区别

# 在 React 中如何销毁页面里面的定时器

# 介绍一下 React 中的 Fiber 架构

# React 如何知道下一次执行该从哪个节点开始重新执行

# 它使用了那种遍历方式遍历树

# 介绍一下 webpack4 中的 tree-shaking

# 介绍一下它的工作流程

# CSS 可以做摇树吗

# 实践题

一个信息流的网站,网站中有很多图片,如果加载图片的时候,用户在进入一些网络状态比较差的情况下,如何用一张默认图片进行替换。

# 后续发现是 CDN 有问题,图片根本加载不出来,有没有其他办法绘制一个图形替换

# 实践题

脚手架中希望有一个功能,能够捕捉到整个项目中的异常(代码异常、资源异常)而不需要业务写 try catch,如何实现?

异步代码该如何进行捕获?

# 实践题

如果在进入页面的时候需要一次渲染10万条数据,有什么首屏优化的方案?

# 如果需求的场景不符合每一条数据固定高度?

# 算法

# 二叉树有哪种遍历方式

# 跳跃游戏(贪心算法)

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够达到最后一个位置。

# 思路

  1. 使用一个变量保存当前可到达的最大位置
  2. 时刻更新最大位置
  3. 可达位置小于数组长度返回 false,否则可以到达

# 答案

function canJump(nums: number[]): boolean {
  let k = 0
  for(let i = 0; i < nums.length; i++) {
    if(i > k) return false
    k = Math.max(k, nums[i] + i)
  }
  return true
}