首先,JAVA與算法不是綁定關(guān)系,即Java不僅可以實現(xiàn)算法,而算法也不一定非要用java來寫。所以題主的問題,我認為其重點在于算法。
提高算法能力方法一:書籍
在計算機本科學習課程中,會有專門的課介紹算法,我們當時用的是中文版的《算法導(dǎo)論》,這本書現(xiàn)在某電商網(wǎng)站上打出的旗號是“程序員必讀經(jīng)典”,這可是連《thinkinginjava》都不敢說的,為什么?
因為程序員可以不會JAVA,但是不可以不會算法。編程語言只是工具,算法才是驅(qū)動工具的靈魂。
在校期間,老師通常介紹的是比較淺顯常用的算法,重點是培養(yǎng)你的計算機思維,并且希望你今后能夠舉一反三,自主的設(shè)計使用算法。常見的基礎(chǔ)算法有遞歸,動態(tài)規(guī)劃,貪心,深度最優(yōu),廣度最優(yōu)等等。但是這些無論是在面試還是實際工作中都是不夠的,因此,你需要在課外時間主動的去了解更多的算法。
提高算法能力方法二:視頻
上面的大部頭算法書籍,對于大多數(shù)人來說都是一個難啃的骨頭,里面有些數(shù)學推導(dǎo)過程很容易把人繞懵。因此我推薦大家去網(wǎng)易云課堂看MIT的《算法導(dǎo)論》視頻課,里面那個高個子會把一些數(shù)學推導(dǎo),從很基礎(chǔ)的部分開始推,對于初學者來說也是非常友好的體驗。
提高算法能力方法三:LeetCode
當你擁有了算法的基礎(chǔ)知識后,就可以到LeetCode上刷一些算法題了。這個網(wǎng)站是國外編程人員找工作必備,有些大公司比如谷歌微軟甚至會主動聯(lián)系上面表現(xiàn)優(yōu)異的用戶,邀請其參與公司面試。LeetCode上面的算法題分類十分全面,既可以根據(jù)難度分類,也可以根據(jù)算法類型分類。這意味著你既可以從簡單的題開始擴充自己的知識廣度,也可以針對某一類型的算法進行深度嘗試。
此外,LeetCode還支持多種語言,包括Java,Python,JS,C等等,題主可以嘗試在上面用JAVA去解題,剛好完美鍛煉到你認為不足的“JAVA算法能力”。
當你把LeetCode上的題刷到三分之一的時候,我想你一定就能感受到自己的進步了。
以上是我的淺見,歡迎大家在下方留言,與我進行討論。
我是蘇蘇思量,來自BAT的JAVA開發(fā)工程師,每天分享技術(shù)類見聞,我,與我共同進步。