本人19本科應(yīng)屆生况凉,專注Java后臺學習谚鄙,已簽騰訊WXG的offer(日后轉(zhuǎn)c++)。
眾所周知刁绒,鵝廠后臺一直以C++為重闷营,面試官也是做C++開發(fā)。但是語言只是工具知市,對代碼的理解才是核心傻盟。面試時重點考察的是基礎(chǔ)知識,以及解題的思考過程嫂丙。憑借著對Java的理解去回答娘赴,也受到了面試官的認可,最終幸運的拿到offer奢入。
分享一下我的Java學習經(jīng)驗筝闹。
Java基礎(chǔ)
做java開發(fā)媳叨,java基礎(chǔ)是最需要下功夫的一項腥光。在校招時最注重的就是基礎(chǔ),拿不出像樣的項目沒關(guān)系糊秆,但是基礎(chǔ)萬萬不可不牢固武福。
想要基礎(chǔ)扎實,看書沉淀是必須的痘番,有一些編程基礎(chǔ)的同學推薦閱讀《JAVA核心技術(shù) 卷1》捉片,可以跳過圖形程序設(shè)計平痰、事件處理、Swing伍纫、applet以及部分日志章節(jié)宗雇,如果比較吃力也可以先跳過多線程章節(jié)。
看完一本書莹规,一定要多加練習去理解和吸收赔蒲。科班的同學可以用java寫實驗良漱,寫的同時一定要多多運用學到的特性舞虱。練習階段各種設(shè)計模式套上去用,不要怕笨重母市,即使是濫用特性和設(shè)計模式也是一種有效的學習矾兜。
有了一定量的編程經(jīng)驗后,可以再回過頭將《JAVA核心技術(shù) 卷1》速讀一遍患久,查漏補缺椅寺。同時我們開始擴寬我們的知識領(lǐng)域,開始進行JavaWeb的學習蒋失。
JavaWeb基礎(chǔ)
JavaWeb是一系列技術(shù)的綜合配并,也是大多數(shù)Java學習者日后的技術(shù)方向。及早的了解JavaWeb也有利于更深層面理解高镐,Java在完整的應(yīng)用中溉旋,是如何與各個模塊交互并發(fā)揮作用的。
基礎(chǔ)篇包括Servlet和JSP的學習嫉髓、tomcat的使用观腊、理解MVC分層模式、mysql的基礎(chǔ)用法及JDBC算行、了解http協(xié)議梧油。
這部分的學習,我是通過《Head First Servlets and JSP》 州邢。這本書輕松幽默讀起來很愉快儡陨,但是實在是很厚,而且部分技術(shù)已經(jīng)過時量淌,有時間的同學可以選讀骗村。
可以看到這部分的內(nèi)容是很雜且多的,此階段注重廣度的基礎(chǔ)學習呀枢,日后慢慢深入胚股。這里推薦個在線教程:
3. 重點要理解Servlet的原理以及生命周期裙秋。在完成這一部分的學習后琅拌,可以簡單的做個小網(wǎng)站缨伊,包括注冊登陸,增刪改查等功能进宝。如果想繼續(xù)折騰刻坊,可以考慮將項目部署在阿里云或者騰訊云上,一個完整可供他人訪問的項目党晋,所獲得的成就感是非凡的紧唱。
部署到Linux系列教材 (一)- 介紹 - 如何把J2EE應(yīng)用部署到Linux - how2j.cn
Java進階
Java始終是我們JavaWeb開發(fā)體系中最核心的一環(huán),唯有不停地探索隶校,才能把握住方向和機遇漏益。
在做完一個簡單完整的JavaWeb項目后,我們對代碼的認知和理解會提高不少深胳,這對接下來的深入學習打下基礎(chǔ)绰疤。Java圣經(jīng):《JAVA編程思想》 值得仔細品讀,作者的功力十分深厚舞终,即使很多內(nèi)容還無法理解轻庆,但每次讀完一定會有所收獲。同樣建議跳過“圖形化用戶界面“章節(jié)敛劝,這是一本伴隨我們技術(shù)成長的好書余爆,買一本放在旁邊,摸著就有底氣夸盟。
讀完編程思想蛾方,建議寫一個有一定復雜度和代碼量的后臺項目∩仙拢可以是一個http服務(wù)器桩砰,一個大型聊天室,也可以參考我的項目實現(xiàn)一個DBMS:wwwyanxin/wyxDBMS 這一部分要強化我們的Java基礎(chǔ)释簿,同時也為日后的招聘積累項目經(jīng)驗亚隅。
做完項目我們又該看書沉淀技術(shù)了,此時我推薦《Effective Java》庶溶,這本書并不厚但是干貨十足煮纵,作者講述Java的最佳實踐和經(jīng)驗規(guī)則。它能幫助我們寫出清晰偏螺、健壯行疏、高效的代碼,同時這本書涵蓋了非常多的面試考點砖茸,一定要牢記于心隘擎!
最后還要深入學習Java多線程技術(shù)以及Java虛擬機原理殴穴,這兩部分難度較大凉夯,理解起來比較抽象货葬。也許日后工作中,我們很少遇到并發(fā)問題劲够,不一定有機會進行JVM調(diào)優(yōu)震桶,但是這部分一定要認真對待,越理解底層寫出的代碼越高效征绎,查bug時越準確蹲姐,另外更重要的是面試常考人柿!推薦兩本書《Java并發(fā)編程的藝術(shù)》《深入理解Java虛擬機》柴墩,以及并發(fā)編程網(wǎng):并發(fā)編程網(wǎng) - ifeve.com 重點掌握java內(nèi)存模型,各種鎖的原理及應(yīng)用凫岖,JVM GC垃圾回收原理江咳。
JavaWeb進階
圍繞整個java體系學習,我們要筑起高高的城墻哥放。
Linux歼指,現(xiàn)在的服務(wù)器基本都是Linux系統(tǒng),也不存在圖形化操作界面甥雕。作為開發(fā)工程師推薦閱讀《The Linux Command Line》踩身,有中文在線免費版本TLCL。那本《鳥哥的Linux私房菜》更適合運維工程師社露,就不推薦給大家了挟阻。學習的時候,可以去阿里云或騰訊云租一個學生服務(wù)器峭弟,每個月大概10元左右赁濒,直接ssh到云服務(wù)器上操作,能更好地模擬公司的開發(fā)及生產(chǎn)環(huán)境孟害。
操作系統(tǒng)原理拒炎,主要學習進程控制調(diào)度、進程通信挨务、存儲和設(shè)備管理击你、文件管理以及系統(tǒng)安全。這一部分可以通過看教材或者自行找一些網(wǎng)課補充谎柄。
數(shù)據(jù)庫丁侄,可以買一本《MySQL必知必會》小冊子作為基礎(chǔ)入門,沒有什么理論的堆砌朝巫,是一本實踐指南鸿摇。學習數(shù)據(jù)庫原理可以閱讀《MySQL技術(shù)內(nèi)幕》索引優(yōu)化、事務(wù)劈猿、鎖拙吉、范式都是重點潮孽。
網(wǎng)絡(luò)協(xié)議,入門可以讀《圖解HTTP》《圖解TCP/IP》如果要深入研究可以讀《UNIX網(wǎng)絡(luò)編程 卷1》和《TCP/IP詳解 卷1》大多數(shù)開發(fā)者接觸http和tcp筷黔、udp往史、ip協(xié)議比較多,但是對整體網(wǎng)絡(luò)協(xié)議棧有個完整了解是必要的佛舱。
數(shù)據(jù)結(jié)構(gòu)與算法椎例,數(shù)據(jù)結(jié)構(gòu)是算法的基礎(chǔ),一定要清晰明了请祖。算法則是筆試面試中無法繞過的難關(guān)订歪,推薦去LeetCode刷題,現(xiàn)在也有了中文官方網(wǎng)站:力扣 (LeetCode) 中國官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺 從easy難度開始刷起肆捕,積累一定題量之后陌粹,做算法題會很快找到類型方法。
SSM框架福压,Spring+SpringMVC+MyBatis可以說是開發(fā)必備了掏秩,但框架只是錦上添花,不要太依賴框架進行學習荆姆。當我們能不依賴任何框架開發(fā)完整項目時蒙幻,才是真正掌握了它。最為重要的是理解Spring的兩個特性:IOC 反轉(zhuǎn)控制和DI 依賴注入胆筒。明白實現(xiàn)原理以及為什么要使用Spring邮破,只有這樣才能在層出不窮的框架中靈活應(yīng)對,立于不敗之地仆救。
加分技能
前端抒和,一些崗位要求全棧,即使不是全棧彤蔽,懂得前端技術(shù)的后臺能寫出更加合理的接口摧莽,與前端工程師合作起來會更順利,理解項目更通透顿痪,解決問題準確迅速镊辕。
學習一門動態(tài)語言,動態(tài)語言開發(fā)起來更靈活迅速蚁袭。同時比較動態(tài)靜態(tài)語言的特點征懈,可以更好去提煉跳出語言束縛的代碼思想。推薦學習JavaScript或者Python等揩悄。
大數(shù)據(jù)卖哎,大數(shù)據(jù)開發(fā)近幾年也是熱門方向之一,有興趣的同學可以學習。
熱門工具及框架亏娜,包括分布式Dubbo焕窝、緩存優(yōu)化redis、nginx照藻、虛擬化技術(shù)docker等袜啃。一般來說本科應(yīng)屆生不會要求很高汗侵,但是要對熱門技術(shù)有一定的了解幸缕。
常用網(wǎng)站推薦
GitHub: Build software better, together
Java學習:How2J 的 Java教程
Linux命令行:TLCL