回答此调度算法场景的最佳方法是什么?

Gau*_*van 6 algorithm logic

这是我在采访中遇到的一个问题.这有点难以解释,请耐心等待.

想象一下铁路票务柜台.

  • 最初有3个柜台.
  • 有一名保安人员对人员进行检查,以便没有人打破这条线.
  • 每个柜台有2人排队等候.排队等候的人按字母顺序排队.
  • 新的第4个柜台正在开放.并且有两个新人G和H即将加入该阵容.

您是保安人员,现在您可以选择在新柜台处理谁.

在此输入图像描述

计数器标记为1,2,3和4(蓝色框).排队的人被标记为A,B,C等.首先是A,然后是B,然后是C等.

我被要求给出答案和答案背后的逻辑.面试官继续问我的答案更多问题.

例如 - 当我说,

  • 我会请D和E搬到第四柜台;
  • G将支持A,H将支持B

采访者争辩说E和G是如何获得相同的偏好(优先级).

经过几分钟的争论,我告诉我这似乎是一个简单的调度问题,如果有一个共同的队列并且安全警卫将队列中的下一个人发送到FCFS之后的空置计数器,就可以轻松解决.

在此输入图像描述

然而,面试官并没有留下深刻印象.

我错过了不同的方法吗?回答这些问题的正确方法是什么?

PS:我没有通过这一轮:(

Pru*_*une 3

考虑到我在这个主题上的背景以及在该行业工作的年数,比我在这里承认的要多……:-)……我有一个关于为什么你没有进入下一轮的假设:这与其说是一个程序将问题设计为行为问题。

这类面试问题往往不是关于解决方案,而是关于你解决问题的方法。我(面试官)给了你一个有几种可能性的问题。首先,这“显然”是操作系统多处理情况的隐喻。我想要一个理想的候选人

  1. 质疑票务计数器范式对操作系统情况的适用性:现实世界中存在哪些不适用于进程队列的假设?
  2. 确定评估解决方案的标准。
  3. 询问有关允许操作的更多信息。
  4. 要求提供服务时间、到达时间等的分布,以展示调度范例的知识。
  5. 询问成本和权衡。

有了对问题的更好描述后,现在我希望您能够找到解决方案,不断地让您的客户(我)了解一般方法和具体细节。例如,这是敏捷方法的关键部分。另外,我想看看你如何解释我不明白的事情。

请注意,第 2 条非常重要:如果您的真正客户是一名在轮班结束时退休的腐败保安,那么正确的解决方案可能是为进入开放柜台而进行贿赂竞标战。

这是下次面试的作业:要使你给出的解决方案成为一个好的解决方案,需要哪些假设?您如何与客户验证这些假设?

我直接的问题包括上述问题,以及......

  • 什么定义了一个好的解决方案?最好的解决方案?不可接受?
  • 将一个人从一个地方搬到另一个地方的成本是多少?
    • 我可以带某人离开窗口排队并重新回到队列中吗?
    • 我可以更改队列中的顺序(即“队列”而不是规范数据结构的常见用法)吗?
    • 我可以将某人从一条窗口线直接切换到另一条窗口线吗?
  • 必须服务每一位顾客吗?
  • 这是整个队列,还是一个连续的过程?

这就是我的打字跟上我的思维过程的地方,这是一个值得停下来的地方。