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 相关
- 团队有多少人,主要负责的工作
- 遇到的困难、解决思路
- 简历提到的下载性能优化,还有什么方法可以优化的吗 缺少具体的量化数据
反问
- 开头问的俩个手写的具体场景 微信小程序有并发限制,请求优先级
- 具体做什么 业务+小程序自研框架
查看6道真题和解析