-
1 # xiuxiuing
-
2 # IT人劉俊明
資料結構和演算法設計是程式設計的核心,所以學好資料結構對程式設計師來說還是非常重要的,但是也不是說資料結構學的不好就不能做程式設計師,因為對於應用級程式設計師來說,大部分資料結構已經封裝好了,直接使用就可以了。
什麼是資料結構呢?資料結構是組織資料的方式,資料結構在很大程度上決定了演算法的執行效率,所以資料結構往往與程式的效率關係緊密。資料結構分為邏輯結構、儲存結構和運算,邏輯結構包括集合、線性結構、樹形結構和圖形結構,一般常見結構包括陣列、棧、佇列、樹、連結串列、圖、堆等。
要想學好資料結構一定要多做實驗,尤其是對比實驗,透過不同的資料結構來觀察演算法的執行效率,這對學習資料結構有非常大的幫助。說白了資料結構的概念往往比較抽象,如果能透過程式程式碼來建立一個畫面感的話,會非常有助於對概念的理解。
一般研發級程式設計師對資料結構的要求比較高,因為研發級程式設計師幾乎每天都要跟各種演算法打交道,而演算法一定要結合資料結構。
對於應用級程式設計師來說,接觸演算法的機會並不多,而且應用級程式設計師佔據了程式設計師群體的大部分比例。因為目前計算機解決的大部分問題都是管理問題,所以演算法的接觸並不多。也就是說如果做Web開發、移動互聯開發,即使資料結構學的並不好,也不會在很大程度上影響程式設計工作的開展。
但是,如果想在程式設計師的道路上走得更遠,還是建議系統的學習一下資料結構和演算法設計,畢竟研發級程式設計師的發展空間更大,職業生命週期也更長。
如果有軟體開發方面的問題,或者是考研方面的問題,都可以諮詢我。
-
3 # 噴噴老師
程式設計的過程實際上是一個確定物件關係,劃分職能模組,處理通訊方式的過程,本質上是一個完善邏輯的過程。而良好的邏輯體現在程式設計領域的各個方面,下至作業系統,資料結構的實現,上至業務程式碼的編寫,都是以良好的邏輯思維能力為基礎的。而一名優秀的程式設計師,能夠做到將程式語言與自然語言自如切換。
題主說到資料結構學的不好,對於一個初級程式設計師,這裡可以從兩個方面來談。如果僅僅是在業務應用層面上,我們常用的資料結構已經可以解決大部分問題,題主會使用列表,字典以及簡單的樹,知道怎麼增刪改查遍歷等其實已經夠用了。更為重要的是你是不是真的明白了這些資料結構的實現邏輯與使用場景。其實看你能不能自己親手實現這些資料結構就可以知道你的邏輯思維能力如何了。如果你覺得再怎麼努力也弄不懂的話,那的確應該好好思考一下將來的規劃了。因為程式設計終究是考量的邏輯能力(其實還有溝通協調的能力),的確,作為程式設計師可以不去造輪子,但能不能用好輪子還是要看你的邏輯思維的。等你開始工作後會遇到許許多多的問題,大部分問題其實都和資料結構沒啥關係,但是如果你不具備解決新問題的能力,那麼想要有長久的發展就會比較難。
但還是那句話,無論你以為從事哪個行業,問題總是層出不窮的,而努力學會找到解決問題的方法比面對困難就選擇逃避要強上百倍。
-
4 # 一個存在感小透明
作為面試官,如果我認為你的資料結構不好,可能一面都不會給你過。
首先說明,我的面試官經歷主要是針對在校生。
對於大學生來說,演算法與資料結構是他們本科的必修課,如果資料結構都不紮實,說明他的基礎課程就沒有認真學,那還談什麼做一個優秀的程式設計師。
我們在面試實習生/校招生的時候,通常是根據簡歷,如果簡歷上有專案經驗,一定會針對專案經驗展開問詢,瞭解他在過去的專案中做了哪些事情,承擔了什麼樣的工作,從程式設計能力與團隊合作能力兩個角度來綜合評估面試者。
如果沒有參與大型專案的經驗,也完全是可以的,我們可能會問是否自己使用一些流行的框架或者工具做過什麼小專案,這樣的問題也是可以瞭解學生的自學能力,也足夠評估學生的水平。
如果學生這方面經驗也沒有的話,我們就會轉而專攻演算法與資料結構。因為如我上面所說,學校可能沒給你機會參加大的專案開發,但是學校肯定教你資料結構和演算法了,如果問你陣列,連結串列,堆疊,佇列,樹,圖,深度優先,廣度優先,動態規劃,你還是表現的不太擅長,那麼請問你拿什麼來說服面試官,你有能力做一個優秀程式設計師呢?一個連課都不好好上的人,我們怎麼相信他的能力呢,畢竟不是人人都像扎克伯格一樣可以退學創業。再退一步說,人家扎克伯格雖然不好好上課最後退學了,但是人家有專案經驗啊。
因此,如果你想做一名程式設計師,一定要打好基礎,好好研究資料結構。
如果你絕得我說的太抽象了,那麼推薦給你一本書,我能保證,學懂這本書的三分之二,BAT的實習隨你挑。書名叫《資料結構與演算法分析》,這本書有java語言也有C語言的,可用根據你的情況自行挑選。
回覆列表
不適合,資料結構是程式設計師最核心的一門課,你要能理解資料的組織形式。相對來說,程式語言也沒用資料結構重要。資料結構是程式設計的思想,程式語言只是實現程式設計的工具。
就好比中文英文只是用來表達的工具,而如何表達,怎麼組織語言則是資料結構的思想。