對(duì)數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識(shí) 我現(xiàn)在沒學(xué)完C語言,但是學(xué)校已經(jīng)開了數(shù)據(jù)結(jié)構(gòu)課程,感覺像聽天書一樣,如何更好地理解數(shù)據(jù)結(jié)構(gòu)?
我現(xiàn)在沒學(xué)完C語言,但是學(xué)校已經(jīng)開了數(shù)據(jù)結(jié)構(gòu)課程,感覺像聽天書一樣,如何更好地理解數(shù)據(jù)結(jié)構(gòu)?首先,我覺得作為一個(gè)大學(xué)生,自學(xué)能力很強(qiáng)。對(duì)于C語言沒有學(xué)完的,可以花時(shí)間認(rèn)真學(xué)習(xí)。不,你可以去圖書館查資料
我現(xiàn)在沒學(xué)完C語言,但是學(xué)校已經(jīng)開了數(shù)據(jù)結(jié)構(gòu)課程,感覺像聽天書一樣,如何更好地理解數(shù)據(jù)結(jié)構(gòu)?
首先,我覺得作為一個(gè)大學(xué)生,自學(xué)能力很強(qiáng)。對(duì)于C語言沒有學(xué)完的,可以花時(shí)間認(rèn)真學(xué)習(xí)。不,你可以去圖書館查資料,或者上網(wǎng),或者自學(xué)。現(xiàn)在網(wǎng)絡(luò)平臺(tái)有很多優(yōu)質(zhì)資源,你可以試試。第二,數(shù)據(jù)結(jié)構(gòu)的算法是抽象的,必須認(rèn)真研究。它是編程的基礎(chǔ),與C語言沒有必然的聯(lián)系。我們可以用C語言實(shí)現(xiàn)一些算法。它也可以用其他語言實(shí)現(xiàn)。
第三,對(duì)自己有信心。沒有問題可以與老師和同學(xué)交流。既然我們選了一個(gè)好專業(yè),就應(yīng)該深入學(xué)習(xí)。
這是我的一些看法,希望對(duì)您有所幫助
為什么剛?cè)腴T的程序員沒有感覺到算法和數(shù)據(jù)結(jié)構(gòu)的重要性?
關(guān)于這個(gè)問題,我首先非常遺憾地告訴大家兩點(diǎn)。
首先,能夠問這個(gè)問題意味著你不是一個(gè)程序員。只能說你才剛剛開始學(xué)習(xí)編程(即使你有一份編程工作,你也不能改變這一點(diǎn))。就像說一個(gè)剛學(xué)了三個(gè)月吉他的人不能稱自己為吉他手(但他可以說是吉他手或吉他手)。
其次,我很抱歉地告訴你,你還沒有開始。入門的先決條件之一是理解程序?qū)嶋H上是一個(gè)算法數(shù)據(jù)結(jié)構(gòu)。所以你說你是一個(gè)入門級(jí)程序員,但你不覺得算法和數(shù)據(jù)結(jié)構(gòu)的重要性。那么我想問一下,除了算法和數(shù)據(jù)結(jié)構(gòu)之外,程序中還有什么重要的東西。
不理解狹義的算法,認(rèn)為算法是排序算法、搜索算法,認(rèn)為數(shù)據(jù)結(jié)構(gòu)是數(shù)組、鏈表、哈希表、圖形等。這些都是經(jīng)典的算法和數(shù)據(jù)結(jié)構(gòu)。
你寫的程序,不能有任何這些經(jīng)典的數(shù)據(jù)結(jié)構(gòu)和算法,那么,你的程序沒有算法和數(shù)據(jù)結(jié)構(gòu)嗎?你的程序必須解決一個(gè)問題或做些什么。這些東西,你首先需要在計(jì)算機(jī)世界建立一個(gè)模型,這個(gè)模型就是數(shù)據(jù)結(jié)構(gòu)?;谶@些數(shù)據(jù),您的程序需要執(zhí)行一些指令,這些指令是作為一個(gè)整體的算法。因此,program=algorithm數(shù)據(jù)結(jié)構(gòu)就是在這個(gè)廣義上說的。
正是因?yàn)椤俺绦?算法數(shù)據(jù)結(jié)構(gòu)”,所以沒有了算法和數(shù)據(jù)結(jié)構(gòu),程序中就沒有殘留。至于算法和數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系,我不在這里討論??傊?,沒有數(shù)據(jù),算法就沒有對(duì)象和基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和合理性將影響算法的性能。
為什么你感覺不到?答案是我答案開頭的兩點(diǎn)。我說的話似乎有點(diǎn)殘忍,但實(shí)際上沒什么。繼續(xù)學(xué)習(xí)。
程序員需要終身學(xué)習(xí)。
面一個(gè)5年java,不知數(shù)據(jù)結(jié)構(gòu),卻大談分布式,這樣的能要嗎?
我猜您向人們?cè)儐柫烁鞣NJDK數(shù)據(jù)結(jié)構(gòu)的基本實(shí)現(xiàn)原則。事實(shí)上,我一直在想。知道基本的實(shí)現(xiàn)原則是可以的,也是值得的,但是如果你不知道呢?人們知道哪些數(shù)據(jù)結(jié)構(gòu)適用于哪些場(chǎng)景,并且能夠熟練地使用它們。那不是。。。夠了嗎?對(duì)貴公司的需求不足嗎?你希望他為你的公司創(chuàng)建一個(gè)新的數(shù)據(jù)結(jié)構(gòu)嗎?就像two peas或JDK一樣,JDK的數(shù)據(jù)結(jié)構(gòu)性能遇到了瓶頸,求職者會(huì)給你提供比工作提供的數(shù)據(jù)結(jié)構(gòu)更好的數(shù)據(jù)結(jié)構(gòu)。
程序員為什么要學(xué)數(shù)據(jù)結(jié)構(gòu),面試為什么要考察數(shù)據(jù)結(jié)構(gòu)?
數(shù)據(jù)結(jié)構(gòu)是幾乎每個(gè)程序員都參與的主題。如果程序員不理解數(shù)據(jù)結(jié)構(gòu),他只能是一個(gè)程序員。
數(shù)據(jù)結(jié)構(gòu)通常伴隨著另一個(gè)詞,即“算法”。數(shù)據(jù)結(jié)構(gòu)與算法是軟件工程專業(yè)的重要課程。數(shù)據(jù)結(jié)構(gòu)和算法相輔相成,知識(shí)淵博。
盡管您進(jìn)入公司是為了編寫業(yè)務(wù)代碼,但您使用的許多東西都與數(shù)據(jù)結(jié)構(gòu)有關(guān),例如Java語言。使用封裝的集合類。實(shí)際上,如果點(diǎn)擊這些類來查看源代碼,編寫這些集合類就充滿了數(shù)據(jù)結(jié)構(gòu)和算法的知識(shí)。
面試官喜歡詢問數(shù)據(jù)結(jié)構(gòu),它測(cè)試面試官的許多方面。一是測(cè)試編程基礎(chǔ),二是測(cè)試對(duì)Java等語言的理解深度,三是測(cè)試你的邏輯思維。
數(shù)據(jù)結(jié)構(gòu)是各種語言的重要組成部分,無論是Java還是Python都必須包含數(shù)據(jù)結(jié)構(gòu)。所以數(shù)據(jù)結(jié)構(gòu)不屬于哪種語言,甚至很多操作系統(tǒng)的底層實(shí)現(xiàn)都與數(shù)據(jù)結(jié)構(gòu)密切相關(guān)。例如,內(nèi)存的原理可以用數(shù)據(jù)結(jié)構(gòu)中的堆棧和隊(duì)列來解釋。
大家對(duì)于大數(shù)據(jù)怎么看?
如歷史氣象統(tǒng)計(jì),我們可以根據(jù)數(shù)據(jù)看到氣候變化,總結(jié)防洪、防澇、防災(zāi)的規(guī)律。比如利用交通數(shù)據(jù),根據(jù)大數(shù)據(jù)得到低估的高峰時(shí)間點(diǎn),然后根據(jù)數(shù)據(jù),根據(jù)下一年的時(shí)間節(jié)點(diǎn),科學(xué)安排運(yùn)力。一些平臺(tái)會(huì)根據(jù)大數(shù)據(jù)在某個(gè)時(shí)間節(jié)點(diǎn)漲價(jià)[我要安靜]。也有一些非法手段通過你的大數(shù)據(jù)知道你的很多個(gè)人信息。所以這是一把雙刃劍,數(shù)據(jù)平臺(tái)已經(jīng)非常強(qiáng)大,而且相關(guān)的立法管理還不完善,請(qǐng)大家多注意保護(hù)自己的隱私。