字节-生活服务 一面面经
- 前10分钟拷打实习,问了实习做过的印象最深的事情(答: 迁移项目从webpack到vite, 使得热重载和冷启动有明显的速度提升)
- esm和commonjs的区别
- 拷打30分钟的react源码(可能不止下面这些, 问的有点多记不全了)
- react setState hook调用之后 内部的一个运作过程(答: 先在fiber上添加update, 打上Tag, 加入任务队列, 等待scheduler调度, commitRoot以及commitRoot是如何处理useLayoutEffect和useEffect)
- react什么时候会中断更新(答:根据一帧渲染剩余时间和任务的优先级来判断)
- scheduler的实现细节(答:messageChannel通信模拟requestIdlecallback Api)
- react更新优先级(答: Transition,Normal, High等优先级)
- react是如何做渲染的中断和恢复的(答: 在一个高优先级任务进来时候会被处理到taskQueue的顶部优先调用, 低优先级任务会通过performConcurrent.bind 返回一个新的函数加入在taskQueue里面)
- https如何做的(答: 常规八股的回答)
- 追问:客户端是如何验证证书的有效性(答: 通过本地存储的证书进行认证的,具体验证过程我不会所以直接跳过了)
- 手撕
- 提供一个ping函数(返回promise)然后实现一个函数calc。 计算ping的耗时(打印出来)。每5秒计算一次,不能用setInterval。要求返回abort函数用于终止。
- 在react中实现第一题的功能,并提供一个hook来调用(返回[start, time, abort])(start:开始计时, time:每次ping的耗时,每次ping完都要更新time, abort:停止计时)