2024-8-21 滴滴二面
感觉面试确实挺分人的,问的都不一样
问题
- 自我介绍
- 实现一个调度器,没写出来,太久没看了
//JS实现一个带并发限制的异步调度器Scheduler,保证同时运行的任务最多有两个。完善代码中Scheduler类,使得以下程序能正确输出 class Scheduler { add(task) {} // ... } const timeout = time => new Promise(resolve => { setTimeout(resolve, time) }) const scheduler = new Scheduler() const addTask = (time, order) => { scheduler.add(() => timeout(time)).then(() => console.log(order)) } addTask(1000, '1') addTask(500, '2') addTask(300, '3') addTask(400, '4') // output: 2 3 1 4
- 实现一个 Task
class Task { constructor() {} add(fn, context, ...args) {} run() {} stop() {} } function task1(next) { setTimeout(() => { console.log('red') next() }, 3000) } function task2(next, b) { setTimeout(() => { console.log(b) next() }, 1000) } function task3(next, c) { setTimeout(() => { console.log('yellow') next() }, 2000) } let task = new Task() task.add(task1).add(task2, null, 3).add(task3) task.run()
- 实现一个函数,可以讲普通函数转成 promise 函数
- pinia 的原理,以及 a、b 组件都用了他的数据,a 更新了一个数据后,改变的过程
- vue 组件之间传值
- 简历里面的 tailwind 做的什么、多仓库怎么复用
- 工程化配置,webpack、vite 相关
- 团队有多少人,主要负责的工作
- 遇到的困难、解决思路
- 简历提到的下载性能优化,还有什么方法可以优化的吗 缺少具体的量化数据
反问
- 开头问的俩个手写的具体场景 微信小程序有并发限制,请求优先级
- 具体做什么 业务+小程序自研框架