2010-10-02 58 views
1

那天我正在看其中一個招聘信息,很驚訝地看到這個要求。 「標準數據結構(b樹,鏈表,哈希)和標準算法(排序,合併,b搜索)的知識」Sr.net開發人員需要了解數據結構嗎?

主要需求是.NET 3.5,C#UI程序員。我在大學時對他們進行了研究,但從未有機會實施它們。

你們有多少人編寫代碼來進行排序或搜索而不使用.net類?爲什麼Sr.net開發人員應該關注這些數據結構和算法,以及如此多的.net類可用?

+6

當您不知道內部數據結構之間的差異時,如何從衆多.NET類中選擇正確的類? ......但這個問題可能過於主觀和有爭議的問題要在這裏回答。 – dtb 2010-10-02 13:31:48

回答

1

多少?沒有。

該要求(很可能來自投資銀行)可能只是爲了測試候選人的科學背景。

UPDATE

我不知道爲什麼你撲我的答案。問題是「你們有多少人編寫代碼來進行排序或搜索而不使用.net類?」我說沒有。你們中的哪一個已經做到了,給予否定的只有你們自己編碼了實際的算法。這不是關於瞭解這些想法的好處,我喜歡深入的知識和理解,而不僅僅是一個如何做的HelloWorld。大家誰知道e個人會證實這一點,

+3

我不僅每天都在使用各種框架(.NET,Java,Cocoa,Ruby,...)中的OP所列出的每種技術,我甚至發現需要一次性實現它們或者其他。恕我直言,每個*高級*開發人員應該能夠做到這一點,它不是火箭科學,而是純粹的基礎知識(編寫散列映射所需的散列算法的唯一例外)。我沒有學位,順便說一句。 – DarkDust 2010-10-02 13:42:05

+0

是的,需求是針對投資銀行的。 – Ken 2010-10-02 13:56:47

+0

感謝所有其他人的意見和答覆。每個回覆都給了我不同的看法。 – Ken 2010-10-02 13:57:49

5

當你不明白你手頭上有哪些工具時,你如何能夠做出決定如何最好地解決問題?是的,一位高級程序員當然必須瞭解這些基礎知識(並且在我的書中,您列出的所有內容都是程序員需要了解的)。

高級程序員的工作是(也)作出決定,尤其是涉及到設計時。不知道你有哪些選擇,你不能做出這些決定。

即使你要「只是」只爲你的餘生做UI編程,你也需要理解這些東西。例如,您需要了解樹是什麼以及它是如何工作的:您的視圖層次結構就是一個。您需要對數據進行排序以將其表示給用戶,因此,如果數據非常大,您需要知道哪些排序算法適合該作業,或者如何將其轉換爲適當的結構(哪些?)以使UI快速和/或不使用大量的內存。

+2

完全不同意。一個正在做.net工作的UI程序員應該使用Lists和Dictionaries,這就是它。他們不需要知道如何實現樹,如果他們想要排序,他們應該在他們的集合上使用.Sort方法。處理大數據集應該在到達用戶界面之前進行,並且只能在需要時才進行。 .net集合API的知識至關重要,知道它們如何實現完全不是UI工作。 – 2010-10-02 14:45:48

+0

是的,他*應該*使用.NET類,我不主張他應該自己實現它們或類似的東西。但他應該*瞭解*背後的基礎知識。他應該何時使用數組,集合或地圖來獲得手頭任務的最佳性能。讓我們面對現實吧:任何UI程序員多長時間只處理UI,而沒有別的?在使用MVC模型時,您還必須編寫控制器並處理模型提供的數據。瞭解如何最好地做到這一點非常重要。特別是對於一個*高級*! – DarkDust 2010-10-02 15:07:37

+1

同意強烈。實現這樣一個數據結構的要求將是非常罕見的(儘管我發現自己實現了DAWG並嘗試着沒有DAWG或者trie結構,以及那些沒有鎖定的版本,但這並不經常出現),但是在這種情況下,需要了解數據結構的基本知識。如果他們沒有這方面的知識,一個老師就不會有希望做好自己的工作。 – 2010-10-02 15:33:52

2

「知識」並不一定意味着「實現」。你知道大「O」嗎?

我不得不在以前的語言中實現這些數據結構和算法中的幾個。我在C#中實現了一些智力練習。有些功能在.NET Framework(黑色/紅色樹,我認爲)中不可用,但代碼可以在網上獲得。大多數情況下,我只需要知道性能BigO()= 1,n,n * m,n^2,n^m,2^n,log n等。

A Sr. developer必須知道他的數據結構選擇的性能。我見過「老」開發人員不關心,直到工作「完成」。這種發展通常不會擴大。

1

這個知識創造你自己的專業背景,幫助你解決另一個現實世界的問題。例如,數據結構知識可幫助您在某些情況下選擇正確的數據結構,這有助於您瞭解應用程序中發生的情況,並便於構建自己的應用程序。

有關O-notation的基本知識也可能幫助您在不同的數據結構或算法實現之間進行選擇。

我懷疑你應該有創建自己的數據結構的經驗,但我相信即使在LINQ-epoch中這些知識也可能對你有所幫助。

1

是的,也適用於初級.Net開發人員。各級有效的開發人員不需要猜測他們的代碼是否符合要求。

相關問題