面试总结。

一、回流(重排)与重绘(Repaint)

优化回答

  1. 概念区分

    • 回流(Reflow/Relayout):当元素的几何属性(如宽高、位置、隐藏 / 显示)发生改变时,浏览器需重新计算元素的布局及相互位置关系,触发整个页面或部分区域的重新排版
      • 影响范围:可能波及父子元素甚至整个文档流,性能消耗较高
    • 重绘(Repaint):当元素的视觉属性(如颜色、背景、阴影)改变但不影响布局时,浏览器仅重新绘制该元素,无需重新计算布局
      • 影响范围:仅针对当前元素,性能消耗较低
  2. 触发场景

    • 回流:width/heightpadding/margindisplay: noneoffsetTop/offsetLeft等属性修改,或添加 / 删除 DOM 节点。
    • 重绘:colorbackgroundbox-shadow等样式修改。
  3. 性能优化

    • 批量修改样式:使用class批量应用样式,避免逐行修改属性。
    • 使用文档碎片(Document Fragment):批量操作 DOM 时先存入碎片,减少回流次数。
    • 脱离文档流:对复杂动画元素使用position: fixed/absolutewill-change: transform,使其独立于其他元素。

二、Vue 与 React 的核心区别

原回答问题:未提及状态管理、生态差异等核心点
优化回答

从以下维度对比,结合项目实践:

  1. 模板与渲染

    • Vue:基于模板语法(HTML 标签 + 指令,如v-if/v-for),编译后生成虚拟 DOM。
    • React:使用JSX(JavaScript 内嵌 HTML),更灵活,可直接在模板中编写逻辑。
  2. 状态管理

    • Vue:内置响应式系统(通过Object.defineProperty劫持数据变化),组件状态自动更新。
    • React:需手动通过setStateuseState触发更新,状态不可直接修改,需通过回调或函数式更新确保一致性。
  3. 组件机制

    • Vue:组件数据通过props单向传递,$emit实现自定义事件,支持 ** 插槽(Slot)** 和双向绑定(v-model)。
    • React:组件数据通过props单向传递,事件采用合成事件(Synthetic Events),状态提升(Lifting State Up)或 Hook(如useContext)实现跨组件通信。
  4. 生态与工具链

    • Vue:生态轻量,官方提供vue-routervuex,适合快速开发中小型项目。
    • React:生态庞大,需搭配react-routerRedux/MobX等库,适合大型复杂应用(如单页应用、移动端跨平台开发)。
  5. 项目实践差异

    • 若项目需要快速迭代、低学习成本,Vue 更优(如管理系统);
    • 若需高性能渲染(如列表滚动、动画)或跨平台(React Native),React 更优。

三、深拷贝的实现方法

原回答问题:未提及具体实现方式
优化回答

  1. 核心问题

    • 浅拷贝仅复制基本类型值引用类型的地址,导致新旧对象共享同一内存,修改会互相影响。
    • 深拷贝需递归复制所有层级属性,使新对象与原对象完全独立。
  2. 实现方法

    • JSON.parse(JSON.stringify())
      • 简单易用,但无法处理函数、Symbol、Date、RegExp 等特殊类型,且会忽略undefined、破坏原型链。
       
      const shallowCopy = JSON.parse(JSON.stringify(obj));
      
    • 递归实现
      • 手动判断数据类型,递归复制对象 / 数组,处理循环引用(避免栈溢出)。
       
      function deepClone(obj, visited = new WeakMap()) {if (typeof obj !== 'object' || obj === null) return obj; // 基本类型或nullif (visited.has(obj)) return visited.get(obj); // 处理循环引用const clone = Array.isArray(obj) ? [] : {};visited.set(obj, clone);for (const key in obj) {if (obj.hasOwnProperty(key)) {clone[key] = deepClone(obj[key], visited);}}return clone;
      }
      
    • 工具库
      • 使用lodash.clonedeepimmer( immutable 数据方案),兼容性和健壮性更强。
  3. 应用场景

    • 需彻底隔离数据时(如状态管理中的不可变数据),避免因引用共享导致的意外副作用。

四、CSS 继承属性与非继承属性

原回答问题:列举较少,未明确分类
优化回答

  1. 继承属性(子元素默认继承父元素样式)

    • 文本相关font-familyfont-sizecolorline-heighttext-alignvisibility
    • 列表相关list-stylelist-style-type
    • 其他opacitycursordirection(文本方向)。
  2. 非继承属性(需显式声明)

    • 盒模型widthheightmarginpaddingborder
    • 定位与布局positionfloatdisplayz-index
    • 背景与装饰backgroundtext-decorationbox-shadow
  3. 例外情况

    • a标签的color默认继承,但 hover 状态需单独设置;
    • 可通过all: inherit强制继承所有属性(包括非继承属性),但需谨慎使用(可能破坏布局)。

五、回答技术问题的通用策略

  1. 结构化表达

    • 分点回答(如 “第一... 第二... 第三...”),先讲定义 / 原理,再讲应用场景,最后补充注意事项或优化方案。
    • 例:“水平垂直居中的方法有三种:1. Flex 布局(适用于现代浏览器);2. Grid 布局(二维布局场景);3. 定位法(兼容性要求高时)。”
  2. 结合项目经验

    • 穿插实际案例,如 “在数书平台项目中,我用 Flex 布局实现了响应式卡片居中,在 IE 兼容场景下 fallback 到定位法。”
  3. 主动扩展

    • 若问题涉及相关知识点,可适当延伸(如问v-if时,补充v-show的使用场景对比:频繁切换用v-show,条件性渲染用v-if)。
  4. 承认不足并展示学习能力

    • 若遇不确定的问题,可如实说:“这个点我目前了解到的是...,但可能还有更深的原理,我最近在学习 XX 文档,后续会重点研究。”

总结建议

  1. 强化原理学习

    • 深入理解浏览器渲染机制(如回流 / 重绘)、框架设计思想(如 Vue 的响应式、React 的单向数据流),通过官方文档(MDN、Vue/React 官网)和权威书籍(如《你不知道的 JavaScript》)夯实基础。
  2. 刻意练习输出

    • 用 “费曼学习法” 复述知识点(如向虚拟听众讲解深浅拷贝区别),或通过博客、技术笔记整理思路。
  3. 模拟面试实战

    • 针对高频问题(如组件通信、性能优化、跨域解决方案)进行模拟回答,录制后复盘改进表达逻辑。

通过以上方法,可显著提升回答的全面性和专业性,展现扎实的技术功底与清晰的逻辑思维。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow深度学习实战(20)——自组织映射详解

TensorFlow深度学习实战(20)——自组织映射详解 0. 前言1. 自组织映射原理2. 自组织映射的优缺点3. 使用自组织映射实现颜色映射小结系列链接 0. 前言 自组织映射 (Self-Organizing Map, SOM) 是一种无监督学习算法,主要用于高维数据的降维、…

Go内存泄漏排查与修复最佳实践

一、引言 即使Go语言拥有强大的垃圾回收机制,内存泄漏仍然是我们在生产环境中经常面临的挑战。与传统印象不同,垃圾回收并不是万能的"记忆清道夫",它只能处理那些不再被引用的内存,而无法识别那些仍被引用但实际上不再…

LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现

LeetCode刷题 – 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现 题目描述简述 给定一个 m x n 的二进制矩阵 mat,其中: 每个元素为 0 或 1返回一个同样大小的矩阵 ans,其中 ans[i][j] 表示 mat[i][j] 到最近 0 的最短曼哈顿距离 算法思…

MySQL用户远程访问权限设置

mysql相关指令 一. MySQL给用户添加远程访问权限1. 创建或者修改用户权限方法一:创建用户并授予远程访问权限方法二:修改现有用户的访问限制方法三:授予特定数据库的特定权限 2. 修改 MySQL 配置文件3. 安全最佳实践4. 测试远程连接5. 撤销权…

如何使用 BPF 分析 Linux 内存泄漏,Linux 性能调优之 BPF 分析内核态、用户态内存泄漏

写在前面 博文内容为 通过 BCC 工具集 memleak 进行内存泄漏分析的简单认知包括 memleak 脚本简单认知,内核态(内核模块)、用户态(Java,Python,C)内存跟踪泄漏分析 Demo理解不足小伙伴帮忙指正 😃,生活加油知其不可奈何而安之若命,德之至也。----《庄子内篇人间世》 …

谷歌Sign Gemma: AI手语翻译,沟通从此无界!

嘿,朋友们!想象一下,语言不再是交流的障碍,每个人都能顺畅表达与理解。这听起来是不是很酷?谷歌最新发布的Sign Gemma AI模型,正朝着这个激动人心的未来迈出了一大步!它就像一位随身的、不知疲倦…

全生命周期的智慧城市管理

前言 全生命周期的智慧城市管理。未来,城市将在 实现从基础设施建设、日常运营到数据管理的 全生命周期统筹。这将避免过去智慧城市建设 中出现的“碎片化”问题,实现资源的高效配 置和项目的协调发展。城市管理者将运用先进 的信息技术,如物…

最新Spring Security实战教程(十七)企业级安全方案设计 - 多因素认证(MFA)实现

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

logstash拉取redisStream的流数据,并存储ES

先说结论, window验证logstash截至2025-06-06 是没有原生支持的。 为啥考虑用redisStream呢?因为不想引入三方的kafka等组件, 让服务部署轻量化, 所以使用现有的redis来实现, 为啥不用list呢? 已经用strea…

IEC 61347-1:2015 灯控制装置安全通用要求详解

IEC 61347-1:2015 灯控制装置安全通用要求详解 IEC 61347-1:2015《灯控制装置 第1部分:一般要求和安全要求》是国际电工委员会(IEC)制定的关于灯控制装置安全性能的核心基础标准。它为各类用于启动和稳定工作电流的灯控制装置(如…

26、跳表

在C标准库中,std::map 和 std::set 是使用红黑树作为底层数据结构的容器。 红黑树是一种自平衡二叉搜索树,能够保证插入、删除和查找操作的时间复杂度为O(log n)。 以下是一些使用红黑树的C标准库容器: std::map:一种关联容器&a…

LabVIEW音频测试分析

LabVIEW通过读取指定WAV 文件,实现对音频信号的播放、多维度测量分析功能,为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放:支持持续读取示例数据文件夹内的 WAV 文件,可实时播放音频以监听被测信…

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…

Doris 与 Elasticsearch:谁更适合你的数据分析需求?

一、Doris 和 Elasticsearch 的基本概念 (一)Doris 是什么? Doris 是一个用于数据分析的分布式 MPP(大规模并行处理)数据库。它主要用于存储和分析大量的结构化数据(比如表格数据)&#xff0c…

使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯

使用Virtual Serial Port Drivercom2tcp或tcp2com进行两台电脑的串口通讯 问题说明解决方案方案三具体操作流程网上教程软件安装拓扑图准备工作com2tcp和tcp2com操作使用串口助手进行验证 方案三存在的问题数据错误通讯延时 问题说明 最近想进行串口通讯的一个测试&#xff0c…

transformer和 RNN以及他的几个变体区别 改进

Transformer、RNN 及其变体(LSTM/GRU)是深度学习中处理序列数据的核心模型,但它们的架构设计和应用场景有显著差异。以下从技术原理、优缺点和适用场景三个维度进行对比分析: 核心架构对比 模型核心机制并行计算能力长序列依赖处…

CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比

物联网设备对存储芯片的需求聚焦于低功耗、小尺寸、高可靠性与传输效率,Cascadeteq 的 CSS6404L 64Mb Quad-SPI Pseudo-SRAM 凭借差异化技术特性,在同类产品中展现显著优势。以下从核心特性及竞品对比两方面解析其应用价值。 一、CSS6404L 核心产品特性…

go语言map扩容

map是什么? ​在Go语言中,map是一种内置的无序key/value键值对的集合,可以根据key在O(1)的时间复杂度内取到value,有点类似于数组或者切片结构,可以把数组看作是一种特殊的map,数组的key为数组的下标&…

2025年SDK游戏盾实战深度解析:防御T级攻击与AI反作弊的终极方案

一、引言:游戏安全的“生死防线” 2025年,全球游戏行业因DDoS攻击日均损失3.2亿元,攻击峰值突破8Tbps,且70% 的攻击为混合型(DDoSCC)。传统高防IP因延迟高、成本贵、协议兼容性差,已无法满足实…

【Linux】LInux下第一个程序:进度条

前言: 在前面的文章中我们学习了LInux的基础指令 【Linux】初见,基础指令-CSDN博客【Linux】初见,基础指令(续)-CSDN博客 学习了vim编辑器【Linux】vim编辑器_linux vim insert-CSDN博客 学习了gcc/g【Linux】编译器gc…