怎么看待程序員普遍缺乏數(shù)據(jù)結(jié)構(gòu)和算法的知識?
在很多程序員看來,數(shù)據(jù)結(jié)構(gòu),算法這一類的東西感覺沒用,在實踐中都不常用,所以都會很忽視這類內(nèi)容,但是在很多公司看來,尤其是大公司看來數(shù)據(jù)結(jié)構(gòu)和算法這種東西確實最有用,而且經(jīng)常在筆試和面試中出現(xiàn)。為什么會這樣呢?
1、看似最枯燥、最基礎(chǔ)的東西往往具有最長久的生命力
像數(shù)據(jù)結(jié)構(gòu),算法這類東西,還有有一些計算機原理之類的知識,這些東西都是編程和實踐的根本。他們看似枯燥和基礎(chǔ),但是具有最長久的生命力。
我知道,你可能熟悉各種框架,各種開源庫的使用,但是那又怎樣?看著各種框架和開源庫的文檔,只要有編程基礎(chǔ),誰不會照著葫蘆畫瓢呢?
不要天天談什么框架,什么庫,框架每年層出不窮,可是扒下框架那層炫酷漂亮的外衣,里面還是那些最基礎(chǔ)的知識和原理。就是這些算法,數(shù)據(jù)結(jié)構(gòu),計算機網(wǎng)絡(luò),計算機原理這些看似基礎(chǔ)的東西。如果這些掌握扎實了,你才有更加深一步的可能。
編程語言和編程框架等這些表面的東西,對于一個基礎(chǔ)扎實的程序員來說,學習起來很快,成長也很快,如果這些基礎(chǔ)和原理都懂,你就可能會寫出這樣的框架來。技術(shù)更新迭代快,語言層出不窮,但是數(shù)據(jù)結(jié)構(gòu),算法,計算機原理這類的東西確實沒有變。
2、數(shù)據(jù)結(jié)構(gòu)和算法在面試的時候最容易量化和體現(xiàn)能力
什么意思呢?在面試或者筆試的時候,面試數(shù)據(jù)結(jié)構(gòu)和算法,可以面出你的思維能力,思考能力,這個能力對于編程來說很重要。比如:如果面試你使用過什么框架嗎?你說:會,使用過,然后你談了談使用這些框架的一些知識和遇到的坑,以及怎么解決的?通過這樣的問題,不能看出的思維能力和編程能力,只能看出你確實會用這個東西。(http://godcoder.me/about/)
而面試算法和數(shù)據(jù)結(jié)構(gòu)不一樣了,以為面試這種東西可以讓你寫出來,或者寫偽代碼,而且這些能力如果你有,你的成長空間也高。面試你編程的實踐能力,不可能讓你上機去敲一個模塊的實現(xiàn)吧?而讓你寫個算法和數(shù)據(jù)結(jié)構(gòu)卻很方便,也可以量化。歡迎大家關(guān)注我的微信公眾號:非著名程序員
所以,很多人平時不用算法和數(shù)據(jù)結(jié)構(gòu),在跳槽的時候,也會提前去復(fù)習算法和數(shù)據(jù)結(jié)構(gòu)的知識,因為這是面試中很常見的問題。但是我還是建議大家能夠一直有這種能力。不要因為不常用而忽視這些基本的東西,這些東西才是精華。
目前大部分程序員是不重視這類東西的。而優(yōu)秀的程序員是非常重視這些東西的,所以他們才優(yōu)秀。要想優(yōu)秀的話,你懂得。
這是我在知乎的一篇回答,感覺非常的有意義,所以在這里分享給大家。