当前位置: 首页 > news >正文

前端面试真题集合(一)

一、Vue的响应式原理
Vue的响应式系统通过数据劫持和依赖追踪实现,核心流程如下:

  1. 数据劫持
    • Vue 2.x:使用Object.defineProperty递归遍历数据对象,将属性转换为getter/setter,拦截属性的读取和修改操作。

    • Vue 3.x:改用Proxy代理对象,支持动态属性添加和数组变化监听,性能更优且覆盖场景更广。

  2. 依赖收集与触发
    • 依赖收集(Getter触发):当组件渲染时访问数据属性,触发getter,将当前组件对应的Watcher存入Dep(依赖收集器)。

    • 更新触发(Setter触发):当数据被修改时,触发setterDep通知所有关联的Watcher执行视图更新或副作用函数。

  3. 虚拟DOM与批量更新
    数据变化后生成新的虚拟DOM树,通过Diff算法对比新旧树差异,仅更新必要的真实DOM节点,并通过异步队列(如nextTick)批量处理更新任务,减少重排重绘。


二、gettersetter的触发时机
• Getter触发:

• 当读取响应式数据属性时触发(如模板渲染、计算属性计算、手动读取值)。

• 示例:{{ user.name }}渲染时,会触发user.namegetter

• Setter触发:

• 当修改响应式数据属性时触发(如用户输入、异步请求结果赋值)。

• 示例:this.user.name = 'Alice'会触发setter,通知所有依赖视图更新。


三、refreactive的区别及.value的作用

  1. 设计目的
    ref:用于基本数据类型(如numberstring)和对象引用,通过Object.definePropertyRef对象包裹,确保响应性。

    reactive:专用于对象/数组,基于Proxy实现深层次响应式代理。

  2. .value的必要性
    ref将基本类型包装为{ value: ... }对象,访问时必须通过.value获取内部值,因为基本类型无法直接被Proxy代理。

    reactive直接代理对象,可直接访问属性(如state.count),无需.value

  3. 基本类型与引用类型的核心差异
    • 存储方式:基本类型值存储在栈内存,引用类型值存储在堆内存,变量存储的是引用地址。

    • 可变性:基本类型不可变(如let a=1; a=2是重新赋值),引用类型属性可变(如obj.name='Bob')。


四、Vue的Diff算法

  1. 核心策略
    • 同层比较:仅比较同级节点,避免跨层级对比(复杂度从O(n³)降至O(n))。

    • 双端指针:从新旧子节点的头部和尾部同时向中间遍历,优先处理相同节点。

    • Key优化:通过唯一key标识节点,减少不必要的DOM操作(如列表重排)。

  2. 具体步骤
    • 对比节点类型/标

http://www.xdnf.cn/news/32491.html

相关文章:

  • Python语法系列博客 · 第9期[特殊字符] 函数参数进阶:*args、**kwargs 与参数解包技巧
  • 树莓派5-开发应用笔记
  • Java Web 之 Tomcat 100问
  • git合并分支并推送
  • 为什么浮点数会搞出Infinity和NAN两种类型?浮点数的底层原理?IEEE 754标准揭秘?
  • matlab 环形单层柱状图
  • 解锁异步JavaScript性能:从事件循环(Event Loop)到Promise与Async/Await的最佳实践
  • 电商平台计算订单成交额是不是要去除退款退货的
  • CMFA在自动驾驶中的应用案例
  • 多线程使用——线程安全、线程同步
  • 【Canvas与旗帜】标准英国米字旗
  • 实现批量图片文字识别(python+flask+EasyOCR)
  • 系统架构设计师:计算机组成与体系结构(如CPU、存储系统、I/O系统)案例分析与简答题、详细解析与评分要点
  • 【C++动态规划】2801. 统计范围内的步进数字数目|2367
  • 洛谷P1177【模板】排序:十种排序算法全解(2)
  • Docker安装与介绍(一)
  • 【工具变量】A股上市公司信息披露质量KV指数测算数据集(含do代码 1991-2024年)
  • 青少年编程与数学 02-016 Python数据结构与算法 29课题、自然语言处理算法
  • 黑马Java基础笔记-1
  • 计算机网络——常见的网络攻击手段
  • 面试题之如何设计一个秒杀系统?
  • 编程语言基础 - C++ 面试题
  • jenkins尾随命令
  • word选中所有的表格——宏
  • ETF价格相关性计算算法深度分析
  • Java Stream 复杂场景排序与分组技术解析与示例代码
  • 蓝桥杯 蜗牛 动态规划
  • 遨游科普:防爆平板是指什么?有哪些应用场景?
  • 使用vue2技术写了一个纯前端的静态网站商城-鲜花销售商城
  • javassist