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

来源:互联网 发布:心动网络用户中心在哪 编辑:程序博客网 时间:2024/05/22 17:18

题目:百度面试:
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.csdn.net/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个文件合并


0 0
原创粉丝点击