http://www.blogjava.net/ITdavid/archive/2008/01/24/177424.html
1、 一个简单的论坛系统,以数据库储存如下数据:
用户名,email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容。每天论坛访问量300万左右,更新帖子10万左右。
请给出数据库表结构设计,并结合范式简要说明设计思路。
2. 请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的功能。已经给定一个函数,可以由字符串映射到一个签名,每个签名由两个unsigned int类型组成。假设每一个字符串能够对应唯一的一个签名,完全没有重复(或者重复的概率可以忽略),并且签名分布足够均匀。
请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?如果操作很频繁,该如何优化?
3. 有100亿个URL,要求设计一个系统,能实现url的添加、删除、更新,并能查看url的内容。
5. 数据库题
设计一个游戏积分系统,能够实现以下功能:1,用户在客户端结束游戏后,能够通过相应接口将积分进行上传;2,服务端保存结果并能展示该游戏的积分排行情况,分数按照从高到低排列,相同分数下按照提交时间的先后排定顺序;3,排行榜只展现排名前200的用户;4,同一个用户多次提交的情况下,只取分数最高的一次记录;5,系统要有一定的扩展性,能够灵活的增加、删除一个游戏。
要求:1,阐述客户端和服务端如何进行交互,交互流程是怎样的,设计合理的交互过程及接口。
2,设计服务端存储系统,阐述采用的存储方案,如果是使用数据库,详细说明表的结构索引等。
3,系统要求有很强的防zuobi功能,能够屏蔽用户自己伪造数据提交成其他的
spam行为。
4,在满足功能的前提下,能够尽量提高整套系统的效率,例如:降低负载、缩
短响应时间等。
5,同时在线游戏的用户有百万级,因此单机很可能承受不了这么大的浏览压力,在设计系统的时候要考虑多台服务器如何部署,怎样保证负载均衡
说明:
1,用户的登录信息系统可以直接获取到,设计的时候不用考虑这个问题
2,要求中第5条为附加功能,在满足功能的前提下再考虑多服务器的部署问题
3,客户端与服务器的交互采用简单的HTTP协议即可,不用考虑其他交互方式。
7.系统设计题
历史操作信息分页显示设计。现有一系统,需要保存用户6个月内的操作信息以提供给用户查询,由于历史操作的数据量特别大,采用每个月的操作信息保存在一张数据表的形式存显示总的符合查询条件的记录数以及总的页数2,以上系统采用WEB形式实现。
8、系统设计题(35分)
在一个有1000万用户的系统中,设计一个推送(feed)系统。以下是一些预定义概念
1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简写为uid);则uid的范围是从1到1000万的正整数。
2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以被解除
3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发表的文章;每篇文章通过一个blogid表示。
4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系统中就是所有好友的文章更新列表。
5、访问量要求:所有feed访问量每天在1亿量级;所有的blogid增加量每天在百万量级。
题目:请在以上限制条件下,设计一个高效的feed访问系统。
要求:
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed;feed的展现按照时间倒排序,最新的在最前面
2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友feed都是未被删除的
3、尽可能高效。
9. 在一个复杂广告系统中,需要很多系统协同工作,其中包括众多定时任务(最初配置在linux crontab中调度\管理)的相互依赖,例如:A任务是一个每天定时处理日志的计算任务、B任务是一个反zuobi任务,B任务需要读取A任务产生的结果文件, A、B任务由于系统资源限制、运行在不同物理机器上。在这样一个环境中,为了保障这些任务的有序调度和运行,需要一个任务调度系统存在。这里请设计一个任务调度系统来取代原始的linux crontab模式。(提示:调度系统中尽量不要存在单点,如果存在单点、则请指出优缺点对比;任务之间的依赖关系需要机制来严格保证;)
根据以上背景完成如下问题:
1、给出一个系统整体结构图,并简要描述系统各个部份功能、整体调度运行流程;
2、任务调度系统中需要管理上千个定时任务,每个定时任务需要一个数据结构来描述,请用C结构体语法描述一个任务单元、并注释每个结构体成员的含义