我看面经或自己面试经常遇到follow up说是数据很大怎么办。一般的回答都是切割,分块处理。但再进一步问细节,就不知道怎么答了。对于这种问题有什么好的建议?
类问题就是面试follow up常考的海量数据处理。首先,海量数据是指数据量太大,导致无法在短时间内迅速处理,或者无法一次性装入内存。而海量数据处理,就是基于海量数据的存储、删除、搜索等操作。
为了让大家对海量数据处理的问题有一个更具体的认识,我们来看一个常见的例子:
求数组A和数组B的交集
这个问题只是一道很普通的算法题,我们通过 Hash 或者排序+二分法等方法可以轻松解决。你以为面试就到此为止了,而面试官马上follow up往往让你措手不及:求两个超大文件中 URLs 的交集,且内存不足以放下所有 URLs。(面试官角度的分析解答,请见文末的试听课程)
这就是一个典型的海量数据处理问题。
学好海量数据处理,面试加分,逆袭offer
有人会说:海量数据处理掌握得不好,面试只要没考到就万事大吉了。可也有人因为海量数据处理问题答得好,在电面挂掉的情况下成功上岸。
Pinterest电面被告知外包给 karat ,因为状态不好凉凉。后经朋友提醒可以要求二轮面试。这次只给了一道题,重点考察在有限空间内对海量数据处理的最优解。由于我前期刷题在海量据处理上花费了较多时间,这次答的很不错,follow up也不在话下。顺利进入onsite,最后拿下Pin家offer。
面过狗家的同学都知道,面试前HR一般会建议学习一下三架马车。而三架马车之一的 MapReduce 就和海量数据处理息息相关。
谷歌设计 Map Reduce 的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。
其实 MapReduce 并没有节约实际上的计算时间总和,但是如果现在有很多的计算资源(很多台机器),就可以通过 MapReduce 的框架利用多台机器同时计算,来优化性能进行提速。
由于MapReduce是一套通用的分布式计算框架,对于很多类似的问题,工程师并不需要每次都去自己构思如何使用多台机器优化计算的算法,只需要套用这个通用框架,就可以快速地解决问题。
MapReduce 几乎是数据工程师必备技能,而熟练运用 MapReduce,掌握各种处理海量数据的算法和数据结构,无疑会让你在竞争中脱颖而出。
打通9个高频考点,迅速掌握海量数据处理
总体来说,海量数据处理类的题有以下9个高频考点:
算法方面:
外排序算法(External Sorting)
MapReduce
非精确算法
概率算法
哈希算法与哈希函数(Hash Function)
数据结构方面:
哈希表(Hash Table)
堆(Heap)
布隆过滤器(BloomFilter)
位图(Bitmap)
九章令狐冲老师新课,带你刷遍海量处理题
九章算法《海量数据算法与面试题全集》,配套LintCode面试真题。令狐冲老师将在课程中详尽介绍所有海量数据处理算法,包括在线算法,离线算法和概率算法。让你秒杀100%的海量数据处理面试题。
章节介绍
第1章 海量数据算法介绍
第2章 最高频 K 项问题
问题分析
最高频 K 项的离线算法
标准离线算法的提速
标准离线算法的空间优化
最高频 K 项的在线算法
标准在线算法的空间优化
相关面试题
最近7天的热门歌曲
访问 Baidu 次数最多的 IP
第3章 布隆过滤器(Bloom Filter)
标准布隆过滤器 Standard Bloom Filter
计数布隆过滤器 Counting Bloom Filter
第4章 外排序算法
外排序算法的基本步骤
相关面试题
第5章 概率类的大数据问题
扫码报名 免费试听
现在报名可享受早鸟价$89
仅剩8小时
想上课的同学抓紧时间哦~
扫码免费试听
或者点击“阅读原文”
早鸟价截止时间:北京时间10月17日 10:00
继续阅读
阅读原文