`
envy2002
  • 浏览: 154412 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

谷歌面试题一枚

 
阅读更多

机械开发代码久了,看了看一些面试题,可以活跃大脑,最近网上看了一题面试题。

 

 

 

Google面试题:找几百亿数据的中值
有几百亿的整数,分布的存储到几百台通过网络连接的计算机上,你能否开发出一个算法和系统,找出这几百亿数据的中值?就是在一组排序好的数据中居于中间的数。显然,一台机器是装不下所有的数据,也尽量少用网络带宽。

我的算法训练挺少的,只能自己谈些自己的心得。

1.获得题目,要仔细研读,迅速转化为数学模型。

混乱 -->有序 , 局部-->整体。

大问题化解为小问题来求解。

这时,我们的思路 大概就是出来了:如果每一台机器上的数据都是无序的,我们需要排序,排好序了从这些局部中

综合到整体, 然后获得一个正确答案。

2. 举例归纳。确立问题的边界。

1    4    5    6   15   44    55

3     7  11   12  13  18   35   

总的顺序为 1  3  4   5   6  7  11  12  13   15  18  35  44 55.
总共 14个数,中值为 11 12 。

直白的想法,这是归并排序吗,带宽不允许。

当然,如果题目变成了,求任意个位置的数值,那么归并排序就是一个完全的解空间。

现在题目很特殊,就是一个中值,我们要充分利用这个内涵。

3. 发掘约束,削减解空间。
观察样本,利用直觉,第一排中间是6,第二是12,小于6的全部抛弃, 大于12的全部抛弃。
中值在   15   44    55,  3     7  11   12中寻找,可以吗?

答案好像是可以的,假设中值在问号位置,
  *  ? *      15   44    55

3     7  11   12  13  18   35  

那么 ? < 6 <12, 那么 ? 排在整个序列中,那么它后面还有 4+4> (14/2)了,所以它的位置肯定不为中间,那么同样道理,中值也不肯出现在 下一排的 比较大的那部分,

反证法证完毕。

我们可以通过传送一个值,一下排除一半的数据,同样道理,我们继续总剩下的序列中,通过这个方式,

递归地排除好多数据,最后夹逼到中值,有点类似求极限,呵呵。

当然,这里有些小细节没有给出,如果几排中值相等如何处理等等,如果递归,我想这些聪明的读者已经想到,先到这里吧, 作为一个民工,我他妈的还要继续给老板创造价值,先把那80%不需要头脑的活干完再说。




分享到:
评论

相关推荐

    google面试题.pdf

    ### Google面试题解析 #### 一、一辆校车能装下多少个高尔夫球? **职位:** 产品经理 **解析:** 这类问题考察应聘者的逻辑思维能力和数学估算能力。解题步骤如下: 1. **估计尺寸:** 先估计一辆标准校车的...

    google的面试题

    17. **海盗分金币**:最高级的海盗(5号)应该提出方案:100枚金币全给自己,其余每人一枚。4号和3号会投票支持,因为他们知道自己会得到金币,否则5号会死亡,他们将一无所有。 这些问题揭示了Google面试的多样性...

    微软、谷歌、百度等公司经典面试100题[第101-170题].pdf

    #### 谷歌八道面试题详解 **16. 正整数序列生成** - **题目描述**:设计一个函数生成给定条件下正整数序列的前几项。 - **解决方案**:可以使用优先级队列来维护当前可添加的最小元素。 **17. 字符串大小写字母...

    google interview questions

    从给定的文件信息中,我们可以...通过以上解析,我们不仅理解了谷歌面试中常见的智力题类型及其解法,还学习到了有效的面试策略和行为准则,这对于准备参加谷歌或其他科技公司面试的求职者来说,都是非常宝贵的建议。

    基于springboot+vue的毕业生信息招聘平台课题设计【毕业设计、源码】

    首页、个人中心、企业管理、空中宣讲会管理、招聘岗位管理、毕业生管理、个人简历管理、求职信息管理、信息咨询管理、岗位应聘管理、线上面试管理、面试回复管理、试卷管理、试题管理、管理员管理、论坛管理、系统...

Global site tag (gtag.js) - Google Analytics