第一部分、算法与程序设计
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.能够按照卖家查询出其发布的所有商品