7.24更新 二面面试官才休假回来, 1面过了10几个,横向比较G了7.19 一面过了 等着约二面自我介绍项目相关聊天室支持群聊吗实时通信实现方式-夸路由组件的应用场景保存状态其他方式也能做,为什么要这么做前端框架脚手架monorepoVite 和 Webpack区别, 知道多少说多少Vite首次加载如何优化 (懒加载?)子依赖中依赖了父依赖已经安装过的依赖怎么避免重复安装React useMemo useCallBack 区别,应用场景useState setState 是异步还是同步 这样做的原因还有的可能忘了实习相关写题// JS实现一个带并发限制的异步调度器Scheduler,// 保证同时运行的任务最多有两个。// 完善代码中Scheduler类,// 使得以下程序能正确输出class Scheduler {  constructor() {   this.count = 2   this.queue = []   this.run = []  }  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  // 一开始,1、2两个任务进入队列 // 500ms时,2完成,输出2,任务3进队 // 800ms时,3完成,输出3,任务4进队 // 1000ms时,1完成,输出1 // 1200ms时,4完成,输出4//答案class Scheduler { constructor() {   this.count = 2   this.queue = []   this.run = [] } excute(task) {   this.run.push(task)   Promise.resolve(task()).then(() => {     task.resolve()     this.run.splice(this.run.findIndex(task), 1)     if (this.queue.length) {       this.excute(this.queue.shift())     }   }) } add(task) {   return new Promise((resolve, reject) => {     task.resolve = resolve     if (this.run.length < this.count) {       this.excute(task)     } else this.queue.push(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')12.反问业务: 办公工具 AI接入软件
点赞 19
评论 9
全部评论

相关推荐

吴offer选手:下午mt一来就告警说项目来不及,估计明天拿了权限就要参与开发了 已老实
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务