第一部分、算法与程序设计
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,颜色黑
评论0
最新资源