22 年校招面字节的时候,面试官随口问了个问题:有几亿条数据存储在文件中,我该怎么排序?虽然在很多高频面经上看过这个问题,但完全没有在意,心想:正常排序呗还能怎么做,加载不进内存就分块处理。可具体怎么分块并没有仔细思考过。看似是一个算法题,但这完全是一个工程题。
今年遇到了类似的问题,有两组文件,第一组叫 bench,有 32 个文件,这些文件大约 1T 左右。每个文件里存储着搜推广的稀疏数据,id 和 embedding,每一个 id 对应一个 embedding 数据。第二组文件叫 test,有 8 个文件,这些文件同样约 1T 左右,同样存储了 id 和 embedding。这些 id 和对应的 embedding 完全乱序分布在文件中,毫无规律。
目标:遍历 bench 中的每个 id 和对应的 embedding,在 test 中查找对应的 id 和 embedding,判断是否相等。如果 id 不存在或者 embedding 不相等,打印出错的 id。