校招 未知部门 / 前端 / 多轮

[面试日期] 2024-04-26 [面试时长] 未知
[学校背景] 香港中文大学 | 未知 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>【25实习】阿里云前端面经</h2> <h2>timeline</h2><ul><li>4.8 投简历</li><li>4.9 测评</li><li>4.12 一面(挂)</li><li>4.17 一面</li><li>4.19 二面</li><li>4.26 hr面</li><li>5.9 三面</li></ul><h2>2024.4.12 阿里巴巴 阿里云 一面</h2><ol><li>自我介绍</li><li>遇到过最大的挑战与困难(发现项目一多几乎每次都会问到这个问题)</li><li>对着项目一个个问</li><li>Vue 和 React 的区别</li><li>介绍常见性能指标</li><li>介绍一下 SEO</li><li>怎么实现 Ajax</li><li>除了 SSR 还有什么方式可以提高 SEO</li><li>怎么实现 SSR,为什么要在后端起 node 服务</li><li>约了一个小时后的笔试</li></ol><p>反问:</p><ol><li>业务与技术栈(面试官介绍自己负责的业务、部门业务的所有方向)</li></ol><p>笔试:</p><ol><li>一道 HTML 基础应用题,面了两面已经有点神志不清了,给了半个小时没写完</li></ol><p></p><h2>2024.4.17 阿里巴巴 阿里云 一面</h2><ol><li>实习里印象深刻的项目</li><li>对着项目猛猛问</li><li>虚拟滚动列表实现思路</li><li>介绍 React 常用 Hook</li><li>React 函数式组件相较于类组件的优势</li><li>React 组件间通信方式,ref 怎么用</li><li>实习时间</li></ol><p>题目一:数组打平</p><pre>// [1, 2, [3, 4, [5, 6]]] =&gt; [1, 2, 3, 4, 5, 6] function flattrn(arr) { return arr.reduce((curr, next) =&gt; { return Array.isArray(next) ? [...curr, ...flatten(next)] : [...curr, next]; }, []); } </pre><p>题目二:设计存储页面/组件内数据和方法的 JSON 格式,并从 JSON 格式转为页面代码,微信小程序 + React 两种格式(感觉是讲项目的时候面试官没太听懂,现场实现下)</p><p>题目三:简单的发布-订阅模式</p><pre>class EventEmitter { events = {}; emit(type, ...args) { const listeners = this.events[type] || []; for (const listener of listeners) { listener(...args); } } on(type, listener) { this.events[type] = this.events[type] || []; this.events[type].push(listener); } } </pre><p>Callback:</p><ol><li>遇到过项目中最难的点</li><li>写过最复杂的页面</li><li>跨表单数据同步怎么做</li><li>设计组件的思路</li><li>项目中大规模使用的组件更新流程</li><li>对大语言模型的了解</li><li>平时怎么学前端</li><li>最近印象比较深的新技术</li></ol><p></p><h2>2024.4.19 阿里巴巴 阿里云 二面</h2><p>最初约的 4 月 18 晚上七点面,鸽了一晚上,19 上午打电话道歉 + 约中午 12 点面,又迟到十五分钟 😇</p><ol><li>自我介绍最近一年的项目和实习</li><li>问项目</li><li>怎么设计虚拟滚动</li><li>介绍 flex 布局</li><li>介绍 JS 里的隐式调用,对象使用双等(==)时触发的方法</li><li>React 的 Hook 为什么不能放判断语句和循环语句里,怎么解决</li></ol><p>题目一:实现<code>increase</code>函数</p><pre>function increase() { let a = 1; const obj = { valueOf: function () { return a++; }, }; return obj; } const a = increase(); const res = a == 1 &amp;&amp; a == 2 &amp;&amp; a == 3; console.log(res); // true </pre><p>题目二:判断循环依赖</p><pre>// isCylic(window) =&gt; true // const o = {}, o.o = o; // isCylic(o) =&gt; true // isCylic({}) =&gt; false const isCylic = (o, set = new WeakSet()) =&gt; { let isCyled = false; if (typeof o === &quot;object&quot; &amp;&amp; o !== null) { if (set.has(o)) { return true; } set.add(o); for (const key in o) { if (isCylic(o[key], set)) { isCyled = true; break; } } } return isCyled; }; </pre><p>问了下用 WeakSet 的原因,能否用 Set、数组实现</p><p>反问:</p><ol><li>部门业务、技术栈</li><li>为什么阿里面试没写过算法题(字节出来的力扣应该都刷过)</li></ol><p></p><h2>2024.4.26 阿里巴巴 阿里云 hr 面</h2><ol><li>自我介绍</li><li>读研相关</li><li>规划</li><li>为什么选择阿里云</li><li>前端和 AI 知识的积累</li></ol><p>反问:</p><ol><li>部门业务</li></ol><p>hr通知五月中上旬全部面完后给feedback</p><p></p><h2>2024.5.9 阿里巴巴 阿里云 三面</h2><ol><li>自我介绍</li><li>对 AI 的了解</li><li>学前端经历</li><li>介绍进程与线程</li></ol><p>题目一:全排列(时间复杂度优化)</p><p>反问:</p><ol><li>后续流程</li></ol><a>#面经#</a><a>#阿里巴巴#</a><a>#阿里云#</a><a>#2025届暑期#</a>
AI 推荐面试题