本人19本科應屆生,專注Java後臺學習,已籤騰訊WXG的offer。
眾所周知,鵝廠後臺一直以C++為重,面試官也是做C++開發。但是語言只是工具,對程式碼的理解才是核心。面試時重點考察的是基礎知識,以及解題的思考過程。憑藉著對Java的理解去回答,也受到了面試官的認可,最終幸運的拿到offer。來源:知乎,作者:五彩駒。
一直以來,通過知乎這個程式設計師大牛聚集地,學習到了很多經驗方法,也少走了很多彎路。感謝這個平臺給予我的幫助,也分享一下我的Java學習經驗。並且同時也整理了Java核心知識點,一共283頁的pdf檔案,需要的朋友可以點選:點這個!點這個! ,暗號:csdn。
Java基礎
做java開發,java基礎是最需要下功夫的一項。在校招時最注重的就是基礎,拿不出像樣的專案沒關係,但是基礎萬萬不可不牢固。
想要基礎紮實,看書沉澱是必須的,有一些程式設計基礎的同學推薦閱讀《JAVA核心技術 卷1》,可以跳過圖形程式設計、事件處理、Swing、applet以及部分紀錄檔章節,如果比較吃力也可以先跳過多執行緒章節。
看完一本書,一定要多加練習去理解和吸收。科班的同學可以用java寫實驗,寫的同時一定要多多運用學到的特性。練習階段各種設計模式套上去用,不要怕笨重,即使是濫用特性和設計模式也是一種有效的學習。
有了一定量的程式設計經驗後,可以再回過頭將《JAVA核心技術 卷1》速讀一遍,查漏補缺。同時我們開始擴寬我們的知識領域,開始進行JavaWeb的學習。
JavaWeb基礎
JavaWeb是一系列技術的綜合,也是大多數Java學習者日後的技術方向。及早的瞭解JavaWeb也有利於更深層面理解,Java在完整的應用中,是如何與各個模組互動並行揮作用的。
基礎篇包括Servlet和JSP的學習、tomcat的使用、理解MVC分層模式、mysql的基礎用法及JDBC、瞭解http協定。
可以看到這部分的內容是很雜且多的,此階段注重廣度的基礎學習,日後慢慢深入。
重點要理解Servlet的原理以及生命週期。在完成這一部分的學習後,可以簡單的做個小網站,包括註冊登陸,增刪改查等功能。如果想繼續折騰,可以考慮將專案部署在阿里雲或者騰訊雲上,一個完整可供他人存取的專案,所獲得的成就感是非凡的。
Java進階
Java始終是我們JavaWeb開發體系中最核心的一環,唯有不停地探索,才能把握住方向和機遇。
在做完一個簡單完整的JavaWeb專案後,我們對程式碼的認知和理解會提高不少,這對接下來的深入學習打下基礎。Java聖經:《JAVA程式設計思想》值得仔細品讀,作者的功力十分深厚,即使很多內容還無法理解,但每次讀完一定會有所收穫。同樣建議跳過「圖形化使用者介面「章節,這是一本伴隨我們技術成長的好書,買一本放在旁邊,摸著就有底氣。 讀完程式設計思想,建議寫一個有一定複雜度和程式碼量的後臺專案。 做完專案我們又該看書沉澱技術了,此時我推薦《Effective Java》,這本書並不厚但是乾貨十足,作者講述Java的最佳實踐和經驗規則。它能幫助我們寫出清晰、健壯、高效的程式碼,同時這本書涵蓋了非常多的面試考點,一定要牢記於心! 最後還要深入學習Java多執行緒技術以及Java虛擬機器器原理,這兩部分難度較大,理解起來比較抽象。也許日後工作中,我們很少遇到並行問題,不一定有機會進行JVM調優,但是這部分一定要認真對待,越理解底層寫出的程式碼越高效,查bug時越準確,另外更重要的是面試常考!推薦兩本書《Java並行程式設計的藝術》《深入理解Java虛擬機器器》,以及並行程式設計網:並行程式設計網 ifeve.com 重點掌握java記憶體模型,各種鎖的原理及應用,JVM GC垃圾回收原理。
還有2020年最新的大場面試題,需要的朋友可以點選:點這個!點這個! ,暗號:csdn。
JavaWeb進階
圍繞整個java體系學習,我們要築起高高的城牆。
Linux ,現在的伺服器基本都是Linux系統,也不存在圖形化操作介面。作為開發工程師推薦閱讀《The Linux Command Line》,有中文線上免費版本TLCL。學習的時候,可以去阿里雲或騰訊雲租一個學生伺服器,每個月大概10元左右,直接ssh到雲伺服器上操作,能更好地模擬公司的開發及生產環境。作業系統原理 ,主要學習程序控制排程、程序通訊、儲存和裝置管理、檔案管理以及系統安全。這一部分可以通過看教材或者自行找一些網課補充。資料庫 ,可以買一本《MySQL必知必會》小冊子作為基礎入門,沒有什麼理論的堆砌,是一本實踐指南。學習資料庫原理可以閱讀《MySQL技術內幕》索引優化、事務、鎖、正規化都是重點。網路協定 ,入門可以讀《圖解HTTP》《圖解TCP/IP》如果要深入研究可以讀《UNIX網路程式設計 卷1》和《TCP/IP詳解卷1》大多數開發者接觸http和tcp、udp、ip協定比較多,但是對整體網路協定棧有個完整了解是必要的。資料結構與演演算法 ,資料結構是演演算法的基礎,一定要清晰明瞭。演演算法則是筆試面試中無法繞過的難關,推薦去LeetCode刷題,現在也有了中文官方網站:力扣(LeetCode) 中國官網 - 全球極客摯愛的技術成長平臺 從easy難度開始刷起,積累一定題量之後,做演演算法題會很快找到型別方法。SSM框架 ,Spring+SpringMVC+MyBatis可以說是開發必備了,但框架只是錦上添花,不要太依賴框架進行學習。當我們能不依賴任何框架開發完整專案時,才是真正掌握了它。最為重要的是理解Spring的兩個特性:IOC 反轉控制和DI 依賴注入。明白實現原理以及為什麼要使用Spring,只有這樣才能在層出不窮的框架中靈活應對,立於不敗之地。
加分技能
前端,一些崗位要求全棧,即使不是全棧,懂得前端技術的後臺能寫出更加合理的介面,與前端工程師合作起來會更順利,理解專案更通透,解決問題準確迅速。 學習一門動態語言,動態語言開發起來更靈活迅速。同時比較動態靜態語言的特點,可以更好去提煉跳出語言束縛的程式碼思想。推薦學習JavaScript或者Python等。 巨量資料,巨量資料開發近幾年也是熱門方向之一,有興趣的同學可以學習。 熱門工具及框架,包括分散式Dubbo、快取優化redis、nginx、虛擬化技術docker等。一般來說本科應屆生不會要求很高,但是要對熱門技術有一定的瞭解。
最後提供免費的Java架構學習資料,學習技術內容包含有:Spring,Dubbo,MyBatis, RPC, 原始碼分析,高並行、高效能、分散式,效能優化,微服務 高階架構開發等等。 需要的朋友可以點選:點這個!點這個! ,暗號:csdn。
還有Java核心知識點+全套架構師學習資料和視訊+一線大廠面試寶典+面試簡歷模板可以領取+阿里美團網易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring原始碼合集+Java架構實戰電子書+2020年最新大廠面試題。