在磁盘上搜索带有8 GB RAM的16 GB文件

时间:2015-08-16 17:42:02

标签: algorithm search operating-system ram disk

我被问到最近的一个面试问题, “你有8 GB RAM和16 GB文件”你如何在这个文件上执行搜索?

然后我问什么类型的文件,什么语言?, 他说任何格式,任何语言只会增加我的困惑!

过了一会儿,他让我假设它是一个文本文件!

根据我与采访者分享的知识回答: 编辑:使用具有自定义大小的缓冲流并对缓冲区上的数据进行排序,以对缓冲流应用二进制搜索(如果相关)!

我相信面试官不相信!!

我明白这个问题很模糊!

我想知道我错过了什么询问面试官,可能的解决方案是什么? 对此有任何指导或建议表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:0)

我可以通过线性搜索在文件的前半部分中首先搜索;如果搜索失败,则在文件的后半部分执行相同的操作。

您的解决方案是错误的,因为您没有考虑内存限制:如果您无法在内存中完全加载所有内容,您如何缓冲和排序所有内容(您可以这样做,但您必须解释如何) ?这同样适用于二进制搜索:您不能使用标准算法,您必须自定义它。

此外,如果您在文本文件中搜索子字符串,那么您的解决方案是不合适的(您按什么排序?)