2011-02-07 50 views
1

如果有人被要求“为这样那样的设计一个系统”或“你会用什么样的数据结构?”......可以用关系数据库系统回答吗?设计?完成表,实体,它们之间的关系,外键和主键等等?对于使用数据库系统有很多经验的人来说,这样做没问题,但是没有使用数据结构的项目经验?我只知道链接列表,二叉树,二叉搜索树,堆栈和队列......对即将到来的实习生面试感到紧张。有什么建议?数据结构和系统设计问题

回答

1

链接列表,树和堆栈是用于处理程序中数据的工具。数据库表格和表格设计和关系是用于存储数据的工具。这个“系统”使用这两个但是为了不同的目的,但他们确实工作。

“为这样和那样的设计一个系统” 这是一个更高层次的问题,所以我首先从数据库表开始谈谈,然后根据他们之后的详细程度,进入程序细节。

“你会使用什么样的数据结构来处理这样的问题?” 这听起来像是关于算法设计的一个问题,所以这里是你可能被问及树和堆栈的地方。

希望有所帮助:对

+0

你的回答很好。一个悖论:数据库表格和表格设计和关系用于存储和共享数据。如果只是单个应用程序的存储和检索,那么关系设计的大部分浪费都是浪费的。 – 2011-02-07 11:02:22

1

在采访中,(与算法的复杂性和经常),旨在测试与数据结构的熟悉的问题是不是关系数据库。有关系统设计的问题可能涉及数据库设计部分。

你提到的数据结构都很重要。最明显缺失和非常重要的一个是hash tables(或无序映射,以及许多脚本语言中的数据结构的基础,如python中的字典和javascript中的对象/映射)。您还应该阅读btrees,它们通常用于实现关系数据库(并且具有二叉搜索树等属性,但更适合于磁盘存储)。

0

在实习生面试中,这并不好。

我希望你熟悉基本的数据结构,但我不希望你是任何人的专家。 (不管我怎么称呼专家,)我会更关心你如何回答明显超出你目前知识的问题。如果我问你一辆van Emde Boas树的理论优势,“我不知道”可能是正确的答案。 (比欺骗我更好)

但是,作为一个实际问题,您可以将关系设计原理有益地应用于许多显然没有关系的问题。大多数Lotus Notes应用程序都将受益于坚实的关系设计。即使你不能在Notes中声明性地实现约束,你仍然必须以某种方式对它们进行解释 - 例外报告,期间文档爬行,不管怎样。

而且,IIRC,的第一个扩展示例大规模C++设计与C++或OO设计问题一样是一个关系设计问题。 (这件事发表在1996年。我是否那么老?是的,我想我是。)