<?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>阿里巴巴-社招-1年 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/</link><description>Recent content in 阿里巴巴-社招-1年 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 28 Jul 2025 11:54:27 +0000</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/index.xml" rel="self" type="application/rss+xml"/><item><title>阿里巴巴-社招-1年 · 第 1 轮 · 二面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-98/</link><pubDate>Mon, 28 Jul 2025 11:54:27 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-98/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-97/"&gt;第 1 轮&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/"&gt;返回本次面经&lt;/a&gt; · 已是最后一轮 →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; react hooks、性能优化&lt;/p&gt;
&lt;p&gt;本轮共 10 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-8c25c1ddc7f3"&gt;1. 你们项目为什么选Redux而非MobX&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Redux 强调可预测性、单向数据流、纯函数 reducer，适合复杂项目&lt;/li&gt;
&lt;li&gt;丰富的调试工具和社区中间件支持开发效率和可维护性&lt;/li&gt;
&lt;li&gt;MobX 响应式自动追踪，适合快速开发，但隐式依赖增加调试难度&lt;/li&gt;
&lt;li&gt;团队规模和项目复杂度是选择状态管理方案的关键因素&lt;/li&gt;
&lt;li&gt;现代 Redux 已大幅简化，代码冗余感降低&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;&lt;strong&gt;是否理解 Redux 和 MobX 两种状态管理库的设计理念与差异&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否能结合项目实际需求，论述选择某一方案的合理性&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否掌握 Redux 在复杂状态管理中的优势与局限&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否能表达对团队协作、维护性和性能的综合考虑&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="11-原理说明"&gt;1.1 原理说明&lt;/h3&gt;
&lt;h4 id="redux"&gt;Redux&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基于 Flux 架构思想，使用单一全局状态树（Store）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;状态只读，通过派发（dispatch）纯函数（Reducer）更新状态&lt;/li&gt;
&lt;li&gt;强调&lt;strong&gt;不可变数据和纯函数&lt;/strong&gt;，方便调试和时间旅行（time-travel debugging）&lt;/li&gt;
&lt;li&gt;侧重于&lt;strong&gt;可预测性和可维护性&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="mobx"&gt;MobX&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;采用响应式编程思想，通过可观察（observable）数据和自动追踪依赖实现状态同步&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;隐式状态更新&lt;/strong&gt;，使用更接近传统面向对象编程&lt;/li&gt;
&lt;li&gt;适合快速开发，较少样板代码&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="12-选择-redux-的主要理由"&gt;1.2 选择 Redux 的主要理由&lt;/h3&gt;
&lt;h4 id="1明确的状态流向和可预测性"&gt;1）明确的状态流向和可预测性&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Redux 的单向数据流和纯函数 reducer 让状态变化过程清晰、易追踪&lt;/li&gt;
&lt;li&gt;在多人协作中，可以方便定位状态更新的具体原因，减少调试成本&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2强大的开发者工具支持"&gt;2）强大的开发者工具支持&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Redux DevTools 提供时间旅行、快照对比、action 日志等，极大提升调试体验&lt;/li&gt;
&lt;li&gt;有丰富的中间件生态（如 redux-thunk、redux-saga），便于处理复杂异步逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3适合大型复杂项目"&gt;3）适合大型复杂项目&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;状态结构复杂时，Redux 更便于组织和维护，模块化拆分 reducer 明确职责&lt;/li&gt;
&lt;li&gt;明确的规范和社区共识，团队成员易于理解和统一编码风格&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="4可测试性强"&gt;4）可测试性强&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Reducer 是纯函数，易于单元测试，保证业务逻辑可靠&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="13-不选-mobx-的考虑"&gt;1.3 不选 MobX 的考虑&lt;/h3&gt;
&lt;h4 id="1隐式依赖难以追踪"&gt;1）隐式依赖难以追踪&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;MobX 的自动依赖追踪机制带来状态变化的隐式性，可能导致调试困难&lt;/li&gt;
&lt;li&gt;团队成员对响应式原理不熟悉时，维护成本升高&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2状态变化不够可预测"&gt;2）状态变化不够可预测&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;MobX 允许任意地方修改状态，可能出现难以预料的副作用&lt;/li&gt;
&lt;li&gt;不利于实现严格的状态管理和权限控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3社区规范和中大型项目生态"&gt;3）社区规范和中大型项目生态&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Redux 生态成熟且社区规范丰富&lt;/li&gt;
&lt;li&gt;MobX 在某些复杂场景下不够透明，团队风险较大&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="14-常见误区或面试陷阱"&gt;1.4 常见误区或面试陷阱&lt;/h3&gt;
&lt;h4 id="-误区一认为-mobx-性能一定优于-redux"&gt;❌ 误区一：认为 MobX 性能一定优于 Redux&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;实际性能差异因项目而异，合理使用 Redux 也能实现优秀性能&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="-误区二redux-代码一定繁琐难写"&gt;❌ 误区二：Redux 代码一定繁琐难写&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;现代 Redux 工具（如 Redux Toolkit）极大简化开发体验，减少样板代码&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="-误区三认为-mobx-是魔法不需要学习状态管理原理"&gt;❌ 误区三：认为 MobX 是“魔法”，不需要学习状态管理原理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;响应式原理本身也需要深入理解，否则容易导致维护难题&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-9bdd9b86d8fe"&gt;2. 项目中提到“首屏加载优化1.5秒”，具体如何实现&lt;/h2&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;首屏加载优化核心在于减少首屏资源体积和请求数量&lt;/li&gt;
&lt;li&gt;结合 SSR/SSG 预渲染，缩短白屏时间&lt;/li&gt;
&lt;li&gt;动态拆分代码，懒加载非关键资源&lt;/li&gt;
&lt;li&gt;充分利用浏览器缓存和 CDN&lt;/li&gt;
&lt;li&gt;监控指标涵盖 FCP、TTI，持续迭代优化&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;&lt;strong&gt;理解首屏加载的定义及关键性能指标（如 FCP、TTI）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;掌握多种前端性能优化手段，涵盖资源、网络、渲染等层面&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;能结合具体技术和业务场景，说明优化实施细节&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;理解优化过程中的权衡与监控方法&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二参考答案-1"&gt;二、参考答案&lt;/h2&gt;
&lt;h3 id="11-首屏加载的概念与性能指标"&gt;1.1 首屏加载的概念与性能指标&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;首屏加载&lt;/strong&gt;：用户打开页面到看到页面主要内容（首屏内容）完整渲染的时间&lt;/p&gt;</description></item><item><title>阿里巴巴-社招-1年 · 第 1 轮 · 一面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-97/</link><pubDate>Mon, 28 Jul 2025 11:47:07 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-97/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← 已是第一轮 · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/"&gt;返回本次面经&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-61/round-98/"&gt;第 1 轮&lt;/a&gt; →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; Webpack与Vite、事件循环、跨域通信&lt;/p&gt;
&lt;p&gt;本轮共 16 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-80619f2d22f7"&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-8eccdcf5f029"&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-97e442c116a5"&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-ff0b3dbd2346"&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-78a32c9021bc"&gt;5. webpack 的 plugin 了解吗&lt;/h2&gt;
&lt;h3 id="题目要点-4"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plugin 是 Webpack 扩展机制，贯穿构建全过程&lt;/li&gt;
&lt;li&gt;核心结构是类 + &lt;code&gt;apply(compiler)&lt;/code&gt; + Tapable 钩子&lt;/li&gt;
&lt;li&gt;常见生命周期钩子：&lt;code&gt;compile&lt;/code&gt;、&lt;code&gt;emit&lt;/code&gt;、&lt;code&gt;done&lt;/code&gt; 等&lt;/li&gt;
&lt;li&gt;可用于注入变量、分析构建、生成资源、操作产物等&lt;/li&gt;
&lt;li&gt;熟悉 compiler 与 compilation 的概念&lt;/li&gt;
&lt;li&gt;可结合实际项目经验举例说明插件使用场景&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;
&lt;p&gt;&lt;strong&gt;是否理解 Plugin 在 Webpack 中的作用和工作机制&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugin 是 Webpack 最核心的扩展机制之一&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;是否掌握编写 Plugin 的基本方法和生命周期&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;了解 &lt;code&gt;compiler&lt;/code&gt;、&lt;code&gt;compilation&lt;/code&gt;、钩子（hooks）等概念&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;能否结合实际项目场景说明使用插件的案例和目的&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>