在无限流中查找特定时间戳
Find a specific time stamp in an infinite stream
这是一道面试题:
假设您有无限量的排序数据传入,实现一种查找特定时间戳的方法。
我能想到的是将数据保存在日志文件或类似的文件中,然后使用 sed 命令查找该特定时间戳的日志条目。
我不知道我的想法是否正确。
其他解决方案?
这似乎是一个开放式问题。您的解决方案是将数据保存在日志文件中,但是如果数据量无限大,那么您还需要不切实际的磁盘数量 space。问题大概应该按照下面的方式来分析。
乍一看,源源不断的数据涌入,并没有说明其到来的速度。假设速率为每秒 r
并且您每秒只能检查 n
时间戳。如果 r <= n.
就不是很有趣了
如果 r > n 你只能检查每 r/n
个整数中的一个。那么,这意味着您需要维护一个大小为 r/n
的缓冲区。输入已排序的事实意味着您可以检查缓冲区的末端并查看所需的时间戳是否在范围内。如果是,您将检查缓冲区并确定所需的时间戳。
面试提示:这些问题通常是开放式的,以判断您的思维过程。如果它未指定(就像它在这里),你应该要求澄清。
这是一道面试题: 假设您有无限量的排序数据传入,实现一种查找特定时间戳的方法。
我能想到的是将数据保存在日志文件或类似的文件中,然后使用 sed 命令查找该特定时间戳的日志条目。 我不知道我的想法是否正确。 其他解决方案?
这似乎是一个开放式问题。您的解决方案是将数据保存在日志文件中,但是如果数据量无限大,那么您还需要不切实际的磁盘数量 space。问题大概应该按照下面的方式来分析。
乍一看,源源不断的数据涌入,并没有说明其到来的速度。假设速率为每秒 r
并且您每秒只能检查 n
时间戳。如果 r <= n.
如果 r > n 你只能检查每 r/n
个整数中的一个。那么,这意味着您需要维护一个大小为 r/n
的缓冲区。输入已排序的事实意味着您可以检查缓冲区的末端并查看所需的时间戳是否在范围内。如果是,您将检查缓冲区并确定所需的时间戳。
面试提示:这些问题通常是开放式的,以判断您的思维过程。如果它未指定(就像它在这里),你应该要求澄清。