从 Top-K 面试题延伸:内存装不下的时候,海量数据 Top-K 还有哪些招
这是一篇知识延伸文章:此前一篇真题解析讲了内存装得下时的 Top-K——扫一遍数据、维护一个 K 大小的小顶堆,O(N log K) 收工。本文换主轴:当数据量远超内存,堆解法的前提不复存在,此时有哪些方法、各自的精度代价是什么?堆解法的细节不再重复。
这是一篇知识延伸文章:此前一篇真题解析讲了内存装得下时的 Top-K——扫一遍数据、维护一个 K 大小的小顶堆,O(N log K) 收工。本文换主轴:当数据量远超内存,堆解法的前提不复存在,此时有哪些方法、各自的精度代价是什么?堆解法的细节不再重复。
先说明属性:这是一篇历史笔试题复盘,题目出自本地历史笔试资料,与任何公司的当前招聘无关。题面很经典:给定一棵二叉树的前序遍历和中序遍历序列,把树还原出来。考点不在「会不会」,而在「分治点找得准不准」。
之前解析「海量日志里找访问最多的 IP」这道真题时,核心动作只有一个:按 IP 哈希分片。那篇文章把这道题解完就停了,这篇把镜头拉远——分片只是整套「超内存数据处理方法论」的第一步,后面还有片内处理、全局合并,以及从单机走向分布式的那一步迁移。
先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。快速排序是排序题里的常青树——人人会背 O(n log n),但面试官真正想听的是:它为什么快、什么时候不快、不快了怎么救。
先说明属性:这是一篇历史题目复盘,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。海量数据题的内核都一样:内存装不下,就不能把问题整体搬进内存,只能想办法把它切成装得下的若干份——难点从不在「切」,而在「切完之后结果还能不能正确合并」。