百度笔试题5.2

来源:互联网 发布:大屏电子书阅读器 知乎 编辑:程序博客网 时间:2024/06/05 11:37

二:算法题

你现在有一个文件,文件中顺序存有N个记录,R1,R2,...,RN,这些记录不是有序的,但是你知道一个整数M,这些记录满足R1<R2<...<RM以及RM+1<RM+2<...RN.

1,设计一个算法或编写一个程序,将文件中的记录排序为R1'<R2',<…<,RN',算法或程序读取文件的次数为O(N),不限内存使用。

2,设计一个算法或编写一个程序,将文件中的记录排序为R1'<R2'<...<RN',算法或程序读写文件的次数为O(N),空间复杂度为O(1)(亦即,你使用的内存大小和M,N均无关。)

 

Answer1:

第一个问题,因为内存不限,文件可能很大,内存无法一次容纳,所以分批将文件中的记录多次读入内存,然后进行外部排序。

 

 

 

 

 

三:系统设计题

网络上所有的链接都可以用以下的三元素进行描述:

From_url(链接所在页面的URL

to_url(链接所指向的URL

anchor(链接在页面上所显示的内容)

现在假设所有的网页链接信息(from_url / to_url /anchor)按from_url为轴都存储在M个(M1k以内)巨型数据库中:

1  链接存储形式:from_url  to_url  anchor

2  一个from_url的所有的to_url都存储在同一个数据库中;

3  假设每个数据库存储的数据量相同

4  要求设计一个获取所有链接分发程序,将这些数据均匀分发到N个远程数据库中(N:100以内)要求做到:1所有to_url相同的链接需要分到同一个远程数据库,2所有to_url的站点相同的需要分发到同一个远程数据库,3每个远程数据库获取的链接总数要尽量均匀,4每台数据库完成时间尽量保持一致5,获取网页的速度尽量快(从数据库中)

说明:对于urlhttp://mp3.baidu.com/m?tn=baidump3,其中mp3.baidu.com属于站点信息。

Answer

对题目看得有点晕,是不是对于fromurl作散列,然后计算出存在哪个数据库上?然后再对tourl作散列,计算出存在哪个数据库上?当然也可以自己设计一个算法,将计算结果控制在1-M,之间(但如果以后数据库再加就不好办了)

由于散列算法很散,所以基本上每台服务器上的数据量相同。(自己设计的算法就不容易保证均匀)


不过没看明白为什么发到N个远程数据库,是做备份么?还是每个数据发的都不同?如果是备份,就根据散列后的数值,算出1组服务器(N个)。

原创粉丝点击