<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>阿里巴巴-社招-3年 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/</link><description>Recent content in 阿里巴巴-社招-3年 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 28 Jul 2025 12:38:24 +0000</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/index.xml" rel="self" type="application/rss+xml"/><item><title>阿里巴巴-社招-3年 · 第 1 轮 · 二面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-102/</link><pubDate>Mon, 28 Jul 2025 12:38:24 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-102/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-101/"&gt;第 1 轮&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/"&gt;返回本次面经&lt;/a&gt; · 已是最后一轮 →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; react hooks、高阶组件、列表和key、react 渲染机制、react 组件设计模式、前端模块化、Webpack与Vite&lt;/p&gt;
&lt;p&gt;本轮共 12 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-f9a4ad22386a"&gt;1. 讲一下你对Hooks 了解&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Hooks 是函数组件状态和副作用管理的新方案&lt;br&gt;&lt;/li&gt;
&lt;li&gt;常用 Hooks 有 &lt;code&gt;useState&lt;/code&gt;、&lt;code&gt;useEffect&lt;/code&gt;、&lt;code&gt;useMemo&lt;/code&gt;、&lt;code&gt;useCallback&lt;/code&gt; 等&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Hook 调用必须遵循规则，保证顺序稳定&lt;br&gt;&lt;/li&gt;
&lt;li&gt;自定义 Hooks 用于逻辑复用，提高代码可维护性&lt;br&gt;&lt;/li&gt;
&lt;li&gt;理解 Hook 设计原理，有助于写出高质量 React 代码&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h2 id="一考察点"&gt;一、考察点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;理解 React Hooks 的设计初衷与核心概念&lt;br&gt;&lt;/li&gt;
&lt;li&gt;掌握常用 Hooks（如 useState、useEffect、useMemo、useCallback 等）的作用与使用场景&lt;br&gt;&lt;/li&gt;
&lt;li&gt;理解 Hooks 规则及其背后的原理机制&lt;br&gt;&lt;/li&gt;
&lt;li&gt;认识 Hooks 对函数组件状态管理和生命周期的改进&lt;br&gt;&lt;/li&gt;
&lt;li&gt;了解自定义 Hooks 的设计思路及复用价值&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="21-hooks-的定义与设计初衷"&gt;2.1 Hooks 的定义与设计初衷&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：Hooks 是 React 16.8 引入的函数组件状态和副作用管理的特性&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设计目标&lt;/strong&gt;：&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;解决类组件中状态逻辑难以复用和组件嵌套过深的问题&lt;br&gt;&lt;/li&gt;
&lt;li&gt;让函数组件拥有类似类组件的状态和生命周期能力&lt;br&gt;&lt;/li&gt;
&lt;li&gt;简化组件逻辑，提升代码可读性和复用性&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-常用-hooks-及其作用"&gt;2.2 常用 Hooks 及其作用&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hooks&lt;/th&gt;
&lt;th&gt;功能描述&lt;/th&gt;
&lt;th&gt;典型使用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useState&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;在函数组件中声明状态变量&lt;/td&gt;
&lt;td&gt;组件内部状态管理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useEffect&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;处理副作用（订阅、异步请求、DOM操作等）&lt;/td&gt;
&lt;td&gt;替代类组件的生命周期钩子&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useContext&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;订阅 React Context，实现跨组件数据传递&lt;/td&gt;
&lt;td&gt;共享全局状态、主题、语言等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useMemo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;记忆计算结果，避免不必要的重复计算&lt;/td&gt;
&lt;td&gt;性能优化，避免昂贵计算重复执行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useCallback&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;记忆函数实例，避免子组件重复渲染&lt;/td&gt;
&lt;td&gt;优化子组件性能，防止无意义的 props 变化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;useRef&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;保存可变值，不触发组件重新渲染&lt;/td&gt;
&lt;td&gt;访问 DOM 节点或保存不变引用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-hooks-的规则与原理"&gt;2.3 Hooks 的规则与原理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;规则&lt;/strong&gt;：&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;只能在函数组件或自定义 Hooks 中调用&lt;br&gt;&lt;/li&gt;
&lt;li&gt;只能顶层调用，不能在循环、条件或嵌套函数中调用，保证 Hook 调用顺序稳定&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：React 通过维护一个 Hook 链表和调用顺序，关联 Hook 状态与对应组件实例，实现状态的持久化和更新&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="24-自定义-hooks"&gt;2.4 自定义 Hooks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;将组件中可复用的状态逻辑抽象成函数&lt;br&gt;&lt;/li&gt;
&lt;li&gt;函数内部调用其他 Hooks，实现逻辑复用与拆分&lt;br&gt;&lt;/li&gt;
&lt;li&gt;提高代码复用性和可维护性&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三常见误区或面试陷阱"&gt;三、常见误区或面试陷阱&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;误用 Hook 规则，导致调用顺序不稳定&lt;br&gt;&lt;/li&gt;
&lt;li&gt;过度使用 &lt;code&gt;useEffect&lt;/code&gt;，产生复杂副作用链和性能问题&lt;br&gt;&lt;/li&gt;
&lt;li&gt;误解 &lt;code&gt;useMemo&lt;/code&gt; 和 &lt;code&gt;useCallback&lt;/code&gt; 的使用时机和作用&lt;br&gt;&lt;/li&gt;
&lt;li&gt;忽略依赖项数组，导致副作用不正确执行&lt;br&gt;&lt;/li&gt;
&lt;li&gt;不了解自定义 Hooks 是普通函数，不能在其中调用 Hook 规则外的逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-ba3489d6bd89"&gt;2. 对比 Class 组件的 Mixin 模式，Hooks 如何解决逻辑复用问题？Mixin 的主要缺陷是什么&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mixin 依赖多继承，存在命名冲突、状态污染、难维护等问题&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Hooks 通过函数组合和自定义 Hook 实现逻辑复用，避免冲突和复杂继承&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Hooks 提升代码可读性、维护性、测试性和类型支持&lt;br&gt;&lt;/li&gt;
&lt;li&gt;React 官方推荐使用 Hooks 替代 Mixin 模式&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h2 id="一考察点-1"&gt;一、考察点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;理解 Class 组件中 Mixin 的工作方式及缺陷&lt;br&gt;&lt;/li&gt;
&lt;li&gt;掌握 Hooks 解决组件逻辑复用的机制和优势&lt;br&gt;&lt;/li&gt;
&lt;li&gt;比较两种方案在代码组织、维护性和复用性上的差异&lt;br&gt;&lt;/li&gt;
&lt;li&gt;理解现代 React 设计理念和组件开发最佳实践&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案-1"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="21-mixin-模式及其缺陷"&gt;2.1 Mixin 模式及其缺陷&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mixin 定义&lt;/strong&gt;：通过多个类混入（mixin）共享方法和状态，Class 组件通过继承或组合多个 mixin 实现代码复用&lt;br&gt;&lt;/p&gt;</description></item><item><title>阿里巴巴-社招-3年 · 第 1 轮 · 一面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-101/</link><pubDate>Mon, 28 Jul 2025 12:26:34 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-101/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← 已是第一轮 · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/"&gt;返回本次面经&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-63/round-102/"&gt;第 1 轮&lt;/a&gt; →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; react 事件机制、React 生命周期、state 与 props&lt;/p&gt;
&lt;p&gt;本轮共 13 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-ee8affda6741"&gt;1. 实现全屏水平垂直居中、宽高为屏幕宽度一半的正方形&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;利用 &lt;code&gt;vw&lt;/code&gt; 单位定义宽高，保证正方形且相对视口大小&lt;/li&gt;
&lt;li&gt;Flexbox 和绝对定位 + transform 是常用居中方案&lt;/li&gt;
&lt;li&gt;重置默认 margin 和设置容器高度保证布局准确&lt;/li&gt;
&lt;li&gt;任选方案均可，Flexbox 代码简洁，绝对定位兼容性好&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h2 id="一考察点"&gt;一、考察点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;掌握 CSS 布局基础知识&lt;br&gt;&lt;/li&gt;
&lt;li&gt;熟悉视口单位（vw、vh）的使用&lt;br&gt;&lt;/li&gt;
&lt;li&gt;理解水平垂直居中多种实现方式&lt;br&gt;&lt;/li&gt;
&lt;li&gt;了解盒模型和尺寸计算&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="21-需求分析"&gt;2.1 需求分析&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;元素宽度和高度为屏幕宽度的 50%（即 50vw）&lt;br&gt;&lt;/li&gt;
&lt;li&gt;元素是正方形，宽高相等&lt;br&gt;&lt;/li&gt;
&lt;li&gt;水平和垂直方向均居中显示&lt;br&gt;&lt;/li&gt;
&lt;li&gt;兼容主流现代浏览器&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-代码实现示例"&gt;2.2 代码实现示例&lt;/h3&gt;
&lt;h4 id="方法一使用-flexbox"&gt;方法一：使用 Flexbox&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;container&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;square&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;html&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;body&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; .&lt;span style="color:#a6e22e"&gt;container&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vh&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;flex&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;justify-content&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 水平居中 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;align-items&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 垂直居中 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 保证正方形 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#4CAF50&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="方法二使用绝对定位--transform"&gt;方法二：使用绝对定位 + transform&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;square&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#2196F3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;transform&lt;/span&gt;: translate(&lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;html&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vh&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="23-说明"&gt;2.3 说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;50vw&lt;/code&gt; 表示视口宽度的一半&lt;/li&gt;
&lt;li&gt;Flexbox 方案利用容器的弹性布局实现简单居中&lt;/li&gt;
&lt;li&gt;绝对定位方案通过 &lt;code&gt;top:50%&lt;/code&gt;, &lt;code&gt;left:50%&lt;/code&gt; 定位中心点，再用 &lt;code&gt;transform&lt;/code&gt; 修正偏移&lt;/li&gt;
&lt;li&gt;两种方案均保证元素在视口中央且尺寸为屏幕宽度一半的正方形&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三常见误区或面试陷阱"&gt;三、常见误区或面试陷阱&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;忽略 viewport 单位，使用百分比 &lt;code&gt;%&lt;/code&gt; 宽高导致高度受父元素限制&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;margin: auto&lt;/code&gt; 只实现水平居中，未垂直居中&lt;/li&gt;
&lt;li&gt;transform 偏移值写错方向或单位&lt;/li&gt;
&lt;li&gt;未重置 &lt;code&gt;html, body&lt;/code&gt; 的 margin 和高度，导致布局异常&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-efad8bc5b4fe"&gt;2. 如何通过 padding-bottom 实现自适应正方形&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;百分比 padding-bottom 是相对于元素宽度计算的&lt;/li&gt;
&lt;li&gt;设置宽度，padding-bottom 等于宽度比例即可实现宽高比&lt;/li&gt;
&lt;li&gt;纯 CSS 实现响应式正方形，无需 JS 计算&lt;/li&gt;
&lt;li&gt;配合 position 及 transform 可实现内部内容居中&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h2 id="一考察点-1"&gt;一、考察点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;理解 CSS 盒模型及百分比 padding 的计算规则&lt;br&gt;&lt;/li&gt;
&lt;li&gt;熟悉通过内边距（padding）比例实现自适应高度的布局技巧&lt;br&gt;&lt;/li&gt;
&lt;li&gt;掌握纯 CSS 无需固定高度实现宽高比控制的方法&lt;br&gt;&lt;/li&gt;
&lt;li&gt;了解响应式设计及视口适配相关概念&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案-1"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="21-核心原理说明"&gt;2.1 核心原理说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;百分比 padding 的高度计算基于元素的宽度&lt;/strong&gt;&lt;br&gt;
例如，&lt;code&gt;padding-bottom: 100%&lt;/code&gt; 表示内边距底部高度是元素自身宽度的 100%&lt;br&gt;&lt;/li&gt;
&lt;li&gt;利用这一特性，设置一个元素的宽度，然后用 &lt;code&gt;padding-bottom&lt;/code&gt; 来控制高度，从而实现固定宽高比（正方形为 1:1）&lt;br&gt;&lt;/li&gt;
&lt;li&gt;这种方式不依赖固定高度或 JS，纯 CSS 实现响应式正方形&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-具体实现方式"&gt;2.2 具体实现方式&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;square&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 宽度为视口宽度的一半 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding-bottom&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 内边距底部为宽度的 100%，实现高度与宽度相等 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#f60&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;relative&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 便于放置绝对定位内容（如文字） */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* 如果需要内部内容绝对居中，可添加： */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; .&lt;span style="color:#a6e22e"&gt;content&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;transform&lt;/span&gt;: translate(&lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-使用场景"&gt;2.3 使用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;自适应正方形容器&lt;/li&gt;
&lt;li&gt;图片或视频占位框&lt;/li&gt;
&lt;li&gt;响应式卡片、图标区域布局&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三常见误区或面试陷阱-1"&gt;三、常见误区或面试陷阱&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;误以为 padding 百分比是基于高度计算（实际上是基于宽度）&lt;/li&gt;
&lt;li&gt;忽略内容本身不占高度，需要通过 &lt;code&gt;position: relative&lt;/code&gt; 和绝对定位解决内容布局&lt;/li&gt;
&lt;li&gt;没有设置元素的 &lt;code&gt;width&lt;/code&gt;，导致 padding 计算无意义&lt;/li&gt;
&lt;li&gt;使用固定 &lt;code&gt;height&lt;/code&gt; 反而破坏响应式效果&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-c8954730cddb"&gt;3. 若要求正方形内嵌图片保持比例且不拉伸，如何实现&lt;/h2&gt;
&lt;h3 id="题目要点-2"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;容器用 padding-bottom 创建自适应正方形&lt;/li&gt;
&lt;li&gt;图片使用 &lt;code&gt;object-fit: contain&lt;/code&gt; 保持比例且不拉伸&lt;/li&gt;
&lt;li&gt;绝对定位图片居中显示，宽高100%填充容器&lt;/li&gt;
&lt;li&gt;设置 &lt;code&gt;overflow: hidden&lt;/code&gt; 避免溢出&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h2 id="一考察点-2"&gt;一、考察点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;理解图片的默认渲染行为及尺寸适配&lt;br&gt;&lt;/li&gt;
&lt;li&gt;掌握 CSS 中图片等媒体对象的缩放控制属性（object-fit）&lt;br&gt;&lt;/li&gt;
&lt;li&gt;熟悉容器布局，确保图片在固定宽高正方形内自适应显示&lt;br&gt;&lt;/li&gt;
&lt;li&gt;了解响应式设计和兼容性考虑&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案-2"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="21-核心概念说明"&gt;2.1 核心概念说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图片默认行为&lt;/strong&gt;：图片按原始宽高比显示，若强制设置宽高可能导致变形&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;object-fit&lt;/code&gt; 属性&lt;/strong&gt;：用于控制替换元素（如 img、video）内容的填充方式&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;object-fit: contain&lt;/code&gt; 保持图片比例，完整显示，可能留空白&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;object-fit: cover&lt;/code&gt; 保持比例，填满容器，超出部分裁剪&lt;br&gt;&lt;/li&gt;
&lt;li&gt;结合容器尺寸和 &lt;code&gt;object-fit&lt;/code&gt; 可灵活控制图片展示效果&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-具体实现示例"&gt;2.2 具体实现示例&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;square&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;your-image.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;示例图片&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding-bottom&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;vw&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 自适应正方形 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;overflow&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;hidden&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 防止图片溢出 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;square&lt;/span&gt; &lt;span style="color:#f92672"&gt;img&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;object-fit&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;contain&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* 保持比例且不拉伸 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;transform&lt;/span&gt;: translate(&lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;style&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-说明-1"&gt;2.3 说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;padding-bottom&lt;/code&gt; 创建正方形容器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;position: relative&lt;/code&gt; + &lt;code&gt;position: absolute&lt;/code&gt; 定位图片，方便居中&lt;/li&gt;
&lt;li&gt;图片宽高设为 100%，配合 &lt;code&gt;object-fit: contain&lt;/code&gt; 保持原始比例且不被拉伸&lt;/li&gt;
&lt;li&gt;&lt;code&gt;overflow: hidden&lt;/code&gt; 防止图片超出容器边界显示&lt;/li&gt;
&lt;li&gt;可根据需求改为 &lt;code&gt;object-fit: cover&lt;/code&gt; 实现填充并裁剪效果&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三常见误区或面试陷阱-2"&gt;三、常见误区或面试陷阱&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;不设置 &lt;code&gt;object-fit&lt;/code&gt;，直接用 &lt;code&gt;width&lt;/code&gt; 和 &lt;code&gt;height&lt;/code&gt; 100%，图片可能被拉伸变形&lt;/li&gt;
&lt;li&gt;忽略容器定位，导致图片无法居中或布局错乱&lt;/li&gt;
&lt;li&gt;未设置 &lt;code&gt;overflow: hidden&lt;/code&gt;，图片溢出影响页面布局&lt;/li&gt;
&lt;li&gt;误用 &lt;code&gt;background-image&lt;/code&gt; 和 &lt;code&gt;background-size&lt;/code&gt;，与 img 标签区别不清&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-417ebda0-3f2d-48d3-95ec-ae1838bf39cb"&gt;4. 怎么理解回流跟重绘？什么场景下会触发？&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;题库原题：&lt;a href="https://fe.ecool.fun/topic/417ebda0-3f2d-48d3-95ec-ae1838bf39cb"&gt;怎么理解回流跟重绘？什么场景下会触发？&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>