我被问到最近的一个面试问题, “你有8 GB RAM和16 GB文件”你如何在这个文件上执行搜索?
然后我问什么类型的文件,什么语言?, 他说任何格式,任何语言只会增加我的困惑!
过了一会儿,他让我假设它是一个文本文件!
根据我与采访者分享的知识回答: 编辑:使用具有自定义大小的缓冲流并对缓冲区上的数据进行排序,以对缓冲流应用二进制搜索(如果相关)!
我相信面试官不相信!!
我明白这个问题很模糊!
我想知道我错过了什么询问面试官,可能的解决方案是什么? 对此有任何指导或建议表示赞赏!
谢谢!
答案 0 :(得分:0)
我可以通过线性搜索在文件的前半部分中首先搜索;如果搜索失败,则在文件的后半部分执行相同的操作。
您的解决方案是错误的,因为您没有考虑内存限制:如果您无法在内存中完全加载所有内容,您如何缓冲和排序所有内容(您可以这样做,但您必须解释如何) ?这同样适用于二进制搜索:您不能使用标准算法,您必须自定义它。
此外,如果您在文本文件中搜索子字符串,那么您的解决方案是不合适的(您按什么排序?)