回馈牛客 字节跳动前端面经(已签~)

随着秋招接近尾声,渣渣楼主回馈牛客网,分享一波字节前端面经
一面:
1、自我介绍
2、自我介绍中说自己看了源码,讲讲看了哪些源码(React、Redux、Koa2)
3、React Fiber架构、调度原理(自己讲了下Fiber树中节点的具体数据结构、任务优先级、代码如何断开和重连)
4、Koa2的洋葱模型实现(这里只讲了下compose和dispatch的实现方式,其实可以再结合Redux中柯里化形式的中间件对比分析)
5、一道宏任务与微任务的题

console.log(1)

setTimeout(() => {
  console.log(2);
  Promise.resolve().then(() => {
    console.log(3)
  });
}, 0);

new Promise((resolve) => {
  console.log(4);
  resolve();
}).then(() => {
  console.log(5);
  setTimeout(() => console.log(6), 0)
});

console.log(7);

// 1-4-7-5-2-3-6

6、题目比较简单,自己说出结果后,讲了下浏览器和Node事件循环的区别,面试官问了下setImmediate的概念
7、HTTP2.0、HTTPS握手过程
8、关于实习项目的一些问题(一些功能的具体实现方式吧,都是自己做过的讲清楚就行)
9、实习中写了个cli工具,有哪些功能,具体是如何实现的(commander.js && inquirer.js)
10、一道算法题

给一个正整数数组和一个数字 n,返回告知该数组中是否有连续序列,和为 n

in:
2,1,3,4,5,6
10
out:
true

in:
1,2,4,5,6
10
out:
false

自己算法渣渣,写了一个 两个for循环时间复杂度爆炸的答案,面试官给了两个他自己的思路:从后往前计算 以及 dp;这里做完觉得自己要挂了,就简单的问了面试官两个问题,没想到面试官让我等五到十分钟继续二面

二面:
由于楼主之前暑期在鹅厂实习,恰好二面面试官也是从鹅厂跳槽过来的,所以这里问了很多项目的问题
1、部门自研框架核心功能以及源码实现(得亏实习看源码的时候做了点笔记==)
2、项目中页面的移动端适配、拉伸比例以及高度缩放等问题
3、项目中的组件定义规范(大家这里可忽略)
4、js中有哪些类数组、es5和es6中有哪些方法将其转化为数组(前端基础,比较简单)
5、实现一个函数,第i次执行输出i

var getNum = (function () {
    let i = 0;
    return function() {
        ++i
        console.log(i);
    }
})();

6、一面面试官说你看过源码,那React setState为什么以及何时是"异步"的
(首先讲了下setState并不是异步的,是为了性能优化进行的批量更新,具体讲了下源码中Object.assign进行的合并,同时讲了下什么时候是同步的,最后讲了下什么是合成事件--事件委托)
7、浏览器的缓存机制以及对应的请求响应头(前端基础,比较简单)
8、算法题:两个有序链表的去重合并,要求时间复杂度和空间复杂度最优且不改变输入数据(剑指offer上有原题,自己在面试官引导下写出来了)

三面:
一面二面都是一个上午完成的,面完差不多中午一点了,所以没有直接面三面。重新和HR约了三面时间--两天之后下午14:00
1、三面面试官说前面JS问得比较多,所以一上来考察我的CSS:实现一个左右布局,左边固定100PX,右边可伸缩,高度沾满整个屏幕。右侧正中间有个长方形,长方形长宽比4:3,长是父元素的50%(这里我直接使用flex布局进行实现,倒是在长宽比这里没写出来,大家可以去掘金上搜搜有相关的解法)
2、css3动画熟不熟(这里实习中遇到过一个动画卡顿的bug,所以结合这个bug顺便讲了下GPU加速,面试官觉得ok,就不再问css问题了)
3、前端自动化工具webpack用过吧,讲一讲工作流程
4、用过哪些loaderplugin(实习写过一个plugin,这里讲了下原理--在特定钩子处写相应逻辑)
5、CommonJS与ES6模块化区别(比较简单,这里讲ES6模块化时想起来实习中用过的Tree shaking,顺便讲了讲)
6、首页白屏优化(讲完后面试官一眼看出只是看过相关文章,没有动手实践过,尴尬)
7、上一个问题讲到了SSR,介绍下具体如何做,浏览器拿到数据后还要做什么吗(缺少实践,答得不好,讲了讲自己的想法)
6、如何学习前端的、你觉得前端有边界吗(讲讲自己对前端的理解吧)
7、介绍了下头条这边的业务,你感兴趣哪块、为什么
8、手头offer情况,能否提前实习

总结
总体感觉自己比较幸运,都不是很难的问题,可能也是看楼主非计算机专业出身吧(本硕985 但都是冷门工科)。
介绍下楼主个人情况,上半年春节在家时对自己未来充满迷茫吧,本硕专业虽不是生环化材,但也不是很好的工科专业,所以决定找工作时转方向。考虑到本科有过一些前端知识,所以三月开始系统学习前端。
当然对于我这种转行的渣渣,前期肯定是备受打击啦,好在自己一步步调整了过来,秋招已拿美团、小米和海康offer,已放弃鹅厂(面到三面,但感觉部门比较边缘,且技术栈不是很匹配,故放弃)、滴滴和pdd(字节真香)。这里不得不说字节效率真高,面完没两天就发offer并有HR谈薪,渣渣楼主目前已签,开始享受最后的学生时光啦:)
最后希望大家都能顺利结束秋招,早日登上人生巅峰~~

#字节跳动##面经##校招##前端工程师#
全部评论
大佬可不可以讲讲怎么学习前端的呀😊
点赞 回复
分享
发布于 2019-10-22 15:44
明天实习三面,前两面比楼主描述的简单多了(主要是我小嘴叭叭反客为主带节奏,把面试官往自己会的地方引导)。感觉实习和校招差距还挺大,希望顺利。
1 回复
分享
发布于 2019-11-30 00:51
乐元素
校招火热招聘中
官网直投
css布局那题,嘿嘿。 <div class="wrap">     <div class="left">left </div>     <div class="right">         <div class="box">content</div>     </div> </div>   html,body{             margin: 0;             padding: 0;             }             .wrap{             padding-left: 100px;             }             .left, .right{             height: 100vh;             }             .left{             float: left;             width: 100px;             background-color: royalblue;             margin-left: -100px;             }             .right{             display: flex;             width: auto;             background-color: lightcoral;             justify-content: center;             align-items: center;             }             .box{             width: 50%;             height: calc( (100vw - 100px)*0.5*0.75 );             background-color: lightyellow;             }
1 回复
分享
发布于 2020-12-20 13:04
长宽比用vw
点赞 回复
分享
发布于 2019-10-23 13:25
LZ3面有后续吗?请问大概多久三面出结果啊
点赞 回复
分享
发布于 2019-10-24 10:32
学长nb😂一个月后我也准备面头条了
点赞 回复
分享
发布于 2019-11-04 16:19
题主算法这些是怎么学的呀
点赞 回复
分享
发布于 2019-11-06 15:25
大哥你也太强了吧...
点赞 回复
分享
发布于 2019-12-02 21:38
白屏优化,是不是就是骨架屏呢
点赞 回复
分享
发布于 2019-12-05 16:14
谢谢大佬热心提供面经,学习了
点赞 回复
分享
发布于 2019-12-06 15:59
楼主什么专业呀。同冷门工科,想转行
点赞 回复
分享
发布于 2019-12-27 17:59
想问下楼主项目怎么准备的,我学了很久但是还没做过什么可以写在简历上的 项目,打算做个项目再找实习
点赞 回复
分享
发布于 2020-02-25 16:59

相关推荐

32 223 评论
分享
牛客网
牛客企业服务