2024-8-21 滴滴二面

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 相关
  • 团队有多少人,主要负责的工作
  • 遇到的困难、解决思路
  • 简历提到的下载性能优化,还有什么方法可以优化的吗
    • 缺少具体的量化数据

反问

  • 开头问的俩个手写的具体场景
    • 微信小程序有并发限制,请求优先级
  • 具体做什么
    • 业务+小程序自研框架