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

时间:2018-03-22 09:02:36

标签: algorithm logic

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

想象一下铁路票务柜台。

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

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

enter image description here

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

我被要求给出答案和答案背后的逻辑。 面试官不断就我的答案提出更多问题。

例如 - 当我说,

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

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

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

enter image description here

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

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

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

3 个答案:

答案 0 :(得分:3)

如果人们按字母顺序排列并且每个人大致在同一时间内获得服务,那么IMO最多"公平"解决方案是将模式D移至新计数器,在E之后移动A,在F之后移动B然后让G和{{ 1}}进入,即:

H

逻辑是,由于1 2 3 4 1 2 3 4 ---------- ---------- A B C >> A B C D D E F E F G H 是第一位的,所以应首先提供服务,因此A会更快地站在E之后,而不是站在A之后

从评论中更新: 为了避免很多动作:

B

排队的四个人:

1  2  3  4      1  2  3  4      1  2  3  4
----------      ----------      ----------
A  B  C     >>  A  B  C  D  >>  A  B  C  D
D  E  F            E  F         G  E  F  H
                G        H

答案 1 :(得分:2)

我的建议是

D-> 4,E-> 1,F-> 2,G-> 3,H-> 4

前提是每个人在柜台服用相同的时间。这样每个人都将按正确的顺序处理。

如果每个人在计数器上花费不同的未知时间,那么队列是唯一有效的解决方案(除了每次有人处理时切换线路,这实际上是相同的。)

答案 2 :(得分:2)

鉴于我在这个主题中的背景和业内多年,而不是我在这里承认...... :-) ......我假设你为什么没有进入下一轮:这不是一个程序设计问题,而是行为问题。

这类面试问题通常不是关于解决方案,而是关于解决问题的方法。我(面试官)给了你几个开放可能性的问题。首先,这显然是"显然"操作系统多处理情况的隐喻。

我想要一个理想的候选人
  1. 质疑票证柜台范例对操作系统情况的适用性:现实世界中哪些假设不适用于流程队列?
  2. 确定评估解决方案的量规。
  3. 询问有关允许操作的更多信息。
  4. 要求分发服务时间,到达时间等,以展示调度范例的知识。
  5. 查询费用&权衡。
  6. 有了对问题的更好描述,现在我希望您通过解决方案,始终如一地吸引客户(我)参与一般方法和具体细节。例如,这是敏捷方法的关键部分。另外,我想看看你如何解释我不理解的事情。

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

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

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

    • 什么定义了一个好的解决方案?最佳方案?不可接受?
    • 将一个人从他们搬到另一个地方的费用是多少?
      • 我可以将某人带出窗口并返回队列吗?
      • 我可以更改队列中的顺序(即"队列&#34的常用用法;而不是规范数据结构)?
      • 我可以直接从一个窗口线切换到另一个窗口线吗?
    • 为每位客户服务吗?
    • 这是整个队列,还是一个连续的过程?

    这是我的打字赶上了我的思维过程,停止的公平点。