自我介绍

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

hybrid

小程序