字节跳动 前端 Data 南京 面经分享
双非渣硕非科班,9.29号收到字节Data部门的意向书,秋招正式结束😁
分享一下字节3轮技术面中的难题,希望能够帮到还没有上岸的各位朋友
9.15一面:
手撕算法:
1. 三个异步fetch请求,只要有一个请求变成resolve,那么就输出对应的result,并结束。如果请求过程中出现错误,则需要在最后输出错误信息
(我用Promise race,不过好像不能完美实现面试官提出的要求)
2. 字符串转千分位
(做过不知道多少遍了,结果后面用正则翻车了😂)
3. 实现深搜索,例如对于这样一个数组city和指定的code,输出对应的name:
var city = [ { code : 0, name: 'beijing', }, { code : 211, name: 'jiangsu', children: [ { code: 212, name: 'nanjing' } ] } ] function search(code) { // code return name }(递归搜索,也挺简单的)
9.15 二面
一面完之后直接二面,面试官是一个很开朗的小姐姐,体验很棒
手撕算法:
二面斯的代码令我印象非常深刻,因为是很简单的闭包,但里面的陷阱很多
// 实现一个foo函数, 返回自身被调用的次数 可以这么使用: a = foo(); b = foo(); c = foo(); // 此时 a 的值是1;b的值是2;c的值是3; foo.reset(); d = foo(); // d的值是1, 说明foo重新开始计数;撕了大概30min,后面我都想放弃了,不过最后面试官还是告诉了我答案:
const foo = (function(){ let counter = 1; function increase(){ return counter++; } increase.reset = function() { counter = 1; } return increase; })()二面整体比一面难很多,问的都是一些细节方面的问题,包括:
1. Vue和react的diff 算法的区别
(我:原来有区别?😂)
2. Vue和React的不同点
3. React hooks用过吗
(我:莫得)
4. VueX和Mobx原理上的区别,和Redux又有什么区别
5. WebPack中Tree shaking的原理
6. TS中的泛型,使用TS带来了什么提升
(我:类型检查,面试官:😂)
9.21 三面
三面据说是部门大佬面,不过感觉与二面相比,轻松了不少
手撕:
实现一个get函数,用来获取一个深嵌套对象中的值,例如:
var object = { 'a': [{ 'b': { 'c': 3 } }] }; get(object, 'a[0].b.c'); //应该返回 3难点在于对象内部可能有数组,对于数组按下标方式取,需要特殊地解决
9.22 hr面
随便聊人生,包括:
你觉得自己这三次面试表现如何,能给自己打多少分
(我:60吧😂)
9.29 经过漫长的等待,终于上岸了
希望有知道的老哥能否说一下南京data部门的工作情况?