2

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

4

3 回答 3

1

在实习面试中,这是不行的。

我希望您熟悉基本数据结构,但我不希望您成为其中任何一个方面的专家。(无论如何,我不会称之为专家。)我更感兴趣的是你如何回答明显超出你当前知识范围的问题。如果我问你关于 van Emde Boas 树的理论优势,“我不知道”可能是正确的答案。(总比试图诈唬我好。)

但是,作为一个实际问题,您可以将关系设计原则有效地应用于许多明显不相关的问题。大多数 Lotus Notes 应用程序都会受益于可靠的关系设计。即使您不能在 Notes 中以声明方式实现约束,您仍然必须以某种方式考虑它们——异常报告、期间文档抓取等。

而且,IIRC,大规模 C++ 设计中的第一个扩展示例与 C++ 或 OO 设计问题一样是关系设计问题。(那东西发表于 1996 年。我有那么老吗?是的,我想我是。)

于 2011-02-07T22:10:59.747 回答
1

在面试中,旨在测试您对数据结构(通常是算法复杂性)的熟悉程度的问题与关系数据库无关。关于系统设计的问题很可能涉及数据库设计部分。

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

于 2011-02-07T09:32:31.920 回答
1

链表、树和堆栈是对程序中的数据进行操作的工具。数据库表和表设计和关系是存储数据的工具。“系统”同时使用这两种方法,但目的不同,但它们确实可以协同工作。

“为某某设计一个系统” 这是一个更高层次的问题,所以我首先要讨论数据库表,然后根据它们所追求的细节,进入程序细节。

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

希望有帮助:p

于 2011-02-07T09:21:17.267 回答