React 相关面试选题

// 笔试应该给电脑,题目放在如 google doc,方便共享和回看

// 应该测试过时技术,和未来技术,以查看经验和兴趣

React 主要的特点(包括优点和缺点)有哪些?
  • 使用 JSX
  • 可复用组件
  • 虚拟DOM(为什么要使用 vDOM,它是干什么的)
  • 跨浏览器兼容
  • 单向数据流
  • 首屏渲染性能
  • 使用服务端渲染(解决SEO和首屏渲染慢的问题)
  • 不是一套完整的框架,还需要学习 router,数据管理的库
  • 写高性能应用

React 组件的生命周期有哪些?
  • WillMount
  • DidMount
  • WillReceiveProps
  • shouldComponentUpdate
  • WillUpdate
  • DidUpdate
  • WillUnMount
  • DidCatch(v16)
// 红色为组件更新的流程

如何写一个高性能的 React 组件?
  • 拆分组件,高阶组件(HOCs, 减少不需要更新的部分无效计算,高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件)
  • 使用纯组件
  • 使用 shouldComponentUpdate
  • 使用组件缓存(?)

什么是函数式组件?
  • 是一个函数
  • 写法简单
  • 可以写成纯函数(无状态,无副作用)
  • 没有 this,不能直接访问 real DOM



hooks mounted 和 生命周期 mounted 的区别:commit 后异步/layout 阶段后同步

diff 预设
  • 层级不会变
  • tag 类型不会变
  • key 不变

setState 同/异步
  • 传统模式,context
  • 并发模式

三个阶段:
  • schedule 小顶堆 fiber 树,调度程序为帧预留 5ms
  • reconcile render 生成新 fiber 树
  • commit 修改 DOM