到现在为止没有人做出来的题

li1gang11 2007-09-20 04:27:36
1、
考虑一个在线好友系统。系统为每个用户维护一个好友列表,列表限制最多可以有500个好友,好友必须是这个系统中的其它用户。好友关系是单向的,用户B是用户A的好友,但A不一定是B的好友。

用户以ID形式表示,现给出好友列表数据的文本形式如下:
1 3,5,7,67,78,3332
2 567,890
31 1,66
14 567
78 10000

每行数据有两列,第一列为用户ID,第二列为其好友ID,不同ID间用”,”分隔,ID升序排列。列之间用”t”分隔。


要求:
请设计合适的索引数据结构,来完成以下查询:
给定用户A和B,查询A和B之间是否有这样的关系:B是A的二维好友(好友的好友)。
如上例中,10000为1的二维好友,因为78为1的好友,10000为78的好友。

详细说明自己的解题思路,说明自己实现的一些关键点。并给出实现的伪代码实现建立索引过程和查询过程,并说明空间和时间复杂度。

限制:
用户数量不超过1000万,平均50个好友。



2、
请设计一个网页存储系统,能存储千万量级的网页。

要求:
1.支持按照URL为键值的随机添加,删除和修改网页
2.支持多个线程同时添加,修改和删除
3.支持多线程按照入库时间批量的获取网页,并尽可能的快
提示:设计应包括如下几方面:
1.网页的存储方式设计,即硬盘数据的组织形式
2.如何支持随机查找
3.如何优化批量检索
4.增删改查之间的同步和互斥,如何达到最大的并发.
系统限制和一些参考参数:
硬盘400G, 内存4G
硬盘的I/O比内存的I/O速度慢1000倍
硬盘的连续I/O比随机I/O快10倍
网页的平均长度为25K
附加:
请说明你的系统在亿到十亿规模的扩展方法.

3、
为某图书馆开发在线浏览系统,使用户可以通过自定义的图书别名浏览相关联的图书
内容。假设该图书馆有1000万注册用户,馆藏图书1000万部。在线浏览系统允许用户自
定义分类名称,每个分类可以包含若干部书籍。用户可以添加、删除分类,修改分类的
名称(同一用户不允许有名称相同的分类),可以在分类下添加、删除书籍,修改书籍
的别名(同一分类下不允许有名称相同的别名)。现在设定每个用户最多可以自定义10
0个分类,每个分类最多可以包含100部书籍。

A、假定用数据库解决存储问题,请设计相关的数据表结构,并给出设计考虑。

B、请给出下列操作的SQL语句

展示用户A的所有分类

展示用户A所设置的分类F下的所有书籍信息

C、请根据题目A的结果,尝试分析一下当用户数目增长到1亿,馆藏图书达到10亿册,每
天访问用户达到500万,平均每人有10次操作时,系统应当做哪些改进或优化。



4、 假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些歌曲的2^30条URL,但每
首歌的URL不超过2^10个。系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结
果中。现在歌曲名和URL分别通过整型的SONG_ID和URL_ID唯一确定。对该系统有如下需求

1) 通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表
2) 给定一个SONG_ID,为其添加一个新的URL_ID
3) 添加一个新的SONG_ID
4) 给定一个URL_ID,将其置为不可用

限制条件:内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个


为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。如果系统数据量扩
大,该如何多机分布处理?
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwzheng 2007-09-21
  • 打赏
  • 举报
回复
1、
考虑一个在线好友系统。系统为每个用户维护一个好友列表,列表限制最多可以有500个好友,好友必须是这个系统中的其它用户。好友关系是单向的,用户B是用户A的好友,但A不一定是B的好友。

用户以ID形式表示,现给出好友列表数据的文本形式如下:
1 3,5,7,67,78,3332
2 567,890
31 1,66
14 567
78 10000

每行数据有两列,第一列为用户ID,第二列为其好友ID,不同ID间用”,”分隔,ID升序排列。列之间用”t”分隔。


要求:
请设计合适的索引数据结构,来完成以下查询:
给定用户A和B,查询A和B之间是否有这样的关系:B是A的二维好友(好友的好友)。
如上例中,10000为1的二维好友,因为78为1的好友,10000为78的好友。

详细说明自己的解题思路,说明自己实现的一些关键点。并给出实现的伪代码实现建立索引过程和查询过程,并说明空间和时间复杂度。

限制:
用户数量不超过1000万,平均50个好友。

======================
其实就是一个矩阵运算
你可以直接按照矩阵运算优化就可以了
中间件XL 2007-09-21
  • 打赏
  • 举报
回复
第1题可用邻接表数据结构(表示图的一种数据结构)。
输入的数据形成有向图,用户就是图中的节点,节点间有连线为好友
查找A,B是否二维好友相当于从A出发的有向图的两层宽度搜索。
feitianmouse 2007-09-21
  • 打赏
  • 举报
回复
哦买一个哦对

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧