Skip to content

【前端】-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;
}
本站访客数 人次 本站总访问量