2011-02-07 48 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年。我是否那麼老?是的,我想我是。)