本人19本科應(yīng)屆生,專注Java后臺(tái)學(xué)習(xí)揍瑟,已簽騰訊WXG的offer(日后轉(zhuǎn)c++)白翻。
眾所周知,鵝廠后臺(tái)一直以C++為重月培,面試官也是做C++開發(fā)嘁字。但是語言只是工具,對(duì)代碼的理解才是核心杉畜。面試時(shí)重點(diǎn)考察的是基礎(chǔ)知識(shí)纪蜒,以及解題的思考過程。憑借著對(duì)Java的理解去回答此叠,也受到了面試官的認(rèn)可纯续,最終幸運(yùn)的拿到offer。
JAVA基礎(chǔ)
做java開發(fā)灭袁,java基礎(chǔ)是最需要下功夫的一項(xiàng)猬错。在校招時(shí)最注重的就是基礎(chǔ),拿不出像樣的項(xiàng)目沒關(guān)系茸歧,但是基礎(chǔ)萬萬不可不牢固倦炒。
想要基礎(chǔ)扎實(shí),看書沉淀是必須的软瞎,有一些編程基礎(chǔ)的同學(xué)推薦閱讀《JAVA核心技術(shù) 卷1》逢唤,可以跳過圖形程序設(shè)計(jì)拉讯、事件處理、Swing鳖藕、applet以及部分日志章節(jié)魔慷,如果比較吃力也可以先跳過多線程章節(jié)。
看完一本書著恩,一定要多加練習(xí)去理解和吸收院尔。科班的同學(xué)可以用java寫實(shí)驗(yàn)喉誊,寫的同時(shí)一定要多多運(yùn)用學(xué)到的特性邀摆。練習(xí)階段各種設(shè)計(jì)模式套上去用,不要怕笨重裹驰,即使是濫用特性和設(shè)計(jì)模式也是一種有效的學(xué)習(xí)隧熙。
有了一定量的編程經(jīng)驗(yàn)后,可以再回過頭將《JAVA核心技術(shù) 卷1》速讀一遍幻林,查漏補(bǔ)缺。同時(shí)我們開始擴(kuò)寬我們的知識(shí)領(lǐng)域音念,開始進(jìn)行JavaWeb的學(xué)習(xí)沪饺。
JAVAWEB基礎(chǔ)
JavaWeb是一系列技術(shù)的綜合,也是大多數(shù)Java學(xué)習(xí)者日后的技術(shù)方向闷愤。及早的了解JavaWeb也有利于更深層面理解整葡,Java在完整的應(yīng)用中,是如何與各個(gè)模塊交互并發(fā)揮作用的讥脐。
基礎(chǔ)篇包括Servlet和JSP的學(xué)習(xí)遭居、tomcat的使用、理解MVC分層模式旬渠、mysql的基礎(chǔ)用法及JDBC俱萍、了解http協(xié)議。
這部分的學(xué)習(xí)告丢,我是通過《Head First Servlets and JSP》?。這本書輕松幽默讀起來很愉快岖免,但是實(shí)在是很厚岳颇,而且部分技術(shù)已經(jīng)過時(shí)颅湘,有時(shí)間的同學(xué)可以選讀。
可以看到這部分的內(nèi)容是很雜且多的闯参,此階段注重廣度的基礎(chǔ)學(xué)習(xí)悲立,日后慢慢深入。
?重點(diǎn)要理解Servlet的原理以及生命周期级历。在完成這一部分的學(xué)習(xí)后,可以簡(jiǎn)單的做個(gè)小網(wǎng)站叭披,包括注冊(cè)登陸,增刪改查等功能涩蜘。如果想繼續(xù)折騰,可以考慮將項(xiàng)目部署在阿里云或者騰訊云上同诫,一個(gè)完整可供他人訪問的項(xiàng)目粤策,所獲得的成就感是非凡的。
JAVA進(jìn)階
Java始終是我們JavaWeb開發(fā)體系中最核心的一環(huán)误窖,唯有不停地探索叮盘,才能把握住方向和機(jī)遇。
在做完一個(gè)簡(jiǎn)單完整的JavaWeb項(xiàng)目后霹俺,我們對(duì)代碼的認(rèn)知和理解會(huì)提高不少柔吼,這對(duì)接下來的深入學(xué)習(xí)打下基礎(chǔ)。Java圣經(jīng):《JAVA編程思想》?值得仔細(xì)品讀丙唧,作者的功力十分深厚愈魏,即使很多內(nèi)容還無法理解,但每次讀完一定會(huì)有所收獲想际。同樣建議跳過“圖形化用戶界面“章節(jié)培漏,這是一本伴隨我們技術(shù)成長的好書,買一本放在旁邊胡本,摸著就有底氣牌柄。
讀完編程思想,建議寫一個(gè)有一定復(fù)雜度和代碼量的后臺(tái)項(xiàng)目打瘪∮驯牵可以是一個(gè)http服務(wù)器,一個(gè)大型聊天室闺骚,也可以參考我的項(xiàng)目實(shí)現(xiàn)一個(gè)DBMS:wwwyanxin/wyxDBMS這一部分要強(qiáng)化我們的Java基礎(chǔ)彩扔,同時(shí)也為日后的招聘積累項(xiàng)目經(jīng)驗(yàn)。
做完項(xiàng)目我們又該看書沉淀技術(shù)了僻爽,此時(shí)我推薦《Effective Java》虫碉,這本書并不厚但是干貨十足,作者講述Java的最佳實(shí)踐和經(jīng)驗(yàn)規(guī)則胸梆。它能幫助我們寫出清晰敦捧、健壯须板、高效的代碼,同時(shí)這本書涵蓋了非常多的面試考點(diǎn)兢卵,一定要牢記于心习瑰!
最后還要深入學(xué)習(xí)Java多線程技術(shù)以及Java虛擬機(jī)原理,這兩部分難度較大秽荤,理解起來比較抽象甜奄。也許日后工作中,我們很少遇到并發(fā)問題窃款,不一定有機(jī)會(huì)進(jìn)行JVM調(diào)優(yōu)课兄,但是這部分一定要認(rèn)真對(duì)待,越理解底層寫出的代碼越高效晨继,查bug時(shí)越準(zhǔn)確烟阐,另外更重要的是面試常考紊扬!推薦兩本書《Java并發(fā)編程的藝術(shù)》《深入理解Java虛擬機(jī)》蜒茄,以及并發(fā)編程網(wǎng):并發(fā)編程網(wǎng) - ifeve.com重點(diǎn)掌握java內(nèi)存模型,各種鎖的原理及應(yīng)用餐屎,JVM GC垃圾回收原理扩淀。
JAVAWEB進(jìn)階
圍繞整個(gè)java體系學(xué)習(xí)啤挎,我們要筑起高高的城墻庆聘。
Linux勺卢,現(xiàn)在的服務(wù)器基本都是Linux系統(tǒng),也不存在圖形化操作界面宴抚。作為開發(fā)工程師推薦閱讀《The Linux Command Line》甫煞,有中文在線免費(fèi)版本TLCL。那本《鳥哥的Linux私房菜》更適合運(yùn)維工程師常潮,就不推薦給大家了楷力。學(xué)習(xí)的時(shí)候孵户,可以去阿里云或騰訊云租一個(gè)學(xué)生服務(wù)器夏哭,每個(gè)月大概10元左右献联,直接ssh到云服務(wù)器上操作,能更好地模擬公司的開發(fā)及生產(chǎn)環(huán)境械念。
操作系統(tǒng)原理运悲,主要學(xué)習(xí)進(jìn)程控制調(diào)度、進(jìn)程通信班眯、存儲(chǔ)和設(shè)備管理署隘、文件管理以及系統(tǒng)安全。這一部分可以通過看教材或者自行找一些網(wǎng)課補(bǔ)充磁餐。
數(shù)據(jù)庫诊霹,可以買一本《MySQL必知必會(huì)》小冊(cè)子作為基礎(chǔ)入門,沒有什么理論的堆砌脾还,是一本實(shí)踐指南。學(xué)習(xí)數(shù)據(jù)庫原理可以閱讀《MySQL技術(shù)內(nèi)幕》索引優(yōu)化嗤谚、事務(wù)怔蚌、鎖、范式都是重點(diǎn)渗钉。
網(wǎng)絡(luò)協(xié)議,入門可以讀《圖解HTTP》《圖解TCP/IP》如果要深入研究可以讀《UNIX網(wǎng)絡(luò)編程 卷1》和《TCP/IP詳解 卷1》大多數(shù)開發(fā)者接觸http和tcp声离、udp瘫怜、ip協(xié)議比較多,但是對(duì)整體網(wǎng)絡(luò)協(xié)議棧有個(gè)完整了解是必要的赠涮。
數(shù)據(jù)結(jié)構(gòu)與算法暗挑,數(shù)據(jù)結(jié)構(gòu)是算法的基礎(chǔ),一定要清晰明了垃它。算法則是筆試面試中無法繞過的難關(guān)烹看,推薦去LeetCode刷題,現(xiàn)在也有了中文官方網(wǎng)站:力扣 (LeetCode) 中國官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺(tái)從easy難度開始刷起酱吝,積累一定題量之后土思,做算法題會(huì)很快找到類型方法。
SSM框架陕习,Spring+SpringMVC+MyBatis可以說是開發(fā)必備了址愿,但框架只是錦上添花响谓,不要太依賴框架進(jìn)行學(xué)習(xí)省艳。當(dāng)我們能不依賴任何框架開發(fā)完整項(xiàng)目時(shí),才是真正掌握了它赖晶。最為重要的是理解Spring的兩個(gè)特性:IOC 反轉(zhuǎn)控制和DI 依賴注入。明白實(shí)現(xiàn)原理以及為什么要使用Spring捂贿,只有這樣才能在層出不窮的框架中靈活應(yīng)對(duì)胳嘲,立于不敗之地。
加分技能
前端颜屠,一些崗位要求全棧鹰祸,即使不是全棧,懂得前端技術(shù)的后臺(tái)能寫出更加合理的接口粗井,與前端工程師合作起來會(huì)更順利敬锐,理解項(xiàng)目更通透,解決問題準(zhǔn)確迅速径玖。
學(xué)習(xí)一門動(dòng)態(tài)語言颤介,動(dòng)態(tài)語言開發(fā)起來更靈活迅速。同時(shí)比較動(dòng)態(tài)靜態(tài)語言的特點(diǎn)冤灾,可以更好去提煉跳出語言束縛的代碼思想辕近。推薦學(xué)習(xí)JavaScript或者Python等。
大數(shù)據(jù)归粉,大數(shù)據(jù)開發(fā)近幾年也是熱門方向之一漏峰,有興趣的同學(xué)可以學(xué)習(xí)。
熱門工具及框架倔喂,包括分布式Dubbo、緩存優(yōu)化redis班缰、nginx班挖、虛擬化技術(shù)docker等。一般來說本科應(yīng)屆生不會(huì)要求很高给梅,但是要對(duì)熱門技術(shù)有一定的了解双揪。
常用網(wǎng)站推薦
GitHub:Build software better, together
Java學(xué)習(xí):How2J 的 Java教程
Linux命令行:TLCL
算法:力扣 (LeetCode) 中國官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺(tái)
正則表達(dá)式測(cè)試:PHP, PCRE, Python, Golang and JavaScrip
java交流學(xué)習(xí)資源大全文件下載地址:https://jq.qq.com/?_wv=1027&k=jx7ERZrp學(xué)習(xí)手冊(cè),面試題渔期,開發(fā)工具,PDF文檔書籍教程
如果大家在入門學(xué)習(xí)Java的過程當(dāng)中有遇見任何關(guān)于學(xué)習(xí)拘哨,行業(yè)方面的問題信峻,都可以申請(qǐng)加入我的Java技術(shù)自學(xué)交流小組請(qǐng)點(diǎn)擊【這里獲取】,有任何不懂的大家都可以隨時(shí)來交流产镐,千萬不要選擇一個(gè)人孤軍奮戰(zhàn)踢步,只有不斷交流的碰撞癣亚,我們才能發(fā)現(xiàn)問題的根本