衆所周知,鵝廠後臺一直以C++爲重,面試官也是作C++開發。可是語言只是工具,對代碼的理解纔是核心。前端
面試時重點考察的是基礎知識,以及解題的思考過程。憑藉着對Java的理解去回答,受到面試官的承認,最終幸運地拿到offer。nginx
一直以來,經過不少程序員大牛彙集地,學習到了不少經驗方法,也少走了不少彎路。感謝這些平臺給予個人幫助,同時也分享一下Java學習經驗。程序員
作Java開發,Java基礎是最須要下功夫的一項。在校招時最注重的就是基礎,拿不出像樣的項目不要緊,可是基礎萬萬不可不牢固。面試
想要基礎紮實,看書沉澱是必須的,有一些編程基礎的同窗推薦閱讀《JAVA核心技術 卷1》,能夠跳過圖形程序設計、事件處理、Swing、applet以及部分日誌章節,若是比較吃力也能夠先跳過多線程章節。redis
看完一本書,必定要多加練習去理解和吸取。科班的同窗能夠用Java寫實驗,寫的同時必定要多多運用學到的特性。練習階段各類設計模式套上去用,不要怕笨重,即便是濫用特性和設計模式也是一種有效的學習。算法
有了必定量的編程經驗後,能夠再回過頭將《JAVA核心技術 卷1》速讀一遍,查漏補缺。同時咱們開始擴寬咱們的知識領域,開始進行JavaWeb的學習。docker
JavaWeb是一系列技術的綜合,也是大多數Java學習者往後的技術方向。及早了解JavaWeb也有利於更深層面理解,Java在完整的應用中,是如何與各個模塊交互併發揮做用的。數據庫
基礎篇包括Servlet和JSP的學習、tomcat的使用、理解MVC分層模式、MySQL的基礎用法及JDBC、瞭解HTTP協議。編程
這部分的學習,我主要經過《Head First Servlets and JSP》這本書。這本書輕鬆幽默讀起來很愉快,可是實在是很厚,並且部分技術已通過時,有時間的同窗能夠選讀。設計模式
能夠看到這部分的內容是很雜且多的,此階段注重廣度的基礎學習,往後慢慢深刻。
重點要理解Servlet的原理以及生命週期。在完成這一部分的學習後,能夠簡單的作個小網站,包括註冊登錄,增刪改查等功能。若是想繼續折騰,能夠考慮將項目部署在阿里雲或者騰訊雲上,一個完整可供他人訪問的項目,所得到的成就感是非凡的。
Java始終是咱們JavaWeb開發體系中最核心的一環,惟有不停地探索,才能把握住方向和機遇。
在作完一個簡單完整的JavaWeb項目後,咱們對代碼的認知和理解會提升很多,這爲接下來的深刻學習打下了基礎。Java聖經《JAVA編程思想》值得仔細品讀,做者的功力十分深厚,即便不少內容還沒法理解,但每次讀完必定會有所收穫。一樣建議跳過「圖形化用戶界面「章節,這是一本伴隨咱們技術成長的好書,買一本放在旁邊,摸着就有底氣。
讀完編程思想,建議寫一個有必定複雜度和代碼量的後臺項目。能夠是一個HTTP服務器,一個大型聊天室,也能夠參考個人項目實現一個DBMS:wwwyanxin/wyxDBMS。這一部分要強化咱們的Java基礎,同時也爲往後的招聘積累項目經驗。
作完項目咱們又該看書沉澱技術了,此時我推薦《Effective Java》,這本書並不厚可是乾貨十足,做者講述Java的最佳實踐和經驗規則。它能幫助咱們寫出清晰、健壯、高效的代碼,同時這本書涵蓋了很是多的面試考點,必定要牢記於心!
最後還要深刻學習Java多線程技術以及Java虛擬機原理,這兩部分難度較大,理解起來比較抽象。也許往後工做中,咱們不多遇到併發問題,不必定有機會進行JVM調優,可是這部分必定要認真對待,越理解底層寫出的代碼越高效,查bug時越準確,另外更重要的是面試常考!推薦兩本書《Java併發編程的藝術》《深刻理解Java虛擬機》,以及併發編程網重點掌握Java內存模型,各類鎖的原理及應用,JVM GC垃圾回收原理。
圍繞整個Java體系學習,咱們要築起高高的城牆。
Linux,如今的服務器基本都是Linux系統,也不存在圖形化操做界面。做爲開發工程師推薦閱讀《The Linux Command Line》,有中文在線免費版本TLCL。
操做系統原理,主要學習進程控制調度、進程通訊、存儲和設備管理、文件管理以及系統安全。
數據庫,能夠買一本《MySQL必知必會》小冊子做爲基礎入門,沒有什麼理論的堆砌,是一本實踐指南。學習數據庫原理能夠閱讀《MySQL技術內幕》,索引優化、事務、鎖、範式都是重點。
網絡協議,入門能夠讀《圖解HTTP》、《圖解TCP/IP》,若是要深刻研究能夠讀《UNIX網絡編程 卷1》和《TCP/IP詳解 卷1》。大多數開發者接觸HTTP和TCP、UDP、IP協議比較多,因此對總體網絡協議棧有個完整了解是必要的。
數據結構與算法,數據結構是算法的基礎,必定要清晰明瞭。算法則是筆試面試中沒法繞過的難關,推薦去LeetCode刷題,如今也有了中文官方網站(leetcode-cn.com/)。從easy難度開始…
SSM框架,Spring+SpringMVC+MyBatis能夠說是開發必備了,但框架只是錦上添花,不要太依賴框架進行學習。當咱們能不依賴任何框架開發完整項目時,纔是真正掌握了它。最爲重要的是理解Spring的兩個特性:IOC反轉控制和DI依賴注入。明白實現原理以及爲何要使用Spring,只有這樣才能在層出不窮的框架中靈活應對,立於不敗之地。
前端。一些崗位要求全棧,即便不是全棧,懂得前端技術的後臺能寫出更加合理的接口,與前端工程師合做起來會更順利,理解項目更通透,解決問題更準確迅速。
學習一門動態語言。動態語言開發起來更靈活迅速,同時比較動態靜態語言的特色,能夠更好去提煉跳出語言束縛的代碼思想,推薦學習JavaScript
熱門工具及框架,包括分佈式Dubbo、緩存優化redis、nginx、虛擬化技術docker等。通常來講本科應屆生不會要求很高,可是要對熱門技術有必定的瞭解。
若是你想將互聯網大廠做爲本身職業生涯的始發站,那你必定要在這幾個月結合對應的資料,用心準備!
小編耗時數週,爲你們準備了Java校招資料QQ羣:967051845(羣內提供的Java技術+面試題目等500+資料集合,將是你不錯的學習庫。)