(讨论)百度2010校园招聘网络笔试题
题目百度2010校园招聘全国笔试题RD-3
温馨提示:
1. 本次考试为闭卷考试,请保证独立完成试卷;
2. 请深入思考每一个问题,方法不会只有一种,请尽情发挥,充分展示你的才华;
3. 解决问题是一门权衡的艺术,如果有可能,请说明你的考虑;
4. 若写不出具体代码,也请写明解题思路;
5. 题目或许有难有益,请通览试卷后进行答题,尽可能多的完成你所擅长的题目;
准备好!笔试马上开始。
“框”广天地,大有所为!祝同学们都能够取得好成绩!
本试卷共分为两个部分,共4道题。
第一部分、算法与程序设计
1.在一棵一般的二叉树中找到指定的元素,如果有重复出现的元素,要求元素为深度最深的任何一个。指定元素找不到时返回EMPTY_NODE,请用C语言实现,相关数据结构与函数声明如下:
struct Node
{
int iValue;
int id;
Node *pLeft;
Node *pRight;
};
const Node EMPTY_NODE = {0, 0, NULL, NULL};
Node findDeepest(Node *pRoot, int iWanted); //pRoot为根节点,wanted为指定元素的iValue
2.一个单词字典库,单词个数约为10万,每个单词长度不超过16,单词都是由小写字母组成,同时给出16个小写字母,请设计一种高效算法来找到用这些给 出字母拼出一个字典中最大长度的单词。给出的16个字母每个字母最多使用一次,也可以不使用。存在多解的时候给出任意一个最优答案就行。
例如:给出adeenrstuvxyzuki可以拼出adventures
请详细描述你的算法思路(如需要,可给出代码\伪代码来辅助描述),并分析其时间复杂度。最后请分析下你的算法以及数据结构的优缺点,存在哪些可改进的地方。
第二部分、系统设计题
1. 有200亿条数据,每条数据的大小在1K~1M不等,每条数据有一个唯一的u_int64的id。
请设计一个读取数据系统,能根据id获取数据。要求:
A. 内存有限制,16G
B. 尽可能利用内存资源
C. 尽可能高效的获取数据
D. 可以利用磁盘,磁盘容量不受限制
2. C2C网站的商品子系统,包括的关系数据有 分类、属性、商品。
一个商品只能属于一个分类,不同的分类有不同的属性(多个),每个属性有多个候选属性值,其中分类、属性、属性值的更新频率较低。
一个商品的属性,是所属分类的属性,属性值是候选属性值中的一个或多个。
例如:
分类:衣服
属性:尺寸、颜色
尺寸的候选属性值:S/M/L/XL/XXL/XXXL
颜色的候选属性值:黑/白/红/黄/蓝
商品:衣服A,尺寸S,颜色黑
另外,商品还有卖家、价格等其它信息
请设计商品子系统的存储结构或数据库结构。要求:
A. 能够正确维护分类、属性、商品之间的关系数据
B. 尽量减少冗余
C. 考虑数据的增、删、改、查操作,效率尽可能高
D. 能够按照卖家查询出其发布的所有商品