字节跳动 前端 1、2、3面经(已offer)
字节跳动 深圳 产品研发部 前端开发 校招岗
本人双非,学的是软件工程专业。不得不说字节跳动的面试体验非常好,每一轮的面试时间都在一个小时左右,面试官也非常耐心。下面是面经,希望能帮助到大家。
11月26日 一面
1. 说说项目(这里我只说了我用到哪些技术)
2.requestAnimationFrame和requestdlecallback,除了这两个API的使用,还具体问了准确的执行时机。
3.rem布局原理和使用,原理大家都知道,根据的是根元素的font-size属性。还需要清楚具体使用rem布局的时候,如何去设置根元素的font-size大小,才能让页面在不同屏幕大小看以来一致。
4.Ajax跨域和 get 、post在CORS中不同的处理。扩展cookie在跨域中携带与不携带如何处理。
5.xss、csrf攻击。注意cookie的httponly和samesite属性。
6.vue MVVM 响应式原理。
7.computed的实现
8.vue模板解析的过程。
9.虚拟DOM,给出了新、旧DOM,让我讲述diff的过程。
10.nodeJS(简历上有),细说如何维护登录状态。
11.call apply bind,手写bind。关键的当bind用作构造函数如何实现,也需要会的。
12.手写instanceof。
13.反问。
总结:
这一面还是比较基础的。最后问了面试的表现,面试官说基础还是可以的,但是底层原理还需要多去了解(vue那一块问底层问的比较多,回答的不好)。
12月7日 二面
这里出现了个插曲,本来约的是12月2日的,但是链接好像出了问题,我在面试间里等,到了时间却不见面试官上线。字节那边打电话来说面试官在面试间等,我说
我就在面试间里等阿,然后就重新预约了时间。这里提醒大家,出现这样的问题,一定要主动打电话咨询,字节很准时的。
1.说说项目(这里我主要说了我项目的亮点,然后面试官给出了意见)
2.定位的几个属性和区别。这里还给了一道题,三个盒子嵌套,position属性依次为,fixed, absolute,relative(顺序可能不一样,记不太清了)。如果给最里面的盒子添加padding,问三个盒子的高度会如何变化。
3.一个100 * 80的长方形,设置padding为20%, 问最后大小是多少。
4.问输出
console.log(1); setTimeout(() => { console.log(2); Promise.resolve().then(() => { console.log(3) }); }); new Promise((resolve, reject) => { console.log(4) resolve(5) }).then((data) => { console.log(data); }) setTimeout(() => { console.log(6); }) console.log(7);5.提取url的主域
6. 给fetch添加一个超时控制。
7.反问。
总结:
这里有一些问题不太记得了(抱歉)。项目里面,面试官也提出了一些功能实现和优化相关的问题。反问环节,先问了一个学习建议 。最后也问了评价,面试官说挺不错的,就是一些边界情况需要加强。
12月14日 三面
1.项目(这里我主要说了,我基于上个面试官的意见作出的改进)
2.vue3.0 proxy的使用(这里我主要说了自己的理解)
3.vue具体的render时机。
4.http2.0
5.不定宽高,垂直水平居中。
6.求输出
var temp = 1; function test() { temp = 10; return; function temp() {} } test(); console.log(temp);7.实现一个加法函数sum,支持sum(1)(2)(3,4)(5,6,7....)
例如 sum(1,2,3)(4) 返回 10
//console.log(sum())
//console.log(sum(1))
//console.log(sum(1)(2))
//console.log(sum(1)(2)(3))
//console.log(sum(1,2)(3,4)(5,6))
(没写出来)
8.版本号排序
9.反问
9.反问
总结:面试的时间是晚上8点30,结束的时候快9点半了,就没问什么问题。然后就结束了,进入了等待时间了。
12月16日 hr面
这里就没什么,主要是了解你的大致情况,跟聊天是一样的。
12月17日 offer
总结: 整体下来,我的3场面试的问题都是考的挺基础的,当然底层原理问的也多。大家加油阿!
#面经##校招##字节跳动##前端工程师#