【前端】-2025.10.15-字节一面面经 2024-10-15 551 阅读1分钟
1.react共享参数的方式
2.useContext和mobx的异同;useContext的缺陷,如何优化
3.上线流程是怎样的,前端资源如何部署到服务器上的
4.为了保证代码质量,除了code review外,有没有做一些其他工作监控、预警等,比如白屏问题如何检测
5.ts中unknown和any的区别,axios的response的返回如何定义的,使用的any还是as转化
6.js的事件循环,拓展:宏任务和微任务的区别,没有微任务可以吗;
7.js中的事件循环与node.js中的事件循环有什么不同,提示:libuv
8.代码题
问题描述
// 实现CodingMan,可以按照如下方式调用执行 CodingMan('mike');
// hello, mike
CodingMan('mike').sleep(3).eat('lunch');
// hello, mike // wake up after 3s // eat lunch~
CodingMan('mike').sleepHead(3).eat('lunch');
// wake up after 3s // hello, mike // eat lunch~
实现:
js
const sleep = (seconds = 0) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, seconds * 1000);
})
};
const CodingMan = (man = '') => {
const tasks = [];
tasks.push(() => {
console.log(`hello, ${man}`);
});
setTimeout(async () => {
for (const task of tasks) {
await task();
}
});
const obj = {
sleep: seconds => {
tasks.push(async () => {
await sleep(seconds);
console.log(`wake up after ${seconds}s`);
})
return obj;
},
eat: meal => {
tasks.push(() => {
console.log(`eat ${meal}~`);
});
return obj;
},
sleepHead: seconds => {
tasks.unshift(async () => {
await sleep(seconds);
console.log(`wake up after ${seconds}s`);
});
return obj;
}
}
return obj;
}