首页 > 回馈牛客 字节跳动前端面经(已签~)
头像
PhilFong
编辑于 2019-12-04 20:15
+ 关注

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

随着秋招接近尾声,渣渣楼主回馈牛客网,分享一波字节前端面经
一面:
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谈薪,渣渣楼主目前已签,开始享受最后的学生时光啦:)
最后希望大家都能顺利结束秋招,早日登上人生巅峰~~

更多模拟面试

全部评论

(12) 回帖
加载中...
话题 回帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐