<?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-59/</link><description>Recent content in 滴滴-社招-3年 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 28 Jul 2025 05:39:29 +0000</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/index.xml" rel="self" type="application/rss+xml"/><item><title>滴滴-社招-3年 · 第 1 轮 · 三面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-94/</link><pubDate>Mon, 28 Jul 2025 05:39:29 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-94/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-93/"&gt;第 1 轮&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/"&gt;返回本次面经&lt;/a&gt; · 已是最后一轮 →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; 浏览器渲染过程、浏览器的缓存机制、浏览器的垃圾回收机制、浏览器的存储机制&lt;/p&gt;
&lt;p&gt;本轮共 10 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-98da1f5bbe94"&gt;1. 在你做过的项目中，最值得说的是哪一个&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;STAR法则&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;基于自己简历挖掘亮点项目&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-1a73c841fa54"&gt;2. 在该项目中，你主要负责哪些模块的开发？这些模块的技术难点是什么&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-5b176ffb091f"&gt;3. 请举例说明在项目中，你是如何通过技术手段解决业务问题的&lt;/h2&gt;
&lt;h3 id="题目要点-2"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-0fdfb5bf5b6b"&gt;4. 在项目中，你采取了哪些性能优化措施？效果如何&lt;/h2&gt;
&lt;h3 id="题目要点-3"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;可以参考 【性能优化】相关知识点，在面经最后&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-3fa86026797b"&gt;5. 在项目中遇到的最大技术挑战是什么？你是如何解决的&lt;/h2&gt;
&lt;h3 id="题目要点-4"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-e967bea0e873"&gt;6. 在项目中，你是如何与团队成员协作的？请分享一个具体的协作案例&lt;/h2&gt;
&lt;h3 id="题目要点-5"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-fcdcf89f3234"&gt;7. 在团队协作中，遇到过哪些冲突？你是如何解决的&lt;/h2&gt;
&lt;h3 id="题目要点-6"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-a4d9118359ba"&gt;8. 在项目中，你是如何进行项目管理和进度保障的&lt;/h2&gt;
&lt;h3 id="题目要点-7"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-723e5a28df32"&gt;9. 你的职业规划是什么样的？短期和长期目标分别是什么&lt;/h2&gt;
&lt;h3 id="题目要点-8"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-265243f3e08c"&gt;10. 给定两个以字符串形式表示的非负整数 num1 和 num2，返回 num1 和 num2 的乘积，它们的乘积也表示为字符串形式&lt;/h2&gt;
&lt;p&gt;注意：不能使用任何内置的 BigInteger 库或直接将输入转换为整数&lt;/p&gt;
&lt;p&gt;示例 1:&lt;/p&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-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;输入&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num1&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num2&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;输出&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;6&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例 2:&lt;/p&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-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;输入: num1 = &amp;#34;123&amp;#34;, num2 = &amp;#34;456&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;输出: &amp;#34;56088&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="题目要点-9"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;模拟多位数乘法的过程，按位乘积+进位合并&lt;/li&gt;
&lt;li&gt;用数组保存每一位的计算结果，最终拼接成字符串&lt;/li&gt;
&lt;li&gt;注意字符串转数字、进位处理、前导 0 清除等细节&lt;/li&gt;
&lt;li&gt;不允许使用 BigInt、Number 等将字符串转换为数字&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h3 id="考察点"&gt;考察点&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;h3 id="参考答案"&gt;参考答案&lt;/h3&gt;
&lt;h4 id="一原理说明"&gt;一、原理说明&lt;/h4&gt;
&lt;p&gt;由于不能直接将字符串转为整数，需模拟“&lt;strong&gt;逐位乘法 + 进位处理&lt;/strong&gt;”，如同手动计算多位乘法（竖式）一样：&lt;/p&gt;</description></item><item><title>滴滴-社招-3年 · 第 1 轮 · 二面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-93/</link><pubDate>Mon, 28 Jul 2025 03:27:35 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-93/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-92/"&gt;第 1 轮&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/"&gt;返回本次面经&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-94/"&gt;第 1 轮&lt;/a&gt; →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; react hooks、列表和key、高阶组件、性能优化、react 渲染机制、React函数组件更新、react 组件设计模式、全方位解读this、类型判断&lt;/p&gt;
&lt;p&gt;本轮共 14 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-26e1dc3b0dcc"&gt;1. 项目中遇到的最大技术挑战是什么&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-69995578c3fa"&gt;2. 项目整体架构是什么样的&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-6df78bf9f0d6"&gt;3. 在项目中，你们是如何进行前端代码的模块化和组件化的&lt;/h2&gt;
&lt;h3 id="题目要点-2"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;模块化：代码拆分成独立功能模块，使用 ES Module 标准&lt;br&gt;&lt;/li&gt;
&lt;li&gt;组件化：UI拆分成可复用组件，封装结构、样式和逻辑&lt;br&gt;&lt;/li&gt;
&lt;li&gt;结合构建工具支持模块管理和代码分割&lt;br&gt;&lt;/li&gt;
&lt;li&gt;组件通信通过 props、事件、状态管理实现&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;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h3 id="考察点"&gt;考察点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;理解模块化和组件化的概念及其在前端开发中的重要性&lt;br&gt;&lt;/li&gt;
&lt;li&gt;熟悉常见的模块化规范（如 CommonJS、ES Module）及其区别&lt;br&gt;&lt;/li&gt;
&lt;li&gt;掌握组件化设计思想和实现方式，尤其是在主流框架中的实践&lt;br&gt;&lt;/li&gt;
&lt;li&gt;能结合项目需求合理组织代码结构，提高复用性和维护性&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="参考答案"&gt;参考答案&lt;/h3&gt;
&lt;h4 id="一原理说明"&gt;一、原理说明&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模块化&lt;/strong&gt; 指将代码拆分成独立的、功能明确的模块，每个模块有自己的作用域和接口，避免全局污染，提高代码可维护性。&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;常见规范包括：&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CommonJS&lt;/strong&gt;（Node.js环境，使用 &lt;code&gt;require&lt;/code&gt; 和 &lt;code&gt;module.exports&lt;/code&gt;）&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMD&lt;/strong&gt;（异步模块定义，适用于浏览器异步加载）&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ES Module（ESM）&lt;/strong&gt;（现代标准，使用 &lt;code&gt;import&lt;/code&gt; 和 &lt;code&gt;export&lt;/code&gt;，支持静态分析）&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组件化&lt;/strong&gt; 是模块化的进一步细化，专注于 UI 层面，将界面拆分成独立且可复用的组件，封装逻辑、样式和结构。&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;组件通常包含状态管理、事件处理、生命周期管理等，方便组合和维护。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;主流框架如 Vue、React、Angular 都鼓励基于组件开发。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="二项目中模块化和组件化的实践"&gt;二、项目中模块化和组件化的实践&lt;/h4&gt;
&lt;h5 id="1-模块化管理"&gt;1. &lt;strong&gt;模块化管理&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;项目采用 &lt;strong&gt;ES Module&lt;/strong&gt; 作为标准模块规范，利用 &lt;code&gt;import&lt;/code&gt; 和 &lt;code&gt;export&lt;/code&gt; 进行模块间依赖管理。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;通过合理拆分功能模块（如工具库、接口服务、状态管理、业务逻辑）形成清晰的依赖关系，便于维护和测试。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;使用构建工具（Webpack、Vite）支持模块打包和代码分割，提高加载效率。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;配合 &lt;code&gt;alias&lt;/code&gt; 和路径管理，保持模块引用简洁，提升开发体验。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="2-组件化设计"&gt;2. &lt;strong&gt;组件化设计&lt;/strong&gt;&lt;/h5&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;使用组件库（如 Element UI、Ant Design）或自研组件库提升开发效率。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;结合样式模块化（CSS Modules、Scoped CSS、CSS-in-JS）实现样式隔离，防止样式冲突。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;组件支持配置化和插槽机制，提高灵活性和扩展性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="3-代码组织结构"&gt;3. &lt;strong&gt;代码组织结构&lt;/strong&gt;&lt;/h5&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;/li&gt;
&lt;/ul&gt;
&lt;h5 id="4-优势与价值"&gt;4. &lt;strong&gt;优势与价值&lt;/strong&gt;&lt;/h5&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;li&gt;利用现代构建工具实现性能优化。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="三常见误区与注意点"&gt;三、常见误区与注意点&lt;/h4&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;/strong&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;li&gt;忽略模块和组件的性能优化，如避免无意义的重新渲染和重复加载。&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-43824f1001b4"&gt;4. 项目中做过哪些性能优化方面的工作&lt;/h2&gt;
&lt;h3 id="题目要点-3"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;资源按需加载与代码拆分减少首屏加载时间&lt;br&gt;&lt;/li&gt;
&lt;li&gt;静态资源压缩、合并和 CDN 加速&lt;br&gt;&lt;/li&gt;
&lt;li&gt;图片优化与懒加载&lt;br&gt;&lt;/li&gt;
&lt;li&gt;减少 DOM 操作，合理使用虚拟 DOM&lt;br&gt;&lt;/li&gt;
&lt;li&gt;JS 任务拆分，使用防抖节流和 Web Worker&lt;br&gt;&lt;/li&gt;
&lt;li&gt;接口合并、缓存和 HTTP/2 多路复用&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;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h3 id="考察点-1"&gt;考察点&lt;/h3&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;li&gt;熟悉常用性能监控和评估工具，验证优化效果&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="参考答案-1"&gt;参考答案&lt;/h3&gt;
&lt;h4 id="一原理说明-1"&gt;一、原理说明&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;前端性能优化的核心目标是提升页面加载速度、响应速度和交互流畅度，从而改善用户体验，降低用户流失。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;性能瓶颈通常来源于资源加载慢、渲染阻塞、JavaScript 执行耗时、内存泄漏和网络请求频繁等。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;现代性能优化涉及多个层面，包括网络层、资源层、渲染层和代码执行层。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;性能优化不仅是技术问题，更涉及合理架构设计和业务合理拆分。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="二项目中的具体优化实践"&gt;二、项目中的具体优化实践&lt;/h4&gt;
&lt;h5 id="1-资源加载优化"&gt;1. &lt;strong&gt;资源加载优化&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;采用代码拆分（Code Splitting）和按需加载，避免一次性加载大量无关代码，缩短首屏加载时间。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;使用 CDN 分发静态资源，提升资源下载速度。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;资源压缩和合并（如压缩 JS/CSS，合并小文件减少请求数量）。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;图片优化（WebP 格式替代、图片懒加载、合理尺寸裁剪）。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;利用浏览器缓存策略（Cache-Control、Service Worker）减少重复请求。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="2-渲染性能优化"&gt;2. &lt;strong&gt;渲染性能优化&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;减少 DOM 操作次数，合并多次修改，避免触发频繁回流和重绘。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;使用虚拟 DOM 和虚拟列表技术优化大量数据渲染。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;CSS 动画尽量使用 GPU 加速属性（如 transform、opacity）。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;避免长任务阻塞主线程，合理拆分 JS 任务，防止界面卡顿。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="3-javascript-执行优化"&gt;3. &lt;strong&gt;JavaScript 执行优化&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;减少不必要的计算和事件绑定，防抖节流常用来优化频繁触发的事件。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;使用 Web Worker 将计算密集型任务移至后台线程，避免主线程阻塞。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;利用 Tree Shaking 去除未使用代码，减小包体积。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;预编译和缓存机制提升运行效率。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="4-网络请求优化"&gt;4. &lt;strong&gt;网络请求优化&lt;/strong&gt;&lt;/h5&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;li&gt;使用 HTTP/2 多路复用，提升请求并发性能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="5-性能监控与持续优化"&gt;5. &lt;strong&gt;性能监控与持续优化&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;集成性能监控工具（如 Lighthouse、Chrome DevTools Performance、RUM 埋点等）。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;通过埋点监控首屏时间、接口响应时间、动画帧率等关键指标。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;根据监控数据持续跟踪性能瓶颈，迭代优化。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="三常见误区与注意点-1"&gt;三、常见误区与注意点&lt;/h4&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;li&gt;不关注性能监控数据，缺乏闭环改进。&lt;br&gt;&lt;/li&gt;
&lt;li&gt;忽视用户设备差异，优化方案不够适配低端设备。&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-bfa8d18a2415"&gt;5. 在移动端开发中，你们是如何处理不同设备的适配问题的&lt;/h2&gt;
&lt;h3 id="题目要点-4"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;了解并使用 viewport 设置布局基础&lt;/li&gt;
&lt;li&gt;灵活组合 rem/vw/flex/media query 等单位和布局方案&lt;/li&gt;
&lt;li&gt;使用 postcss 工具链统一适配流程&lt;/li&gt;
&lt;li&gt;考虑高DPR设备图像清晰度适配&lt;/li&gt;
&lt;li&gt;针对横屏、Pad 等极端设备考虑额外样式方案&lt;/li&gt;
&lt;li&gt;注重兼容性测试，处理浏览器差异&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h3 id="考察点-2"&gt;考察点&lt;/h3&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;li&gt;是否能系统性总结适配技术手段的优缺点&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="参考答案-2"&gt;参考答案&lt;/h3&gt;
&lt;h4 id="一适配问题的来源"&gt;一、适配问题的来源&lt;/h4&gt;
&lt;p&gt;移动端设备种类繁多，存在如下适配挑战：&lt;/p&gt;</description></item><item><title>滴滴-社招-3年 · 第 1 轮 · 一面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-92/</link><pubDate>Mon, 28 Jul 2025 03:15:10 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-92/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← 已是第一轮 · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/"&gt;返回本次面经&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-59/round-93/"&gt;第 1 轮&lt;/a&gt; →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; z-index、布局技巧、Flexbox、优化性能、react hooks、浏览器渲染过程、浏览器的缓存机制、浏览器的垃圾回收机制&lt;/p&gt;
&lt;p&gt;本轮共 11 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-920e774f1156"&gt;1. 讲一下可视化搭建平台中魔方组件的设计与实现难点&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-6898841d5b91"&gt;2. 如何解决多模块叠加时的z-index管理问题&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z-index&lt;/code&gt; 基于层叠上下文，简单数字不能保证全局一致性&lt;/li&gt;
&lt;li&gt;建立统一 z-index 管理系统（如 Z_INDEX_MAP）是可维护的关键&lt;/li&gt;
&lt;li&gt;模块内部创建局部 stacking context，避免全局冲突&lt;/li&gt;
&lt;li&gt;动态模块如拖拽、浮层应使用自动 z-index 分配策略&lt;/li&gt;
&lt;li&gt;避免滥用 z-index，建议结合 portal、绝对定位和容器设计实现可控叠加&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h3 id="考察点"&gt;考察点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;面试官想了解你在复杂 UI 组件系统中的图层管理策略&lt;/li&gt;
&lt;li&gt;探查你对 &lt;code&gt;z-index&lt;/code&gt; 的工作机制、层级上下文（stacking context）的理解&lt;/li&gt;
&lt;li&gt;是否具备系统化组织多模块图层关系的经验，能避免冲突和错乱&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="参考答案"&gt;参考答案&lt;/h3&gt;
&lt;h4 id="一z-index-背后机制与问题本质"&gt;一、z-index 背后机制与问题本质&lt;/h4&gt;
&lt;h5 id="1-z-index-的作用机制"&gt;1. z-index 的作用机制&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z-index&lt;/code&gt; 定义元素在“同一层叠上下文（stacking context）”中的前后顺序&lt;/li&gt;
&lt;li&gt;层叠上下文由具有特定属性的元素（如&lt;code&gt;position: relative/absolute/fixed&lt;/code&gt; + &lt;code&gt;z-index&lt;/code&gt;）创建&lt;/li&gt;
&lt;li&gt;每个层叠上下文是独立的，只影响自身子元素的层叠关系&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="2-可视化搭建系统的典型挑战"&gt;2. 可视化搭建系统的典型挑战&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;多模块（如弹窗、悬浮面板、组件拖拽层、选中态）频繁叠加，若统一用裸 &lt;code&gt;z-index&lt;/code&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;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="二系统化的-z-index-管理方案"&gt;二、系统化的 z-index 管理方案&lt;/h4&gt;
&lt;h5 id="1-建立统一的层级管理规范z-index-map"&gt;1. 建立统一的层级管理规范（z-index Map）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;在系统中定义一套统一的 z-index 枚举表，例如：&lt;/li&gt;
&lt;/ul&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-ts" data-lang="ts"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;export&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Z_INDEX_MAP&lt;/span&gt; &lt;span style="color:#f92672"&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;base&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;component&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;floatingPanel&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;100&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;modal&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;1000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;tooltip&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;2000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;dragLayer&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;3000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;globalMask&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;9999&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;所有模块只能从该映射中引用 z-index，禁止硬编码数字，避免冲突&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="2-模块隔离建立明确的层叠上下文边界"&gt;2. 模块隔离，建立明确的层叠上下文边界&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;position: relative/absolute&lt;/code&gt; + &lt;code&gt;z-index&lt;/code&gt;，每个模块在其容器内控制层级&lt;/li&gt;
&lt;li&gt;避免所有元素在一个全局层叠上下文中争夺 z-index&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="3-动态-z-index-分配机制如拖拽时临时置顶"&gt;3. 动态 z-index 分配机制（如拖拽时临时置顶）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;为拖拽、临时弹出等模块动态分配最高层级，例如：&lt;/li&gt;
&lt;/ul&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-ts" data-lang="ts"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dynamicZIndex&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Z_INDEX_MAP&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;dragLayer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;getNextZIndex() {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dynamicZIndex&lt;/span&gt;&lt;span style="color:#f92672"&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;使多个拖拽元素在交互中可动态置顶，不影响整体秩序&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="4-可视化调试工具辅助"&gt;4. 可视化调试工具辅助&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;引入 DevTool 插件或内嵌 z-index 层级可视化辅助组件，用不同颜色或 label 显示当前模块层级，便于调试&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="三z-index-冲突的实际案例与应对策略"&gt;三、z-index 冲突的实际案例与应对策略&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：浮层 A（z-index: 200）被浮层 B（z-index: 100）遮挡&lt;/p&gt;</description></item></channel></rss>