在不少程序員看來,數據結構,算法這一類的東西感受沒用,在實踐中都不經常使用,因此都會很忽視這類內容,可是在不少公司看來,尤爲是大公司看來數據結構和算法這種東西確實最有用,並且常常在筆試和麪試中出現。爲何會這樣呢?程序員
一、看似最枯燥、最基礎的東西每每具備最長久的生命力面試
像數據結構,算法這類東西,還有有一些計算機原理之類的知識,這些東西都是編程和實踐的根本。他們看似枯燥和基礎,可是具備最長久的生命力。算法
我知道,你可能熟悉各類框架,各類開源庫的使用,可是那又怎樣?看着各類框架和開源庫的文檔,只要有編程基礎,誰不會照着葫蘆畫瓢呢?spring
不要每天談什麼框架,什麼庫,框架每一年層出不窮,但是扒下框架那層炫酷漂亮的外衣,裏面仍是那些最基礎的知識和原理。就是這些算法,數據結構,計算機網絡,計算機原理這些看似基礎的東西。若是這些掌握紮實了,你纔有更加深一步的可能。編程
編程語言和編程框架等這些表面的東西,對於一個基礎紮實的程序員來講,學習起來很快,成長也很快,若是這些基礎和原理都懂,你就可能會寫出這樣的框架來。技術更新迭代快,語言層出不窮,可是數據結構,算法,計算機原理這類的東西確實沒有變。性能優化
二、數據結構和算法在面試的時候最容易量化和體現能力微信
什麼意思呢?在面試或者筆試的時候,面試數據結構和算法,能夠面出你的思惟能力,思考能力,這個能力對於編程來講很重要。好比:若是面試你使用過什麼框架嗎?你說:會,使用過,而後你談了談使用這些框架的一些知識和遇到的坑,以及怎麼解決的?經過這樣的問題,不能看出的思惟能力和編程能力,只能看出你確實會用這個東西。網絡
而面試算法和數據結構不同了,覺得面試這種東西可讓你寫出來,或者寫僞代碼,並且這些能力若是你有,你的成長空間也高。面試你編程的實踐能力,不可能讓你上機去敲一個模塊的實現吧?而讓你寫個算法和數據結構卻很方便,也能夠量化。歡迎你們關注個人微信公衆號:非著名程序員數據結構
因此,不少人平時不用算法和數據結構,在跳槽的時候,也會提早去複習算法和數據結構的知識,由於這是面試中很常見的問題。可是我仍是建議你們可以一直有這種能力。不要由於不經常使用而忽視這些基本的東西,這些東西纔是精華。架構
目前大部分程序員是不重視這類東西的。而優秀的程序員是很是重視這些東西的,因此他們才優秀。要想優秀的話,你懂得。
注:關注做者微信公衆號,瞭解更多分佈式架構、微服務、netty、MySQL、spring、、性能優化、等知識點。
公衆號:《 Java大蝸牛 》