如果有人问你“为某某设计一个系统”或“你会为某某使用什么数据结构?”...is,你可以用关系型数据库系统设计来回答吗?是否包括表、实体、它们之间的关系、外键和主键等?对于有大量数据库系统使用经验,但没有使用数据结构的项目经验的人来说,这样做可以吗?我只知道链表,二叉树,二叉树,堆栈和queues...nervous为我即将到来的实习生面试。有什么建议吗?
发布于 2011-02-07 17:21:17
链表、树和堆栈是用于处理程序中数据的工具。数据库表和表设计以及关系是用于存储数据的工具。“系统”同时使用这两种方法,但目的不同,但它们确实可以协同工作。
“为某某设计一个系统”这是一个更高层次的问题,因此我将首先讨论数据库表,然后根据它们所追求的细节,进入程序细节。
“你会为某某使用什么数据结构?”这听起来像是一个关于算法设计的问题,所以这里可能会问到关于树和堆栈的问题。
希望这能有所帮助:p
发布于 2011-02-07 17:32:32
在面试中,旨在测试您对数据结构(通常是算法复杂性)的熟悉程度的问题与关系数据库无关。关于系统设计的问题很可能涉及到数据库设计部分。
你提到的数据结构都很重要。最明显缺少且非常重要的是hash tables (或无序映射,它是许多脚本语言中数据结构的基础,如python中的dict和javascript中的对象/映射)。您还应该阅读btrees,它通常用于实现关系数据库(具有二进制搜索树等属性,但更适合于磁盘存储)。
发布于 2011-02-08 06:11:00
在一次实习生面试中,这是不好的。
我希望您熟悉基本的数据结构,但我不希望您是其中任何一个方面的专家。(无论如何,这不是我所说的专家。)我更感兴趣的是你如何回答那些显然超出你目前知识范围的问题。如果我问你van Emde Boas树的理论优势,“我不知道”可能是正确的答案。(总比试图吓倒我好。)
但是,作为一个实际问题,您可以将关系设计原则有益地应用于许多不是明显相关的问题。大多数Lotus Notes应用程序都将受益于可靠的关系设计。即使您不能在Notes中声明性地实现约束,您仍然必须以某种方式说明它们--异常报告、周期文档爬行等等。
并且,IIRC,大规模C++设计中的第一个扩展示例与C++或OO设计问题一样是一个关系设计问题。(那本书发表于1996年。我有那么老吗?是的,我想我是。)
https://stackoverflow.com/questions/4919451
复制相似问题