字节跳动飞书秋招提前批一面二面面经,三面凉经,各位共勉
基本情况
本人是 21 届,武汉的某211 的计科研狗。
在学院群里受同学鼓舞填了字节飞书内推,投了字节飞书武汉前端岗。
7月10号,一面,7月14号二面,三面通知在7月20 号,真是等的太漫长了。
受疫情影响,所有面试都是在线上进行。进入正题
一面
面试安排在下午两点,面试官迟到了5分钟,我打了hr小姐姐的电话,通知他,他才来。。。
面试官是个大概30岁左右的小哥(也不帅啊,别人的面试官都是很帅的吗,我没遇到啊)
但是,小哥很友好,迟到了,连忙抱歉,相互打了招呼就开始正式面试了。
下面是问的问题:
- 首先来个自我介绍吧。我叫XX,来自XX,今年XX,现在在XX大学的研二学生。
- 期间做过哪些项目呢?(和我想的一样,然后就开始巴拉巴拉的说,大概逻辑就是什么时候,做了哪些项目,项目用了哪些框架技术,怎么实现的。这一块我说了很多,因为之前有过其他公司的面试经历,大概猜到面试官会从项目找知识点后面详细考察,所以我特地往自己擅长的方向说,这点大家可以借鉴一下,算是个技巧,别说太广,给自己挖坑,因为面试官想了解你,知识点会问很深,你要把自己很了解的,自己的优势展示给面试官,而不是他问深一点你就不知道了。)
- 项目中遇到了跨域,跨域有哪些方法,是什么原理?(项目中提到了的,肯定就会问。很有信心回答了。我还把为什么要跨域,同源策略,什么是同源也说了一遍,然后跨域的几个方式逐个介绍jsonp原理,cors原理,Nginx简单说了一下,window.name+iframe,websocket,面试官很满意)
- get和post有哪些区别?(也是在项目里提及到的。回答的也不错,有个重点面试官会深问,get是一个tcp包,post是发俩tcp包,发的是什么,服务器回的什么状态码)
- 说几个熟悉的http状态码(上题的延伸,100,200,301,302,304,403,404,502大概说了这些)
- 服务器回复的报文头部有哪些字段?(也是接着问下来的,其中我说到了缓存这块)
- 说一下强缓存和协商缓存(感觉面试官跟着我思路在走,问的都是我准备好的一套,回答的也是没有问题)
- 问我项目中登录信息怎么存放的?(cookie,sessionStorage,localStorage一套也是准备好了,三个技术有何区别。)
- cookies可以设置哪些字段,有何作用?
- 项目中用了vue,说一下为什么在三大框架中选择vue,说一下vue特点优势?
- vue组件传值怎么实现的?
- vue的双向绑定的原理?能不能手写一个双向绑定?(这个也有准备正中下怀)
- 有了解过柯里化吗?(见过,说了一下什么是柯里化,有什么好处)
- 手写一个函数的柯里化,实现下面功能
- sum(1,2,3,4,5) sum(1,2,3)(4,5) sum(1)(2)(3)(4)(5) 。。。。结果都是15(这个不难,但是问的时候比较懵,回答不是很好,面试官提示了一下,勉强搞定)
时间差不多到了,大概40min,你有什么想问我的?(请对于我这次面试做个评价,如果有机会进入下一轮,有什么建议,我每次都是这个问题哈哈哈,感觉也比较官方正经)
一面结束,面得问题很常规,基本上都在我的准备当中,面试官也很有耐心,整体体验很好,当天晚上收到二面通知。
二面
二面安排在14号下午,也是两点,hr小姐姐主动打来电话,说面试官有点事情,晚点到。
2点10分,面试官来了,面试官感觉也是30出头的一个小哥,但是头发不多了(我不配拥有帅气温柔的小哥吗),也是同样的相互打了招呼进入正题。
下面是问的问题:
- 首先来个自我介绍吧?(常规问题)
- 做过哪些项目?(同一面,感觉这是面试的基本流程,都要走的,如同一面,巴拉巴拉,想要面试官进入我的节奏,主动引导)
- get和post的区别?(同一面)
- 强缓存和协商缓存说一下?(同一面,协商缓存里面我提到了304,想引导他问我状态码)
- http状态码知道哪些?(同一面,暗自窃喜,哈哈哈哈)
- css中position可以设置哪些值?有什么区别?(static relative absolute fixed,好像没说全,进入css样式考察了)
- box-sizng可以设置哪些值,什么区别?
- 盒子水平居中(说了三个方法)
- vue中你觉得什么最好?(就是把vue的优点又说了一遍)
- diff算法有了解过吗,说一下(了解过,说了一下为什么要diff,主要是节省开销,提了一下虚拟dom,然后和真实dom同层比较,调用patch,说的不是特别好,但是重点原理都说了)
- 页面的回流和重绘知道吗?有什么区别?(回流必重绘,重绘不一定回流,回答了一下什么是回流,什么是重绘,这点之前看过文章,结合dom tree和css rules结合的render tree相关知识,说的还是比较好的)
- 有什么好的办法优化页面渲染?(这个答得很烂,提了一些感觉不在点子上,说了一下少用css嵌套,css继承的属性不用重复设置,合并css文件,图标类用css spires?是不是这样拼的我也忘记了,只用加载一个大的图,大图中定位小的图标的一种技术)
做两道题吧?
- 实现一个函数a(),第一次调用输出0,再调用输出1,再调用又是0。再调又是1
我是用闭包写的,声明一个变量,初始化为0,调用一次++,然后判断奇偶数,奇数就return 0,偶数就return 1,感觉思路有点蠢哈哈哈哈哈
- 第二题
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
这不就是力扣第一题吗,简单。秒掉
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
这不就是力扣第一题吗,简单。秒掉
var twoSum = function(nums, target) { var res = [] var len = nums.length for(var i = 0;i<len-1;i++){ for(var j = i+1;j<len;j++){ if( nums[j]+nums[i] == target){ res.push(i) res.push(j) } } } return res };然后问了一下时间复杂度是多少,能不能一次遍历实现?对于算法优化这块我确实不行,想了一下,面试官就说今天就到这里吧,时间差不多了。
常规的问问题环节,你有什么要问我的?(我还是那个问题哈哈哈。。)
二面结束了,45min。整体来说还是很简单的,可能是我套路深,还是运气好?哈哈哈哈
二面结束了,45min。整体来说还是很简单的,可能是我套路深,还是运气好?哈哈哈哈
15号上午接到hr二面通过的电话,准备三面中,三面不知道是不是主管面,我听别人说字节二面过了就捞了,也不知道真的假的,希望一切顺利拿到offer。
更新:三面
7.20号晚上八点进行的字节三面,面试官迟到了2分钟(面试官挺年轻的一个小哥,这是leader吗?年轻有为)
进来相互打了招呼以后,就正式开始面试了。
下面是问的问题。
- 先做个自我介绍吧。(常规问题)
- 在校做过哪些项目?(我这里给他共享屏幕,展示了项目,这一块我说的很多。他一直没怎么说话)
我们来看几道题吧(不问知识点的吗,直接就看题了,有点懵逼)
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
}).then(function() {
console.log('promise3');
});
console.log('script end');
setTimeout(function() {
console.log('setTimeout');
}, 0);
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
}).then(function() {
console.log('promise3');
});
console.log('script end');
说一下输出的顺序,为什么?(这题不难,就是考的同步任务,异步宏任务,异步微任务的执行顺序)
- 实现下面的函数
add(2,3,4).sumOf()
add(2)(3,4).sumOf()
add(2)(3)(4).sumOf()
add(2,3)(4).sumOf()
add(2)(3,4).sumOf()
add(2)(3)(4).sumOf()
add(2,3)(4).sumOf()
我靠这不是又是柯里化吗??(我把一面的写了一个差不多的柯里化给他,但是有点差别,他这个要链式调用求和函数,他说你能不能实现我这个,额琢磨了半天,菜,没搞出来,下一题)
- 实现一个字符串的ip复原,输出一个数组,包含有可能的ip
力扣的93题
输入:"25525512212"
输出:["255.255.122.12", "255.255.12.212"]
输出:["255.255.122.12", "255.255.12.212"]
(当时看过这题,有点印象但是写不出来了,记得反正用js写挺复杂的,后悔没有好好研究这题)
下面这是力扣大佬的方法,我是写不出来了,膜拜
var restoreIpAddresses = function(s) { let result = []; function helper(s, last, segments){ if(segments == 3){ if(s.length <= 3 && parseInt(s.slice(0,3)) <= 255){ if(s.length >= 2 && s.charAt(0) == "0"){ return } let item = last.concat(s) result.push(item); return } } if(segments < 3){ let item = last.concat(s.slice(0,1)).concat("."); helper(s.slice(1), item, segments+1) if(s.charAt(0) != "0"){ item = last.concat(s.slice(0,2)).concat(".") helper(s.slice(2), item, segments+1) if(parseInt(s.slice(0,3)) <= 255){ item = last.concat(s.slice(0,3)).concat(".") helper(s.slice(3), item, segments+1); } } } } helper(s, "", 0); return result; };
可能是面试官很忙吧,这三个问题问完,就问我你有什么问我的吗?(我当时心中一惊,这就结束了要???心里凉了都,知识点都没怎么问。估计面试官印象也不是很好了)
问了一下,飞书的技术栈这些,需要准备哪些知识。
整个过程很快大概40min,心里想着凉透了。三面的面试官很注重算法题,本人平时算法搞得少,加上这次问的问题少,准备的基础知识都没有问,直接上的算法题,吃了大亏,要去恶补算法了。
凉凉,大概率过不了,一题半没整出来。现在也是后悔了,原题看到了,写不出来。。。
不知道会不会被其他部门捞,有后续在给大家更新吧。
三面凉经,唉第一次写面经,写的不好,大家多多包涵。
各位加油吧