0

最近在一次采访中被问到一个简单的设计问题:

假设有一些数据需要以管道方式处理以提高效率。假设有五个任务要完成,每个任务的输出都作为下一个任务的输入,一旦一个对象的任务完成,它就可以处理下一个。

如何设计该系统?下一个任务将如何被触发?如何将一个任务的数据提供给下一个任务?

有任何想法吗?这是在一次 C++ 采访中提出的。因此,面向 C++ 的设计会很好。

4

1 回答 1

3

这是一个面试问题,因此他们希望您大声思考并展示您的经验的深度。没有一个“设计”甚至“答案”,因此您应该尽可能多地考虑不同的情况。

您可以将整本书都花在管道设计上,因此我不会(也不能)列出您要注意的所有方面,但这里有一些常见的方面:

  • 注意瓶颈
  • 在流水线任务之间有一个共同的协议
  • 管道是否可以拒绝输入,甚至将它们向后传递,你如何处理这个
  • 是否需要大量类型转换
  • 您能否将其并行化,并在第一个项目完成之前将更多数据输入管道
于 2013-02-22T13:35:50.363 回答