2020暑期/日常实习面经 - 字节跳动

基本情况:

本人帝都某211研二非科班在读,2.5年学制。 非科班,自学前端不到一年,从2月底开始复习准备暑期实习,3月底开始投递,经历了腾讯、阿里、字节、百度的前端实习生面试,简要情况:

1. 腾讯:两轮被刷kpi(投递较晚,一定要尽快投递!!另外diss部分腾讯面试官的面试态度,理由有很多,这里不再多说,经历过的小伙伴都懂)。

2. 阿里:流程了一个月,至今还在“面试中”,一直没有三面,问内推人都无法得知二面结果。多个同部门面试完HR的小伙伴至今没接到OC,还是因为自己太菜。(部门选择很重要,多打听打听,不要海投、盲投!!!)

3. 百度:半天完成所有技术三面,问题比较偏基础,要在自我介绍和简历中体现长处,引导面试官去深挖,挖到最后可能会发现面试官也没你了解的深。五一假期接到OC电话,百度APP移动研发部门,toC业务,部门挺核心,据说日常加班11点。

4. 字节:面试流程快,面试体验极佳,在字节的面试中,才能感受到面试也可是“技术交流”,从面试体验和面试水平也可以看出各厂的企业文化和技术水平。5.6日前给结果,Data-广告部门,toB业务,给广告商提供平台。

字节的面试印象比较深,其他厂的面经没有太大的参考价值,也就是基础+项目,跟牛客的其他暑期实习面经贴差不多,在这里就直接重点介绍下字节的面试过程、部分题目和面试特点,供想去字节的前端小伙伴参考,如有言论不当,还请见谅。

4-15日字节约面试:

本来自己准备春招暑期实习面试就晚,4月中旬才在牛客上找人内推了日常实习(字节的暑期实习和日常实习本质相同,区别不大),不抱任何希望,甚至都想撤回投递。突然接到HR小姐姐打来电话约面试时间,表示很懵,都不知道是之前投的哪个,本来约当时的周四/周五面试,HR小姐姐直接跟我商量约下周一视频面,也是想让我多点时间准备,甚至还给我发前端实习生面试重点(虽然之后也没用上),体验非常nice,对我来说也很关键,给HR小姐姐比小心心。

4-20日字节一面(1h20min):

Data架构组的一个帅气时尚的小哥(莫名觉得像UI),是在家里远程面试的。

1. 自我介绍:

答: 一定要事先准备好,总时长不要超过两分钟。基本信息说明学校和学历就行了,重点是展现你的优势,如学业成绩、岗位相关学校经历、岗位相关大赛经历、项目经历、实习经历、个人博客等。别说你现在感觉自己没有优势,仔细挖掘肯定有,如果真的没有,那就停止你的“牛客面经大厂速成之旅”,老老实实的打好基础、找项目练手,或者找个难度小点的小厂实习,去增加你的优势。

2. webpack打包过程:

答:webpack原理相关的基本操作,重点在于理解webpack的意义和作用。

3. loader和plugin区别:

答:我从二者的差别,比如本质、作用时间点、作用特点、执行顺序等等进行了阐述。

4. 如何写一个loader / plugin:

答:我根据上一问的回答进行展开,详述了二者的作用过程,然后说了一下二者的实现思路,然后就是两个人一起讨论了loader的实现过程对,没错就是一起讨论,氛围极好,像跟一个学长讨论技术问题一样,自己的热情也被调动了,让面试氛围不会那么紧张。

5. 详细说一下babel的工作过程:

答:代码拆分,token流,AST解析树,巴拉巴拉巴拉。。。因为对ast解析了解不够深入,没有展开回答,但面试官点点头,说他已经得到他想听到的答案了。

6. 讲一下React的虚拟DOM对象和虚拟DOM:

答:我从React的渲染过程开始回答,从JSX讲到Fiber,巴拉巴拉巴拉。。。。。自己对日常整理的React原理相关的问题进行了“线性”的梳理,不是简单的一问一答,所以能比较清晰明确的阐述各个过程(React渲染过程、合成事件触发过程、批处理机制过程等),且各React原理之间是互通的,总能在相关问题上找到关联处进行拓展/深入阐述,从而体现自己对原理的理解,而不是死记硬背,建议这块通过看源码辅助记忆,这点很重要,也很加分,因为我从面试官的表情里看到了赞许。

7. 说一下虚拟DOM对象有哪些属性值?

答:一开始大脑突然短路,只记得$$typeof(React元素类型标记、Symbol值、防止XSS攻击),后来巴拉巴拉typeof的作用的时候想起来key值、type值等等等,然后对他们的作用进行了阐述。这也得益于面试官营造的极好的面试氛围,如果过于紧张,很可能是想不起来其他属性的。

8. 代码题:

① 根据要求写Promise异步代码 / promise 应用层考察,判断打印顺序 (二选一)

② 二叉树遍历

③ 二叉树最大深度

9. 反问:对非科班转行学习前端有什么建议?对自己在这行缺乏自信,间歇性怀疑自己

4-20日字节二面(1h40min):

穿着格子衫有绝对气场的大佬,但却“和蔼可亲”,也是在家里远程面试的。


1. 自我介绍

2. 讲一下在公司实习的某个项目,做了什么重要的事:

答:解决了几个贼坑的bug(涉及快应用框架底层渲染)、webpack配置优化(10s→2s)、公共组件封装/优化

3. 讲一下怎么解决项目中解决的最大问题:

答:开发、发现bug、debug、解决bug、找原因、与同事沟通、写复现Demo、记录总结

4.在项目中做了哪些webpack配置优化:

答:css压缩、图片压缩、webpack缓存等等,因实习项目比较小,也都是比较简单的处理。

5. loader与plugins的区别,第二次被问:

答:这次把整个webpack的打包过程说了一遍,从Complier编译对象的初始化到文件列表输出,在中间穿插了loader和plugins的一些要点,webpack的API,发布订阅,依赖关系图等等。(面试官:嗯,这方面没问题,那就接着往下)

6. 为什么转行干前端?

答:对编程的热爱 + 个人价值观 + 研究生阶段的机缘巧合 + 师兄影响

7. 说一下项目中的“登录校验”过程

答:cookie/session这一套

8. 无cookie的“登录校验”怎么实现?

答:一开始以为出题的目的是考察cookie导致的一系列安全问题,所以说了token、localStorage、axios请求/响应拦截等等。后来才明白面试官的重点是“不使用任何存储方式来实现登录校验”,然后我说可以通过url传递。 然后面试官开始说JWT方案,Refresh Token ----> OAuth 2.0 (OAuth认证只听过,没接触过,二面完后立马补上,推荐阮一峰老师的入门博客)

9. 代码题:

答:也是一个场景设计题,面试官自己根据Node中的某个常见处理延伸的,让我用非伪代码实现,涉及异步 + 柯里化。

10. 反问:对非科班学习前端的建议?对我个人的建议?


4-29日字节三面(30min)+ HR面(30min):

发量茂盛且发型柔顺飘逸、知识的广度和深度都是绝对的、面试过程中学到很多技术和非技术上的东西。

1. 快应用的特点(之前公司实习的时候用的技术栈主要是快应用)

2. 快应用和小程序在渲染上的区别

3. 详细说一下快应用的native渲染,小程序的webview渲染 ,是如何实现的

4. 从产品角度分析快应用和小程序

5. 简历中提到了three.js,都做了些啥

6. redux流程

7. redux中dispatch原理

8. 如何实现一个redux

9. 反问:对非科班学习前端的建议?对我个人的建议?



HR面就是常见问题了,比如为什么转行,自己的优缺点,老师和同学对你是怎么评价的,最有成就的一件事,为什么想来字节跳动,你希望字节跳动能带给你什么。。。我希望大家不要也不必事先准备这些问题,HR都不是好糊弄的,不是你提前背一背喊喊口号就能过去的,而且每个人的情况也大有不同,重点还是表达出自己的真情实感吧,思路清晰就行。

总结:

1. 一面上来就问原理,基础问题基本不问,不过这也都是现在大厂前端面试的基操了,相信大家也见怪不怪了。但是不是为了考察原理而问你原理,而是考察你对它的深度程度,对整体设计思路的一个把控,这都是没办法提前准备的,面试中的很多话都是平时学习过程中的一些思考,是需要脱离原理本身,对其设计有个宏观的视角和认识。

2. 二三面的问题就有时候在天上,比如考察你的产品思维;有时候在地上,比如直接问redux中的某个api的实现。

3. 根据个人情况/经历的不同,面试问题的差异就大,所以一定一定一定要重视简历和自我介绍。比如因为自我介绍中提到了看过react、hooks、redux等源码,说构建过程的时候也把发现的redux中的一些问题和解决方案说了,所以才更深入的问我如何实现一个redux。

4. 我觉得做得好的地方就是:对基础知识的笔记积累 + 对原理、源码、项目(无论大小)的换个人认识和深刻理解 + 面试技巧。

心得:

己当初选择入坑,除了导师选择上的机缘巧合和亲师兄影响,最主要原因还是对编程的热爱和个人价值观,从大二开始接触编程,通过单片机入门,跟着老师做过大创项目,毕设做了个智能车,都取得了不错的成绩,感受到了编程带来的成就感和满足感,这是其他行业很难给予的,而且互联网行业在现阶段的创新力和活力都是远超过传统行业,自己也想在年轻的时候拼一把吧,不给自己留遗憾。所以才做了这个偏赌博性质、不顾后果的选择,甚至就算是现在我都不知道我当初所做的选择是不是真的正确。我是从去年5月开始集中学习的,之前课业多,都是零碎时间看看书和视频,然后在9.10月份找实习,拿到了爱奇艺、百度、**的offer,最后选择了有成熟前端团队的**实习了三个月,在实习过程中,真切的认识到自己与科班差距,每天在完成自己的任务之后,就自己充电,日常10点以后出公司,经常做最后一班地铁,拼了命的想弥补差距,因为忍不了自己这么的菜。就算是在准备暑期实习面试的过程中,2 7 7的复习模式也不能避免在一开始的不顺利,有过一段低谷期,开始怀疑自己,怀疑自己当初选择的正确性,怀疑自己的学习能力,怀疑自己适不适合干这个,怀疑自己是否足够热爱。。。但尽管这么难,尽管我想过放弃,但我还是选择了继续坚持下去,骨子里的不服输吧。再次特别感激字节,就是在低估期的时候接到了字节的面试邀请,在跟字节面试官的交流过程中,感受到了他们对我的肯定,让我有了一点自信和再坚持一下的理由。

摸着良心说,我跟大多数前端小菜一样,想都不敢想能有啥胆去面字节,毕竟是年轻程序员成长的天堂,当初也是各个厂海投加上内推人的极力劝说才投的,真是没想到最后能顺利通过三面,或许这真的就是“黎明前的黑暗”吧。这条路上的人太多,优秀的人大把有,如果你想要得到,就得付出比别人更多的努力,承受比别人更多的东西。最后写下这个“心得”,也是希望给同样遇到困难、怀疑自己的小伙伴们打个气,因为我经历过,对于长期的压力和困难来说,什么鸡汤都没用,靠的就是早已麻木的坚持。同样在奋斗路上的小伙伴们,尤其是非科班的,只要你认定了这条路,明确了这个目标,请务必一定要坚持到底,再多坚持一点点或许就能看到光了。

有交流意向或者相关疑问的小伙伴欢迎私信我交流,有问必答。



最后:

第一次写牛客,也是个回馈,从5.5日写到了5.6日,可见真心。所以在此祈求一波,希望今天能接到字节爸爸的oc电话!!!



#字节跳动实习##字节跳动##实习##前端工程师##面经#
全部评论
还愿,已oc,offer立马到邮箱。后边的美团也不打算面了。 历经两个月,无数次自我怀疑,成功挺过“黎明前的黑暗”。 选择字节最重要的原因还是面试官对我的肯定吧。 新的征途开始了,虽然有很多未知和压力,但还是想挑战下自己,肉蛋葱鸡!!!! 小伙伴们加油冲啊!!!!
6 回复
分享
发布于 2020-05-07 13:42
自顶。顶。。顶。。。顶。。。 再求一波offer,字节爸爸快给我打电话吧!!!
5 回复
分享
发布于 2020-05-06 01:27
淘天集团
校招火热招聘中
官网直投
想问以下你是怎么准备的?我也是在自己准备前端,看你的面试问题真的都很细节, 我虽然已经看了很多东西了, 但是感觉还是漏掉了很多。
1 回复
分享
发布于 2020-05-08 11:14
对于长期的压力和困难来说,什么鸡汤都没用,靠的是早已麻木的坚持。 这句话,真不错,深有同感!
1 回复
分享
发布于 2021-03-19 00:56
太强了 我刚学前端还不到半年。我面的字节一二面一共2小时20分钟吧 基本是基础加上做题 两面做了七道算法加手写js 还好都做出来了了。 请问你面试的时候做算法了吗。 后天三面感觉我过不了,源码都没怎么研究 不知道现在是去补源码还是复习基础
点赞 回复
分享
发布于 2020-05-06 05:29
我字节29号三面完的,希望今天能hr面
点赞 回复
分享
发布于 2020-05-06 08:28
希望今天下午自己三面顺利!!!蹭蹭好运!!!
点赞 回复
分享
发布于 2020-05-06 10:50
三面结束后如果被刷了会有人告知吗?还是直接就没人理了🙁
点赞 回复
分享
发布于 2020-05-08 19:06
许愿明天hr面,沾沾喜气
点赞 回复
分享
发布于 2020-05-14 22:14
三面还会手撕算法题吗?
点赞 回复
分享
发布于 2020-05-14 22:39
呜呜呜,楼主太强啦,我后天三面,现在很慌,不知道该复习啥
点赞 回复
分享
发布于 2020-05-18 23:08
这么难吗,还是日常实习。。我看官网上的要求好像没那么高。。https://jobs.bytedance.com/campus/position/7067055406754269476/detail?referral_code=GC48H2Z
点赞 回复
分享
发布于 2022-03-11 09:02
字节跳动企业应用前端实习内推:https://job.toutiao.com/s/N2m8hSD,目前部门hc多多,面试流程快,已内推两名春招同学。校招:https://jobs.bytedance.com/campus/position/7057014489909299487/detail,我的内推码:G1SWS8D
点赞 回复
分享
发布于 2022-03-14 20:51

相关推荐

40 167 评论
分享
牛客网
牛客企业服务