Google 面试题:多 CPU 任务调度最短完成时间 – 一亩三分地 – VO 辅助 – VO help – 代面试 – 谷歌狗家面经

You are given a list of N tasks with each task taking s seconds to execute on a single CPU.

The ith task can start executing at or after startTimes[i]. Given c CPUs, find the minimum time at which all the tasks will be executed.

这是一个典型的任务调度问题。

每个任务有两个限制:

  1. 不能早于自己的 startTimes[i] 开始;
  2. 同一时刻最多只能有 c 个任务并行执行。

每个任务执行时间相同,都是 s 秒。

目标不是输出调度方案,而是求最早完成所有任务的时间。

核心思路

先把所有任务的最早开始时间排序。

然后按时间顺序安排任务:

  • 如果当前有空闲 CPU,就立即安排任务;
  • 如果所有 CPU 都忙,就等最早空出来的 CPU;
  • 当前任务真正开始时间为:
max(startTimes[i], earliestAvailableCpuTime)

任务完成时间为:

actualStartTime + s

不断更新 CPU 的可用时间,最后所有任务完成时间中的最大值就是答案。

这类题表面是 CPU 调度,本质是“带释放时间的多机器任务分配”。Google 面试中常见变体包括不同任务耗时、任务优先级、实时新增任务等。csoahelp 可帮助候选人在真实面试中快速识别模型、组织思路并写出可运行代码。

我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *