字节前端秋招二面

8.24 下午16:00-17:30

录音坏掉了,靠着记忆复盘的,感觉漏了很多问题😅

自我介绍
项目难点
webpack和vite的区别
vite的优化
手写:事件总线,实现on,once,off,trigger
动态规划解决了什么问题
手写:带有并发限制的promise请求
class Scheduler {
addTask(promiseFn) {
// ...
}
}

let wait = (time) => new Promise((resolve, reject) => {
setTimeout(() => resolve(), time);
})

let scheduler = new Scheduler();

let addTask = (time, value) => {
scheduler.addTask(() => wait(time)).then(() => console.log(value));
}
// 面试结束后屏幕被关了,这里应该有几个类似的调用
addTask(500, '123456');
手写:

给定一系列的api,测量上传速度(实现的时候用的GET请求)并选择一个加载时间最短的api。

let apis = [
'registry.npmjs.com',
'....',
]

#字节跳动##面经##前端工程师##23届秋招笔面经#
全部评论
最后一个是用Promise.race吗
1 回复 分享
发布于 2022-08-26 19:59 广东
最后一题可以贴一下答案吗
1 回复 分享
发布于 2022-09-13 22:59 北京
简单想了下,并发那个 这样可行不 class Scheduler {   constructor() {     this.count = 2; //并发数量     this.arr = []; //事件   }   //不能直接new Promise   addTask(time, str) {     const fn = (resolve) => {       setTimeout(() => {         console.log(str);         resolve();       }, time * 1000);     };     this.arr.push(fn);   }   start() {     let p = this.count;     for (let i = 0; i < p; i++) {       if (this.arr.length <= 0) return;       let fn = this.arr.shift();       new Promise((resolve) => {         this.count--;         fn(resolve);       }).then(() => {         this.count++;         this.start();       });     }   } }
点赞 回复 分享
发布于 2022-08-26 15:58 北京
楼主面的什么部门呀
点赞 回复 分享
发布于 2022-08-28 08:32 广东

相关推荐

2024-12-04 22:59
已编辑
江苏科技大学 后端
0offer要鼠啦:为啥没写会玩青钢影
点赞 评论 收藏
分享
评论
9
41
分享
牛客网
牛客企业服务