自我介绍
https
http3,http2,http1
echarts原理
项目结束之后,主动聊项目的复盘、优化点
- 懒加载和虚拟滚动的实现
- 项目中响应式的实现
- react、vue的差别
- 单向数据流
- v-model原理
- url到渲染的流程
- webpack的构建流程
- ts枚举的正向映射和反向映射
- 最长不重复子字符串
- 性能优化是否量化过、如何测试?lighthouse,FCP指标优化经验、非首屏懒加载
- vue2/vue3,Proxy、defineProperty
- 从哪些维度思考导入第三方包
- 手撕柯理化,4参数的函数
- leetcode4,两个有序数组,找出其中位数,O(log(m+n))
- 如何使用ai的
- 设计模式
- useLayoutEffect,在浏览器绘制之前同步触发,会阻塞组件的渲染过程
虚拟滚动的实现
通过按需渲染技术,仅渲染可视区域的列表项,提高长列表的渲染性能。
具体实现思路:
- 可视区域计算:根据滚动容器的高度clientHeight和滚动位置scrollTop,结合列表项的高度(固定或动态高度),动态计算当前应该渲染的起止索引。
- 占位元素:设置总高度,模拟完整列表的滚动条。
- 动态更新:监听滚动事件,更新渲染范围。
v-model原理
通过数据劫持结合发布-订阅模式实现双向绑定。具体的:
- 数据监听,使用defineProperty或Proxy劫持数据对象的读写操作
- 依赖收集,在getter中通过Dep类收集Watcher实例,建立数据和视图的映射关系
- 派发更新,setter中触发Dep的notify方法,通知所有Watcher执行update更新视图
v-model本质是语法糖,监听表单元素的input事件,将事件对象的值赋值给数据属性。
阅读过哪些源码
- zustand
导入第三方包需要考虑什么
- 包体积
- 维护状态
- ts类型支持
- 兼容性,caniuse
- 替代方案/成本
react 18
- 并发渲染,如何开启(使用startTransition、useTransition)
- 全自动批处理,参考
- Transitions API,允许开发者标记某些更新为”过渡”状态,这些更新可以被React推迟处理,从而优先处理更重要的用户交互。
- Suspense的改进,不仅限于数据加载,还可以用于代码分割、懒加载等场景。
- 新的客户端和服务器端渲染API,createRoot,用于替代旧的ReactDOM.render
- 新的Hooks,如useId、useTransition、useDeferredValue
native 0.71