我是如何在三個(gè)月內(nèi)從安卓開(kāi)發(fā)轉(zhuǎn)行Java開(kāi)發(fā)的

前言

事先說(shuō)明一下寫這篇文章的目的,是因?yàn)橹車恍┡笥?,主要是安卓開(kāi)發(fā)、iOS開(kāi)發(fā)吧,他們?cè)谥懒宋业慕?jīng)歷之后,也想像我一樣。所以寫下這篇,以我的親身經(jīng)歷,給他們作為參考,希望能夠幫助到他們。在文章底部,我會(huì)貼出我文章中提到過(guò)的所有資料和視頻的鏈接地址。

緣起

首先說(shuō)一下我的個(gè)人經(jīng)歷。我是2015年本科畢業(yè),大學(xué)是非計(jì)算機(jī)專業(yè),但是我對(duì)我的專業(yè)完全不感興趣也不看好。事實(shí)上和我專業(yè)對(duì)口的工作大部分工資都很低,而且工作環(huán)境很糟糕。畢業(yè)以后在公司干了半年,當(dāng)時(shí)看我的一個(gè)同學(xué)在培訓(xùn)了iOS開(kāi)發(fā)之后當(dāng)了程序員,于是在2016年的3月,我也去了培訓(xùn)機(jī)構(gòu),當(dāng)時(shí)培訓(xùn)的是安卓開(kāi)發(fā),在x馬。16年8月左右,為期半年的培訓(xùn)終于結(jié)束了,我從機(jī)構(gòu)出來(lái),編了一份簡(jiǎn)歷,成功找到了一份安卓開(kāi)發(fā)的工作。 時(shí)間一晃到了2019年的4月,這個(gè)時(shí)候安卓開(kāi)發(fā)的市場(chǎng)行情已經(jīng)遠(yuǎn)遠(yuǎn)不如14、15年的時(shí)候,其實(shí)我也早就已經(jīng)察覺(jué)到,只是腦子里總有個(gè)聲音,覺(jué)得好不容易培訓(xùn)出來(lái),馬上又轉(zhuǎn)其他的,多可惜啊。然而事實(shí)上,互聯(lián)網(wǎng)行業(yè)的變化總是極快的,很多時(shí)候,選擇大于努力,除非你是那種對(duì)安卓技術(shù)鉆研的很深的稀缺人才,然而大多數(shù)情況下,這樣的人總是少數(shù),并且需要付出非常多的努力,而我應(yīng)該并不是,我也對(duì)安卓開(kāi)發(fā)沒(méi)有特別深的感情和興趣,只是因?yàn)楫?dāng)初培訓(xùn)的恰好是這個(gè)而已,才走到了現(xiàn)在。 在18年底的時(shí)候,我開(kāi)始看尚硅谷的springboot課程和慕課網(wǎng)上廖師兄的微信點(diǎn)餐的視頻。因?yàn)槟嵌螘r(shí)間工作很閑,我就上班在看視頻??匆曨l之余還看在簡(jiǎn)書(shū)上的博客,恒宇少年寫的springboot系列的教程。我覺(jué)得在當(dāng)時(shí)看到這幾個(gè)視頻和博客非常適合新手打基礎(chǔ)用,下面我就逐一介紹一下

  1. 尚硅谷springboot 由尚硅谷的雷豐陽(yáng)老師講課,講的十分良心,非常清楚,很多同學(xué)都炒雞喜歡。從springboot的入門,配置文件,自動(dòng)配置原理,日志配置,到后面的docker,rabbitmq,redis整合,非常詳細(xì)全面,而且容易理解。
  2. 慕課網(wǎng)廖師兄的微信點(diǎn)餐 一個(gè)實(shí)戰(zhàn)的小項(xiàng)目,全程使用springboot開(kāi)發(fā),前后端都有,但是主要理解后端就行了。廖師兄是之前在網(wǎng)易工作的Java開(kāi)發(fā)工程師,代碼水平自然不低,看他的視頻能學(xué)到很多,包括代碼規(guī)范,一些良好的開(kāi)發(fā)習(xí)慣什么的。唯一不足的是廖師兄講話沒(méi)有雷豐陽(yáng)老師那么生動(dòng),稍微有些小枯燥吧。另外一點(diǎn)是這個(gè)是慕課網(wǎng)的付費(fèi)視頻,我當(dāng)時(shí)是看的網(wǎng)上流傳的盜版,至于大家有能力就支持正版吧。
  3. 恒宇少年的springboot學(xué)習(xí)系列博客 如果你是上班時(shí)想要學(xué)習(xí),但是公司又不準(zhǔn)上班看視頻,那這份博客就很適合你。里面涵蓋了很多關(guān)于springboot的基礎(chǔ)內(nèi)容,具體那些自己去看吧。我是只看了前面的一些章節(jié),跟著敲了demo。后面的那些章節(jié)中的知識(shí)對(duì)我來(lái)說(shuō)我覺(jué)得暫時(shí)用不到,需要的時(shí)候再看吧。
    到19年初的時(shí)候,這兩個(gè)視頻都看完了,博客看了前面一部分,我覺(jué)得是時(shí)候做點(diǎn)項(xiàng)目實(shí)戰(zhàn)了。然后我對(duì)我們項(xiàng)目經(jīng)理說(shuō)我有轉(zhuǎn)后端開(kāi)發(fā)的意向。我們項(xiàng)目經(jīng)理人挺好,而且也愿意我往這個(gè)方向發(fā)展。然后我就開(kāi)始寫一些簡(jiǎn)單的controller的代碼。真的只是controller相關(guān)的代碼,因?yàn)槟莻€(gè)時(shí)候我連sql語(yǔ)句都不懂,只是知道一些controller相關(guān)的注解,僅此而已。然而好景不長(zhǎng),公司在4月份倒閉解散了。幸好我這個(gè)人有點(diǎn)居安思危的意識(shí)再加上運(yùn)氣好,在公司倒閉之后立刻就找到了新公司。 但是,戲劇性的轉(zhuǎn)折又來(lái)了。在這個(gè)新公司干了一個(gè)多月,大概在6月20號(hào)左右,公司的人居然把我勸退了,說(shuō)的理由也是可笑,就因?yàn)槲矣惺抡?qǐng)了假,我做的一個(gè)模塊比預(yù)期遲了半天時(shí)間。說(shuō)實(shí)話,即使我對(duì)安卓開(kāi)發(fā)已經(jīng)沒(méi)有了熱情,但是我對(duì)我的技術(shù)還是有著充分的自信的,在試用期把我勸退并且理由是工作能力不夠的公司我還是頭一次遇到。被勸退以后,我絕望的想要繼續(xù)面試找工作(我深知沒(méi)有任何準(zhǔn)備想找到一份不錯(cuò)的安卓開(kāi)發(fā)工作是有多么困難),但是我感到我實(shí)在缺乏對(duì)安卓開(kāi)發(fā)的熱情和后勁,繼續(xù)找安卓開(kāi)發(fā)的工作或許已經(jīng)不再適合了。公司把我勸退,我正好有時(shí)間全職來(lái)學(xué)習(xí)Java后端開(kāi)發(fā),恰好也是一個(gè)機(jī)會(huì)。于是在經(jīng)歷了幾天的沮喪之后,我正式開(kāi)始了脫產(chǎn)的Java學(xué)習(xí)。

學(xué)習(xí)歷程

整個(gè)Java的學(xué)習(xí)時(shí)間大概是3個(gè)月左右,我原本的計(jì)劃是2個(gè)月,因?yàn)槲乙膊幌脒@段沒(méi)有經(jīng)濟(jì)收入的日子持續(xù)太久,但是事情總是有點(diǎn)超出預(yù)期。下面我將以我學(xué)習(xí)的先后順序分項(xiàng)目介紹我的學(xué)習(xí)過(guò)程。因?yàn)橹拔易霭沧康臅r(shí)候已經(jīng)有了java基礎(chǔ),所以java基礎(chǔ)這部分我跳過(guò)了,直接開(kāi)始項(xiàng)目實(shí)戰(zhàn)。如果有同學(xué)想要從零基礎(chǔ)開(kāi)始學(xué)習(xí)Java開(kāi)發(fā),需要一份學(xué)習(xí)路線的話,我這里有一份我覺(jué)得比較不錯(cuò)的:2019零基礎(chǔ)自學(xué)Java路線總結(jié)2.0
視頻的話推薦黑馬57期的java基礎(chǔ)視頻Java-黑馬就業(yè)班
或者網(wǎng)上流傳據(jù)說(shuō)有個(gè)劉意講的java基礎(chǔ)比較好, 可以去b站搜一下
我當(dāng)年看的是這套<<傳智播客-黑馬程序員>>馮佳老師Java/Android基礎(chǔ)視頻,也還不錯(cuò)

樂(lè)優(yōu)商城

我學(xué)習(xí)的第一個(gè)項(xiàng)目是樂(lè)優(yōu)商城,這是我在一個(gè)java學(xué)習(xí)群里聽(tīng)人說(shuō)的。這是一個(gè)電商項(xiàng)目,有后臺(tái)管理系統(tǒng)和前臺(tái)的商品購(gòu)物頁(yè)面系統(tǒng),前后端分離分開(kāi)部署。在這個(gè)項(xiàng)目里我學(xué)到的東西還是蠻多的,例如js的es6語(yǔ)法,vue框架,springboot, springcloud相關(guān)的例如feign、hytrix、ribbon, 通用mapper, 分布式的圖片存儲(chǔ)框架fastdfs, nginx相關(guān),搜索引擎elasticsearch, 消息中間件rabbitmq, redis, 一些linux的命令,虛擬機(jī)的使用,阿里短信sdk的使用,微信支付的流程等等。還有電商方面的相關(guān)知識(shí),比如spu, sku??偟膩?lái)說(shuō),還是不錯(cuò)的一個(gè)項(xiàng)目,黑馬出品的東西確實(shí)不錯(cuò)。 因?yàn)橹耙呀?jīng)學(xué)習(xí)了一些springboot的基礎(chǔ)知識(shí),我就直接開(kāi)始學(xué)習(xí)這個(gè)項(xiàng)目了。學(xué)習(xí)的方式是一邊看著視頻,一邊敲代碼。因?yàn)槲矣袃蓚€(gè)電腦,所以我就一個(gè)電腦用來(lái)播放視頻,一個(gè)電腦用來(lái)敲代碼。視頻我是在b站看的。不得不說(shuō),b站真是個(gè)學(xué)習(xí)的好地方,各種資料應(yīng)有盡有。b站上的樂(lè)優(yōu)視頻有兩套,一套是虎哥講的,使用mac開(kāi)發(fā),還有一套是鋒哥講的,使用windows環(huán)境開(kāi)發(fā)。建議如果想踩坑少的話,就看鋒哥版本的。
我當(dāng)時(shí)看的是虎哥那套,因?yàn)槲移綍r(shí)敲代碼習(xí)慣用mac, 一些虛擬機(jī)軟件什么的我也是和虎哥一樣用的parallel desktop。然后我又在百度找了一份跟樂(lè)優(yōu)商城視頻配套的資料,主要是一些筆記、軟件。完全配套的代碼的話,說(shuō)實(shí)話沒(méi)有網(wǎng)上并沒(méi)有流傳出來(lái),這點(diǎn)比較蛋疼。不過(guò)還好,我在github上搜到了一份比較匹配的,并且在后來(lái)我把這整個(gè)完整的項(xiàng)目做出來(lái)了,把代碼放到了我的github上面,稍后會(huì)貼出我的github地址。
在學(xué)習(xí)這個(gè)樂(lè)優(yōu)商城的時(shí)候,我還搜到了一個(gè)csdn的博客,是一個(gè)博主記錄了他做樂(lè)優(yōu)商城的整個(gè)過(guò)程,并且建立了一個(gè)QQ群,里面的人好多都是循著樂(lè)優(yōu)這個(gè)項(xiàng)目加入進(jìn)來(lái)的,也有一些自學(xué)Java的人,后面我會(huì)貼出這個(gè)群的二維碼,有需要的可以加一下。有時(shí)候我遇到了問(wèn)題也會(huì)去這個(gè)群?jiǎn)枴?br> 但是說(shuō)實(shí)話,大多數(shù)問(wèn)題都是我自己憑著以前的編程經(jīng)驗(yàn)或者百度解決的。自學(xué)確實(shí)是比較困難的,我都尚且如此,何況那些初學(xué)者。我所能告誡那些自學(xué)者的就是,一些軟件,環(huán)境,版本什么的盡量跟視頻里老師的保持一致,文件夾路徑老師創(chuàng)建的是怎樣,也一模一樣的照抄。千萬(wàn)不要自己作死擅自改動(dòng),不然一些環(huán)境安裝問(wèn)題就能把你折磨死。作為初學(xué)者,首先要做的就是模仿,模仿的多了代碼量上去以后自然就會(huì)了這個(gè)不用著急,等會(huì)了再去做一些改動(dòng)和創(chuàng)新也不遲。新人能像老師一樣把效果實(shí)現(xiàn),把流程跑通就已經(jīng)很不錯(cuò)了。比如我自己在安裝fastdfs的時(shí)候就花了半天時(shí)間,才把它裝成功,要是和視頻里老師敲的一模一樣就不會(huì)有這樣的問(wèn)題。
在學(xué)習(xí)節(jié)奏方面,我是基本按照視頻走的。因?yàn)橐曨l是按day01,day02,day03這樣分p的,所以我基本上也是一天一p的學(xué)習(xí),偶爾也有想混吃等死的時(shí)候,但是基本上相差不大。一般的話在b站上看我會(huì)選擇1.5倍速度甚至兩倍速度加速觀看。

springmvc、mybatis、spring、mysql

在第二階段,我才選擇補(bǔ)一些基礎(chǔ),學(xué)習(xí)ssm基礎(chǔ)和mysql的sql語(yǔ)句語(yǔ)法,看的也都是b站上的57期的黑馬java視頻, 應(yīng)該是2018年比較新的。我首先看的是springmvc,這個(gè)倒是挺簡(jiǎn)單的,感覺(jué)沒(méi)什么特別好說(shuō)的。然后學(xué)習(xí)了mybatis, 主要是一些標(biāo)簽的使用吧。在學(xué)習(xí)mybatis的時(shí)候我發(fā)現(xiàn)我的sql知識(shí)嚴(yán)重不足。所以在學(xué)習(xí)了mybatis的同時(shí)我還穿插學(xué)習(xí)了mysql數(shù)據(jù)庫(kù)的視頻。最后就是spring的學(xué)習(xí)了,這應(yīng)該是ssm框架中難度最高的,尤其一些面試也比較喜歡問(wèn)spring的相關(guān)問(wèn)題,比如事務(wù)相關(guān)。

品優(yōu)購(gòu)

在補(bǔ)完ssm基礎(chǔ)后,我決定選擇一個(gè)項(xiàng)目實(shí)戰(zhàn),并且能將ssm框架整合一下。雖然現(xiàn)在大多數(shù)公司用的都是springboot,但是可能還是會(huì)有部分公司仍在使用ssm,所以我覺(jué)得ssm框架的項(xiàng)目還是得練一個(gè)。于是在這里選擇了品優(yōu)購(gòu)。這個(gè)項(xiàng)目涉及到的內(nèi)容有spring, spirngmvc, mybatis, 通用mapper, 分布式框架選擇了zookeeper+dubbo,還有freemaker模板引擎,前端框架angular。其他的知識(shí)點(diǎn)其實(shí)跟樂(lè)優(yōu)商城一樣,比如redis,消息隊(duì)列什么的,因?yàn)槎际请娚添?xiàng)目。不過(guò)品優(yōu)購(gòu)后面還補(bǔ)充了一個(gè)秒殺,還有一些代碼生成器快速生成業(yè)務(wù)代碼,還是比較有價(jià)值的。品優(yōu)購(gòu)我也是在b站上看的,b站有兩個(gè)版本的品優(yōu)購(gòu),一個(gè)是舊版的eclipse開(kāi)發(fā)的,一個(gè)是新版使用idea開(kāi)發(fā)的。我看的是新版,但是新版的第一天和第四天內(nèi)容是缺失的,于是就看舊版補(bǔ)全,其實(shí)幾乎無(wú)縫銜接。學(xué)習(xí)節(jié)奏嘛也和樂(lè)優(yōu)商城差不多,不過(guò)真心感覺(jué)講品優(yōu)購(gòu)的老師沒(méi)有樂(lè)優(yōu)商城的老師講得好。

面試找工作

其實(shí)要我說(shuō),學(xué)Java最煎熬最辛苦的不是學(xué)習(xí)而是面試找工作環(huán)節(jié)。首先是簡(jiǎn)歷。簡(jiǎn)歷我寫的是半真半假的,就是之前的安卓工作經(jīng)驗(yàn)也寫了一點(diǎn),但是主要是Java的工作經(jīng)歷。然后這里我特別感激我之前公司的項(xiàng)目經(jīng)理。因?yàn)橹盎旧现粚懥艘恍ヽontroller的代碼,對(duì)整個(gè)項(xiàng)目的流程并不理解。于是我就向他請(qǐng)教,總算把一些細(xì)節(jié)都了解清楚了,這樣面試的時(shí)候講述自己的項(xiàng)目經(jīng)歷就流暢多了。對(duì)于面試問(wèn)的一些問(wèn)題的話,我覺(jué)得對(duì)新人來(lái)說(shuō)是挺困難的。隨便舉例一些我遇到的面試題吧,hashmap和concurrenthashmap原理,分布式事務(wù)怎么解決,分布式下session怎么處理,數(shù)據(jù)庫(kù)優(yōu)化等等。我做了一個(gè)分類,大致有以下這些內(nèi)容:

  1. mysql(oracle)數(shù)據(jù)庫(kù)
  2. elasticsearch(如果你寫了電商項(xiàng)目的話)
  3. 計(jì)算機(jī)網(wǎng)絡(luò)
  4. 設(shè)計(jì)模式
  5. 設(shè)計(jì)場(chǎng)景,比如讓你設(shè)計(jì)秒殺場(chǎng)景
  6. 項(xiàng)目相關(guān),看你對(duì)業(yè)務(wù)熟悉不熟悉
  7. 分布式問(wèn)題
  8. dubbo
  9. springcloud
  10. 高并發(fā)解決方案
  11. mq消息中間件
  12. springmvc
  13. spring以及事務(wù)
  14. java基礎(chǔ),jdk新特性
  15. jvm
  16. 多線程,線程池相關(guān)
  17. 集合
    剛開(kāi)始面的時(shí)候真的很慘,我甚至被打擊的心灰意冷,陷入絕望。不過(guò)后來(lái)隨著面試經(jīng)驗(yàn)的慢慢積累,有些問(wèn)題也就記住了,甚至形成了模板式的回答方式,成了一臺(tái)毫無(wú)感情的面試機(jī)器。后來(lái)的話,也算拿到幾個(gè)offer??偟膩?lái)說(shuō),面試沒(méi)有offer的時(shí)候也不要心急,因?yàn)殡S著經(jīng)驗(yàn)值的增加,你終究會(huì)升級(jí)的。這里我建議面試的時(shí)候用手機(jī)悄悄錄音,就是在面試官一進(jìn)門的時(shí)候,你就打開(kāi)手機(jī)錄音然后把手機(jī)放在桌子上?;厝ブ蟀唁浺粼俾?tīng)一遍,看看自己回答的有哪些不足,然后將一些問(wèn)題記錄到紙上或者文檔上,這樣就可以方便復(fù)習(xí)和回顧了。這里的話我再推薦拉勾的32個(gè)Java面試必考點(diǎn),這是個(gè)面試提綱,雖然講的不是很詳細(xì),但是覆蓋的夠全面,照著這個(gè)提綱去準(zhǔn)備面試我感覺(jué)挺好的。面試時(shí)有一點(diǎn)要特別記住,扯得多不如扯得深,說(shuō)一萬(wàn)句淺薄的理解不如你說(shuō)一句有深度的理解讓面試官對(duì)你刮目相看

實(shí)際工作

現(xiàn)在我已經(jīng)入職快兩個(gè)月了,感覺(jué)還算適應(yīng)。總體感受的話,我覺(jué)得實(shí)際工作中sql語(yǔ)句以及mybatis(jpa)一定要好好學(xué),那些標(biāo)簽都需要熟練掌握,因?yàn)槠綍r(shí)寫業(yè)務(wù)就這些用的最多。學(xué)的時(shí)候一定要親手敲,多練習(xí)項(xiàng)目,新手一定要提升自己的代碼量,否則就會(huì)出現(xiàn)面試通過(guò),然后進(jìn)了公司寫不了項(xiàng)目的情況,很危險(xiǎn)。

一些資料地址

下面是一些我之前提到的資料,或者我覺(jué)得一些不錯(cuò)的學(xué)習(xí)或者面試資料的鏈接地址 學(xué)習(xí)相關(guān):
微服務(wù)電商【黑馬樂(lè)優(yōu)商城 11 月份完整版】(鋒哥版)
2019JAVA-57 期教學(xué)視頻 - 微服務(wù)電商【黑馬樂(lè)優(yōu)商城】(虎哥版)
我上傳到github的樂(lè)優(yōu)項(xiàng)目代碼:leyou
品優(yōu)購(gòu)電商系統(tǒng)開(kāi)發(fā)
Java 品優(yōu)購(gòu)互聯(lián)網(wǎng)商城 項(xiàng)目實(shí)戰(zhàn)(基于 IDEA)新版
Mybatis 教程 IDEA 版 - 4 天 - 2018 黑馬 SSM-01
Spring 教程 IDEA 版 - 4 天 - 2018 黑馬 SSM-02
SpringMVC 教程 IDEA 版 - 3 天 - 2018 黑馬 SSM-03 【黑馬】MYSQL 基礎(chǔ)
面試相關(guān):
拉勾官方 32個(gè)Java面試必考點(diǎn)(這個(gè)不完整,完整的是要付錢的,或者找盜版的)
程序員小伙收到 17K 的 offer 看看都問(wèn)了哪些問(wèn)題(上)(記得看這個(gè)視頻下面的置頂評(píng)論哦,里面的那些面試資料幫了我大忙,一定要看)
我是程序汪(一個(gè)工作很多年的java程序員,平時(shí)會(huì)錄一些電話面試的視頻)
心靜思遠(yuǎn) - 9527(這個(gè)up很貼心哦,從面試到入職工作很多事項(xiàng)都講了)
一個(gè)三年工作經(jīng)驗(yàn)和月薪 16k 的 java 程序員應(yīng)該要具備什么樣的技能?(寶藏up)
其他java實(shí)戰(zhàn)項(xiàng)目,主要都是黑馬57期里面的,建議大家可以自行百度搜索黑馬57期java:
學(xué)成在線
十次方
我自己找到的就業(yè)面試指導(dǎo)課程,里面有別人面試時(shí)的錄音,我覺(jué)得也不錯(cuò)
鏈接: https://pan.baidu.com/s/1TAdj_igJ3iloKw_sY_8E3Q 提取碼: wcck
b站還有很多很有用的資料,推薦大家自己找找,另外我覺(jué)得尚硅谷的教程也很不錯(cuò)。
一些好用的網(wǎng)站,:
菜鳥(niǎo)教程
w3school
how2j

一些經(jīng)驗(yàn)

實(shí)踐是最好的老師,有句話叫try, it won't boom,試一試,這個(gè)不會(huì)爆炸的。意思就是實(shí)踐出真知,因?yàn)橛?jì)算機(jī)編程相比其他行業(yè)最大的優(yōu)勢(shì)就在于實(shí)驗(yàn)成本低。有什么問(wèn)題不清楚的話,與其問(wèn)別人,不如自己寫個(gè)demo親自測(cè)試一下,又省時(shí)間又穩(wěn)妥。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容