微软100题(38)几道百度面试题

本文详细探讨了在大数据环境下,通过高效算法解决实际问题的策略。首先,介绍了利用天平找出轻球的数学原理及计算公式,进而解释了如何在有限内存条件下随机抽取大量记录的方法。接着,提出了处理大量URL字符串并去除重复项的优化方案,包括使用哈希映射技术分而治之,以及在处理过程中保持时间与空间复杂度的最优。文章深入浅出地阐述了这些问题背后的逻辑与实践步骤,旨在提供一套适用于大数据处理场景的技术解决方案。

题目:百度面试:
1.用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,使用x次天平,
最多可以从y个小球中找出较轻的那个,求y与x的关系式。

2.有一个很大很大的输入流,大到没有存储器可以将其存储下来,
而且只输入一次,如何从这个输入流中随机取得m个记录。

3.大量的URL字符串,如何从中去除重复的,优化时间空间复杂度


1.解答:

将小球分成三堆:A B C ,如果A == B,那么就在C里面,A<B,在A里面,否则在B里面

x==1 => y==3  x==2 => y==9称一次,把总量缩小到1/3,所以 y=3^x;


2.解答:

http://c.blog.sina.com.cn/profile.php?blogid=eb52001d89000ljl

http://blog.youkuaiyun.com/jiyanfeng1/article/details/7937715

都讲的挺好

用大小为m的数组arr[0:m-1]来保存随机抽取的元素,arr[0:m-1]逐步初始化为输入流的前m个元素的一个随机排列。
对于输入流中的第k (k>m)个元素,随机生成一个[0,k-1]区间内的整数i,如果此随机整数i小于等于m,那么就用第k个元素覆盖掉arr[i-1],否则,丢弃第k个元素。
注意,每从输入流中提取一个新元素,我们都要随机生成一个整数,而此整数的有可能出现的范围都要加1.

 

3.解答:

海量数据处理,如果url个数上亿,那么可以——分而治之/hash映射:遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件,相同的url一定在同一个小文件里面

然后处理每个小文件,可以继续设计hash函数,hash(url)相等时候,判断url是不是一样,将每个小文件中的url去重,最后再将这1000个文件合并


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值