热的烫手的字节跳动面经

270 阅读6分钟

Ok我们直接进入主题。先来个自我介绍,18年本科毕业,毕业后进入中移子公司做运维,后来转前端,有一年多的前端经验,目前在一家算是明星创业公司工作。从转行到拿到大厂offer这个过程并不顺利,我的技术起点说实在话,算是比较低的,这些后面我有空的话会单独写篇文章。我也面了不少中大厂,字节跳动的面试算是有代表性的,今天先进入字节跳动的面经环节~~

头条面试共四轮,三轮技术面,一轮hr面。整体给我的感知是效率高,体验好。难以想象我大年29还在面试...

一面

先自我介绍下,然后面试官说:“好的,我们先做下题吧”。

1. 手写买卖股票问题 (上来就动态规划,此处用郑爽金句来表达我的心情) 2. 手写Promise.all 3. 看代码输出题 (考的是EventLoop机制)

4. 说下浏览器的缓存策略(从http协议的构建, 缓存相关字段,缓存类型和区别等方面阐述) 5. 了解前端安全吗?(八股文我最熟练了,嘿嘿嘿) 6. es6 和 commonJS 模块管理的区别 7. http和https的区别 8. CSS宽高的变化会引起回流或重绘吗

点评:
一面我记住的大概是这些内容,像第三题那种各种同步,异步代码掺杂在一起让面试者写输出的题平时开发基本见不到,但是主要是考察对Eventloop机制的理解。我后续会收集类似的题目,专门写篇文章来阐述。

二面

二面面试官看起来亲和力很强,上来直呼我的名字,搞的人家暖暖的;中途网络问题信号断了10来分钟,结果多面了我40多分钟接受了快2个小时的技术殴打。

1. 手写题:手写EventHub,手写深拷贝(考虑正则,日期,数组等类型),算法题:移动零 2. 考EventLoop的题目 + 1 3. 说下前端如何做性能优化?(这个其实范围很广,我是从速度更快,资源更少的角度进行阐述的) 4. 浏览器的内存回收机制?如果监控内存泄漏? 5. 紧接着就是一道内存泄漏的题,然后如何改正才能避免内存泄漏? 6. 你在项目中做了哪些性能优化?(根据简历问的,我解决了我们在线课堂客户端CPU占比高的问题,这个过程也可以单独写篇文章) 7. 接上题,什么情况下会引起回流和重绘?浏览器的渲染机制是什么样的? 8. 如何对项目进行性能分析,需要关注哪些指标?你是如何制定这些性能指标的? 9. 你擅长什么技术呢?

三面

不知道是不是面试官比较害羞我没看到他的脸。

1. 说下你对ELK做的优化 (根据简历问的,elk一般用于搭建海量日志存储,查询和分析平台;我从性能参数,集群层面,架构层面进行了阐述) 2. 优化结果如何,绝对的性能指标呢? 3. 问个简单的问题哈,elk分别是什么? 4. 在项目中的角色是什么?项目中存在哪些问题,你是如何解决的 5. 做pm的职责是什么,项目管理流程是什么样的? 6. 有没有从0开始做过项目?有没有进行技术选型? 7. 有什么已经落地的成果,攻克了哪些难点? 8. 手写一个 webpack 的plugin 9. 最近在看什么书?我说红宝书。那你用generator 模拟实现个async await (7,8题我只了解大概原理,并不会写hhh) 10. 看过vue源码吗?描述下diff的原理(好家伙,我直接好家伙,还问了diff在哪个文件下) 11. 算法: 添加最少字符构造回文数串 (这个如果没写出来就没这篇面经了)

点评:
可以看出来,一二面重基础(由于我面的岗位对性能要求极高,所以也问了很多性能优化的问题)。而三面的表现和工作经验直接影响到最后的title是不是“高级”。一定对自己的简历了如指掌,像elk这个之前没一个人问我的,我基本没准备,还好之前总结过答上来了,不然就是减分项。另外,如果你有跟岗位无关的工作经历,不一定是减分项,重要的是在之前的岗位有的积累和思考。我毕业第一份工作是运维,所以对内存,cpu等机器指标很敏感,也是我能发现问题解决问题的重要原因,也是简历中的一个亮点。

说点个人感悟吧

1. 基础,基础,基础。如果基础不好,很难过中大厂的前两关;很多人说前端东西太多了,学不过来,其实前端东西再多,只要掌握其中的核心就够了。所有的框架都是从最基础的js衍生出来的,只要基础扎实,上手其他框架很快的。 2. 刻意练习。我不是什么技术大佬,擅长的领域偏文科,在编程这块至少我是没任何天赋的。对于算法题,只能自己多练了。 3. 向优秀的人学习。像我朋友圈的公众号号主们,都是我学习(白嫖)的对象,感谢你们hhh;还有我之前的领导,我身边的同事等等,他们身上有很多闪光点值得我学习。 4. 保持平常心。大厂是个围城,相比于在大厂工作,更重要的是明白自己真正想要什么,然后慢慢接近这个目标就好了。人生就像心电图,是在波峰波谷中向前的,但是这个波浪的大趋势是波动向上还是波动向上,还是在于自身。

联系我

因为很多小伙伴需要面经,所以我就写出来做为“Monster Talk”公众号的第一篇文章了。我做公众号的目的不是盈利,一方面是满足个人的表达欲,另一方面是希望能和更多的人交流进步。我主要的创作内容是:技术,读书,理财(投资)和产品思考,这些是我感兴趣和长期投入的方向。个人认为我知识面比较广,意味着我可以分享一些你可能没接触到的领域;但是我经验不多,深度不够,意味着我们有很大的成长空间。最后希望和大家一起进步!感兴趣的可以关注下Monster Talk!