一開始學(xué)習(xí)JAVA,覺得仿佛給自己打開了一扇創(chuàng)造的大門,每天用學(xué)到的點(diǎn)點(diǎn)滴滴實(shí)現(xiàn)一個(gè)又一個(gè)的需求,很有成就感!賺的也比一般工薪族多一些!

但是很快就厭倦了沒日沒夜的增刪改查,看著功能大相徑庭,其實(shí)內(nèi)里相差無幾,CV大法,改改對(duì)象名,改改方法名,很快就實(shí)現(xiàn)了一個(gè)需求!

很快的就覺得公司不大行,配不上自己的“水平”,出去面試,專門找大公司,好公司,以為信手拈來,然而事實(shí)是不斷放低自己的要求,面試了很多公司都無疾而終,跪在的問題不是高并發(fā),不是分布式,而是基本的排序算法,基本的數(shù)據(jù)結(jié)構(gòu),基本的網(wǎng)絡(luò)知識(shí),JAVA運(yùn)行原理等等這些平時(shí)用了千百遍,卻說不出所以然的東西!

分享一下學(xué)習(xí)java的經(jīng)驗(yàn)

于是開始懷疑自己了,學(xué)JAVA到底學(xué)了什么?增刪改查寫了幾百遍,這跟實(shí)習(xí)生寫三遍的差別在哪?緩存指令只會(huì)set,get,遇到問題了怎么辦?服務(wù)宕機(jī),緩存擊穿?jvm底層是什么,你知道嗎?

然后告訴自己,要熟悉底層,開始關(guān)注性能,可擴(kuò)展性,如何優(yōu)化,如何跟實(shí)習(xí)生拉開差距,不再是一個(gè)只會(huì)CV,只會(huì)增刪改的“大神”!

所以我在此建議 :

①,注重底層:jdk中基本的數(shù)據(jù)結(jié)構(gòu)(比如hashmap,hashtable,concurrentHashmap,synchronizedMap區(qū)別是什么?如何取舍?),jvm內(nèi)存模型,內(nèi)存結(jié)構(gòu),gc,并發(fā)包,反射等等!

②,不要想著啥都會(huì):緩存有好幾種,消息中間件有好幾種,數(shù)據(jù)庫中間件有好幾種,微服務(wù)框架有好幾種,如果這個(gè)學(xué)一點(diǎn)那個(gè)學(xué)一點(diǎn),有可能最后都只是掌握皮毛,實(shí)際中用不到很快就忘了,而且看的太多容易產(chǎn)生倦怠心里,真真正正的搞懂幾個(gè)中的一個(gè)就行了!

③,緊跟新技術(shù)但不盲從:目前JAVA8還是主流,流式處理函數(shù)式編程都很經(jīng)典,雖然JAVA已經(jīng)發(fā)到11,但可以變掌握舊的邊擁抱新的,類似的還有springboot和最新的微服務(wù)mesh等等!

分享一下學(xué)習(xí)java的經(jīng)驗(yàn)

④,不要三天打魚兩天曬網(wǎng):學(xué)習(xí)是一輩子的事,只有保持足夠的熱情,付諸足夠的精力才能不被淘汰!

⑤,喜歡分享:以我自己為例,有時(shí)候有些概念比較模糊,心里就想著要分享給別人,不能含糊,

努力去弄懂,然后盡量用通俗易懂的話描述出來,這時(shí)候你會(huì)發(fā)現(xiàn)豁然開朗了,真正的會(huì)了!