【每日N题】由海量数据去重所想到的,面试思维惯式

前言

今天在同事的桌子上看到一份简历,看了看。在简历的后面写了几道题,应该是给他准备的面试题。看了下,有点感触,就随便写写吧。

下周,我要和公司签合同,要是不理想可能也得找工作。看到那几道面试题,我自然而然地想到,如果我是应聘者,我该会怎么回答。而我在看这个题目的时候,突然意识到一个问题:我们经常按面试思路去回答问题,而不是按工作中遇到这个问题会怎么处理。

题目

那个题目记不太清楚了,大概描述下:

有一批海量的URL数据,如何去重?或者是说有两份URL数据,如何找出交集。当然,数据量也是海量的,也就是说一台内存搞不定,或说存不了,比如上T。

解答

我看了下同事在题目下面写的答案,感觉比较官方。比较像网上大家的思路。

给了三个答案,具体记不清了,只记得俩:

1、hash到不同节点,分而治之。

2、bloom filter

其实,当我看到题目时,我也是这样想的。可以说,一个应聘者经常按这种思路去想。然后,我就突然意识到如果工作中真遇到这个问题呢?我想我肯定不会这么做的。我就立刻想到了其他的思路。

就比如海量数据去重,我肯定不会用之前那几种方法,如果用hash分而治之思想,那我得写hash方法,写节点间的信息通信,还要解决一堆通信过程中失败的问题。而bloom filter呢,情况也好不了哪里去,而且bloom filter是有误差的。如果,我们跳出面试的思维呢?

我们只需使用个map reduce,map 中就一个cat ,reduce中uniq 的shell命令 就可以了。我们不怕数据量的规模,因为我们可以用N多的节点。相同的数据肯定落在reduce上的相同节点,因为它自带了sort的功能。

就这么简单,几乎就没开发工作量。可见,我们经常的面试,看了过多的面试题,就很容易形成一些思维惯式。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值