# 一面
# 自我介绍
# 介绍一下你们组件库
# 介绍一下redux迁移到mobx的目的
# 官网重构中使用了graphql,这是怎么回事?
# hashMap 和 Object 的区别
# 解释一下 React 中元素和组件的区别
# 在 React 中如何销毁页面里面的定时器
# 介绍一下 React 中的 Fiber 架构
# React 如何知道下一次执行该从哪个节点开始重新执行
# 它使用了那种遍历方式遍历树
# 介绍一下 webpack4 中的 tree-shaking
# 介绍一下它的工作流程
# CSS 可以做摇树吗
# 实践题
一个信息流的网站,网站中有很多图片,如果加载图片的时候,用户在进入一些网络状态比较差的情况下,如何用一张默认图片进行替换。
# 后续发现是 CDN 有问题,图片根本加载不出来,有没有其他办法绘制一个图形替换
# 实践题
脚手架中希望有一个功能,能够捕捉到整个项目中的异常(代码异常、资源异常)而不需要业务写 try catch,如何实现?
异步代码该如何进行捕获?
# 实践题
如果在进入页面的时候需要一次渲染10万条数据,有什么首屏优化的方案?
# 如果需求的场景不符合每一条数据固定高度?
# 算法
# 二叉树有哪种遍历方式
# 跳跃游戏(贪心算法)
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够达到最后一个位置。
# 思路
- 使用一个变量保存当前可到达的最大位置
- 时刻更新最大位置
- 可达位置小于数组长度返回 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
}