热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自学转行3年经验,终入职阿里!大厂T6,年薪40w+,碰到这样的面试题一样心虚…

背景 同事背景渣渣,较晚入行,在一家公司稳定了三年,从一个前端白纸到如今乱涂乱画,已成雏形。2020 年年末,他离职了,因为深刻意识到自己有多 “菜”,想专心花点时间提升自己。经过亿点时间的调整竟

背景

同事背景渣渣,较晚入行,在一家公司稳定了三年,从一个前端白纸到如今乱涂乱画,已成雏形。2020 年年末,他离职了,因为深刻意识到自己有多 “菜”,想专心花点时间提升自己。经过亿点时间的调整竟入职阿里了。所以我赶紧找他分享入职大厂的面试题……

阿里四轮技术+一轮 hr

一面 (60min)

自我介绍主要围绕几个点:个人信息、最近的公司职责和涉及的业务、主要技术栈、我擅长的技术、项目介绍(STAR:项目背景、任务、你的工作内容、项目亮点、结果你实现了什么学到了什么)、最近在做什么、结语。

简历里写了两个技术栈,所以讲讲 vue 和 react 的区别和联系吧主要围绕几个点:两者的模板渲染、两者的虚拟 dom、diff 差异(vue2、vue3、react 16)、react fiber 能解决什么问题、vue2 的响应式原理和 vue3 的响应式原理;vue 关于 Proxy 与 Object.defineProperty 的区别;两者的批量更新,还有路由差异、常用的优化手段、怎么进行数据通信、讲点新鲜的内容:新发布的 vue3 有什么特性、最后总结,谈谈两者的如今的生态……

项目的性能优化主要围绕几个点:项目技术栈的性能优化,比如使用 react 可以讲避免重复渲染的一些手段,比如 electron 可以将如何更接近原生;针对浏览器做的优化(你需要了解浏览器相关原理,比如缓存/存储、代理、SSR 等,针对渲染引擎的工作内容想到的优化,比如解析 css 解析会影响 dom 渲染、合成优化减少回流重绘、web worker、Event Loop 等);打包工具提供的优化,特指 webpack;针对具体的页面做的优化,比如首页该做什么,首页最新指标;最后讲讲应用场景、我的项目里用到了哪些方法,针对中等项目、大型项目的性能选择。PS:性能优化的内容如果认真讲,肯定两/三个小时下不来,因为性能优化没有终点,我面试时也只想到了上面的这些……

了解我们的产品吗?我提前 google 了团队的业务项目,之前也看过一些类似产品的文章,我结合自己的项目经验,说了一点理解,就几句话。

你想问什么?我问了本次的表现,了解了一些团队项目的工作内容、项目招人的背景、对于后续面试该做什么准备。一面没碰到手写题,都是很基础的问题,整体相对轻松。

二面 (60min)

晚上 9 点半的面试,面试官应该刚忙完,上来直接问业务,全程业务……权限页面的细节:

各个模块、按钮怎么设计权限;

分角色、分地域怎么设计?

要加个表头,还要控制展示的顺序,在各个浏览器表现一致,怎么设计?说出所有方案,想到什么自由发挥了……

聊到本地存储,问:localStorage 在各浏览器、移动端浏览器的 size 一致吗?

其他:

这一段是我简历的项目,略过……

继续聊阿里的产品,简单使用后,请提出几个可以优化的地方?

啥也没透露,让你预测下这款产品的接下来的方向,如果是你,你会着手哪个方向,并且凭啥让你来干,说下你擅长的……

正式讨论产品,大家都在做什么,团队协作的情况,公布接下来的迭代方向,针对的人群,目标……

照例闲聊,拜拜。

插曲:中间出现两次突然挂机,当时我的感觉就像过山车,从高空滑向低谷,整个心都是 ——某可爱漂亮的央视记者—— 的。

三面 (60min)

这一面是笔试,哈哈,我复习了很多手写题,结果是完全与三面的考题完美岔开,没有交集,emmm……,好在并不难……题一:

业务四面 (35 min)

周末,人在梦游,刚下航母,就激灵灵接到电话,人还是糊的……

跨端的原理?我讲了几个例子:taro、uni-app,顺便提了 flutter、react native、小程序等的架构,具体怎么设计的。

动态表单能够运用在什么场景?我举了 7、8 个例子。

移动端适配相关的问题,应用场景。

我公司的业务讨论,是否了解过竞品等等,这里略过。

hr 五面 (60 min)

对于你项目的竞品有了解吗?说一下

你的项目与竞品相比,好在哪里,有什么优势?

下班后都在做什么,问的都是过往经历,问的太详细了,让人不舒服。

如果与同事发生了意见的不一致,你会如何解决呢

现在针对我们的业务,急需增加一个新的模块位置,你会怎么设计?数据怎么展示……

没错,hr 还问技术相关的问题。

快手二面挂

一面(60min)

自我介绍

react 与 vue 的技术栈对比,说下区别

B 端遇到的最复杂的数据结构是什么

快速实现 [1, 2, …100],所有你能想到的解

数据展示的优化、数据截取和处理

实际场景中,哪些地方应用到了堆、链表、多叉树结构

es6 及 es6+ 的能力集,你最常用的,这其中最有用的,都解决了什么问题。

GC 相关问题:es6+ ,eventloop 中涉及 GC 的部分。

数组 flat 展开的各种解法,数组 map 应用

讲下 V8 sort 的大概思路

Promise 并发限制

手写 Promise.all

省市区拼接查字段,要求 O(n) 内解出

中台的理解

讨论了下业务

个人发展方向

一面的问题循序渐进,前面为后面铺垫。

二面(60min)

项目的复盘优化

说下业务上最复杂的点

node 限流算法

最有效的性能优化方法

你提到性能指标,能说说都是怎么计算的吗?比如 LCP,FID

算法题:数组全排列[1]

中台业务讨论

离职原因

猎豹移动三轮技术面+一轮 hr 面

技术一面 (60min)

input type 都有哪些类型,还记得其他 attrs 呢

css 的伪类和伪元素有哪些?有什么区别?

在一个未知宽度的父元素内如何创建一个等边正方形

异步加载 js 会阻塞什么

数组所有方法都有哪些?findIndex 的参数说明

vue 和 react 的异同

如何优化 vue 框架,注意是优化框架

vue 和 react 的 jsx 使用

id key 真的能使列表比对更高效吗?举个反例?

webpack 优化的手段

tree-shaking 怎么配置,如何 避免 tree-shaking?

electron 和小程序遇到什么坑?

说下微信自动化测试

es2015 到 es2020 的新特性,你最常用什么,给你收益最大的。

weakMap 和 Map 的区别,weakMap 原理,为什么能被 GC?

如何干扰 GC ?

webpack import 动态加载原理

知道 webpack 中的 devTool 吗?

如何进行错误定位和数据上报,线上异常的处理

为什么有时候配置了 webpack caching,chunk 还是更新了?

讲讲浏览器和 node 的 eventloop

微任务后面还有哪些?requestAnimationFrame 是怎么调用的?requestAnimationFrame 帧内总是有任务吗?分情况说下。

帧数怎么计算?

了解网络安全吗?

如何避免数据被 iframe 截获

说下状态码

说下 304,什么情况会 304?协商缓存的头部字段?

你学习的渠道

工程化实践的看法

业务二面 (60min)

大致内容:业务交流,工程化实践交流、猎豹前端在做什么,资源有哪些,他们的业务是偏 C 端的,未来的方向、发展等等……这一面很轻松,想到什么说什么,当然逻辑性肯定要有的。

业务三面 (70min)

这一面的面试官是猎豹移动的技术负责人。

项目是如何收集问题的,用户量如何?

性能问题如何排查,你们项目的指标,具体数据、截图发给我看看……

模块化是怎么实施的?

目录结构讲下

一些功能是自研还是使用第三方工具,叫什么名字,怎么使用 ?

疯狂问测试相关的内容,单元测试和组件测试是怎么做的、代码覆盖率多少,如何权衡测试原则,系统测试相关的内容,一些细节上的问题怎么处理,等等,要说出个 1、2、3 来 ?

项目亮点/难点,怎么解决 ?

复盘,整个项目总结,让你重新设计这套系统你会怎么做 ?

工程化实践和深入的一个点

团队氛围,有什么好的点可以说下,有什么不好的点也说下……

中台具体集成了什么功能 ?你都做了什么 ?

你是如何进行技术突破的,又是如何学习的 ?

对未来的规划

有什么问题想问?我随便问了几个问题过渡,然后抛出最重要的一个,厚着脸皮让大佬指出我的问题(PS:这是我面试的目的之一,当时几个面试进度属猎豹最快了。别人眼中的我,在前端方面具体是怎样的感官 ?我一直很好奇。不是每个人都有一个对自己清晰的认识的,既然自己想不出来,那就通过面试吧)。

这次面试暴露的点:项目的总结、全局的把控、自我复盘都是有所欠缺的。另外不要给自己挖坑,有时候知道一些概念但不知道具体的实操和原理,还是别说了。当时,关于测试方面的问题,考官一直假装不懂,老是问:真的吗?这个我没做过,你给我讲讲吧?我原本没错的内容也被误导了,emmmm……

hr 四面(30min)

常规问题,没有阿里那么严格。

讲讲前任公司

离职原因

加班的看法

猎豹的福利

有没有其他 offer

balabala……

字节跳动三面挂

技术一面(60min)

刚开始就问我的项目,问的很详细。

webpack 提高构建速度的方式

loader 输入什么产出什么 ?

webpack 原理

webpack 动态加载的原理

webpack 热更新

如何写一个 webpack plugin

AST 的应用

如何解析一个 html 文本,还是考 AST

babel 原理,怎么写 babel 插件

如何设计一个沙盒 sandbox ?

小程序的 API 做了什么处理,能够做到全局变量的隐藏,如果是你,怎么设计 ?

基础题考闭包的,我讲对了思路,结果没做对。

实现颜色转换 ‘rgb(255, 255, 255)’ -> ‘#FFFFFF’ 的多种思路。

提供一个数字 n,生成一组 0~n-1 的整数,打乱顺序组成数组,打乱几次,如何能够看起来平衡,说出你能想到的所有方法。

leetcode 239[2]

随便问环节,我问了考闭包的那道题,我没有做对。

这一面我准备了很多东西,结果又完美 miss。

二面技术 leader(60min)

业务,业务,还是业务,项目复盘有没有更好的解决方案。

如何处理一个重大事故 bug

监控体系

虚拟 dom 有什么好的地方?框架为什么要设计虚拟 dom?

webpack 的缺点,让你设计一个新的构建打包工具,你会怎么设计?

在线文档编辑,如何处理两人的冲突,如何展示,考虑各种场景

excel 文档冲突高级处理,文章冲突呢?是上个问题的深化。

基础题

基础题:leetcode 300[3]

随便问环节

三面业务 leader(60min)

算法题:从数组 [1, 5, 8, 10, 12] 中找到两个数和为 9,返回 [1, 8] 这样的结果。

算法题:从数组 [1, 5, 8, 10, 12] 中找到三个数和为 19,返回 [1, 8, 10] 这样的结果。

算法题 leetcode 300[4]:给定一个无序的整数数组,找到其中最长上升子序列的长度。

针对我的项目提问,大概 40 分钟吧,脑子乱。

没有随便问环节,我差不多有预感了。

是的,我的字节面止步于此了,这一面算法没有难倒我,基本上看到题目我就能想出解法。三面挂的原因是我简历上的项目太简单了,你想要真实,我给你真实,可惜你看不上这些真实(这次面试我的简历没有准备好是一大原因,各位,我就是你们的前车之鉴啊!)………

个人经验分享

这个应该是各个面经的保留节目了,我也在此留下笔记。主要分两个方面来讲,一个是前端技术的学习,另一个是面试当中需要注意的点。

准备阶段

看源码,整理 Vue 与 React 框架的所有横向对比,包括渲染原理、虚拟 dom、diff、patch、fiber、批量更新,手写响应式,框架用到的模式、设计思想,性能优化,相关生态技术等等。

webpack 原理、热更新原理、动态加载原理、常见 plugins、loader、常见优化,怎么打包、怎么分 chunk,怎么写一个 plugins,生命周期,微内核源码等内容,以及 rollup、gulp 的使用、应用场景。(我记得有一面一个考官对我说,你对整个研发流程都很清楚,但都并不深入,比如一个 webpack 打包分包的依据怎么判定……emmmm,我倒是会,你也不问我啊!)

跨端框架的研究,工程化的梳理,使用的技术栈的坑,移动端的一些实践,面试时额外准备的项目复盘,竞品调查,对方产品的资料,测试系列,还有很多如微前端、中台、serverless、可视化、Wasm 等就不举例了。

除此之外,我也看了很多面经、以及技术文章。

我这里也可以提供一点方向给你:

业务方面的思考和准备[7],你可以去这里看看,见微知著,多发散,一定会有启发

这是我关注的业务大佬:58 沈剑_架构师之路、冴羽、爱笑的架构师

书籍方面:《金字塔原理》,有时间可以抽空看看,不保证有用。

面试阶段

我这里建议:

回答问题前思考一下,虽然不保证有用,但还是要好好履行的。

多面几次,指的不同公司,只要你不嫌累。

在面试某一家公司时,根据前面的面试,尝试推测后续考官会问到的业务的大致范围,或者问内推同学,提前做准备。一般会问:1 你简历上的项目,2 对方部门知名的产品,3 招聘 jd 上的 title。

简单的复盘,保证别倒在同样的问题上。

增加知识的广度,可以引导向别的问题,考官也是乐意听的。

挑个面试的好时间,比如我本人,早上 10 点我的脑子无比灵光,说话都带着沉稳富有磁性……晚上 7 点后,就会莫名紧张,声音分贝提高几个点略微沙哑,这个真的因人而异。有时候沉稳不一定是好事,紧张反倒促使你偶有妙语和想法,当然也可能搞砸。

找几个方法迅速调整好你的精气神,在前面基础学习的时候也可以用上。

如果你够厉害,可以适当暗示和引导面试官问些你擅长的,千万不要被牵着鼻子走。

最后,拜佛烧香,求个好运。人和人的差异,在于认知和思考力的差异。假如你一时之间思维没有一个质的变化,不如求个好运。没有一个好的运气,上面的建议可能通通都不好使,毕竟社招面试内容本身就是不稳定的,有的重技术、有的重算法、有的重业务、有的重学历、有的重眼缘……

如何坚持学习?

这一块算是补的,我依然只给建议:

如果你玩游戏的话,请放弃游戏,或者戒掉一段时间,直到找到满意工作。

找到你的痛点。

分段学习,制定符合周期的计划。不要逼着自己,否则压力会让你崩溃的。

找点鸡汤,或者去找点你没有但渴望得到的东西。

业务方面,多看点书,多总结积累一些思考方式。

最后灵魂一问:

你的梦想是进大厂吗?你明白的,这需要一点小小的代价。

你是万中无一的奇才?如果不是,那么失败几次是正常的,大家都是普通人,也许只是不 match。

最后

前端面试题我已经给大家打包好了,也不知道这篇面经能够拯救几个娃,相信很多人跟我一样都会有一个进大厂的梦吧。

毕业临近,暑期将至,希望大家都能拿到自己满意的 offer。

需要的可以私信“学习”

自学转行 3 年经验,终入职阿里!大厂T6,年薪40w+,碰到这样的面试题一样心虚...

推荐阅读
author-avatar
伤心脑残猪_940
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有