Java程序員,最常用的20%技術有哪些?

作者:SnailClimb
鏈接:https://www.zhihu.com/question/38880482/answer/567106090
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
 

爲什麼這麼多收藏,這麼少的贊同,各位老哥如果覺得不錯的話,點個贊同吧!統一回復一下,我的公衆號名稱是:「JavaGuide」

Java 工程師必備學習資源獲取方式:Java工程師必備學習資源免費獲取無套路!!!完全免費!!!

筆主的其他回答

建議不要管那個常不常用這些問題!你想找工作就老老實實的學。操作系統、計算機網絡這些基礎知識,工作之後基本都忘的差不多了。但是,我個人覺得也還是要學的。很多人都說數據結構和算法就像一個程序員的內功,前期可能你看不出來,等到後面你再和那些算法和數據結構厲害的人比可能就會相形見絀。所以,我覺得除了應付找工作之外。搞好基礎知識。如果非要學那些常用,我個人覺得:Spring、Hibernate、Mybatis 等框架、Dubbo、Zookeeper、常見的消息隊列(比如ActiveMq)的使用、緩存Redis、MySQL等等這些東西都應該是每個Java初中級程序員必備的技能了吧!

Java 該學習那些東西

很多初學者或者有經驗的開發者都會陷入這個泥潭:「不知道自己該學什麼?」。

我覺得最簡單的方法就是你去招聘官網上看看公司要求什麼技能,比如初級 Java 工程師的招聘要求肯定和高級 Java 工程師的招聘要求不一樣,阿里的 Java 工程師的招聘要求肯定和 普通公司的Java 工程師招聘要求不一樣。

阿里:阿里巴巴招聘官網

 

總結:初中級 Java 程序員必須掌握的知識。

  1. 熟練掌握數據結構、算法、操作系統、計算機網絡等基礎知識
  2. 熟練掌握Java編程、熟悉Java高併發開發手段、對JVM 虛擬機(Java內存區域、虛擬機垃圾算法、虛擬垃圾收集器、JVM內存管理)有一定研究
  3. 熟練掌握SOA分佈式系統開發,具有優化系統性能、提高系統併發量以及系統可用性的實際經驗
  4. 熟練掌握Struts2、Spring、Hibernate、Mybatis 等框架的使用,熟悉 Spring 原理
  5. 熟練掌握Dubbo、Zookeeper、常見的消息隊列(比如ActiveMq)的使用
  6. 熟悉Linux 系統的使用,在Linux系統下具有實際的開發經驗
  7. 熟悉MySQL數據庫的使用、常見SQL語句的書寫以及常見的優化手段
  8. 掌握 Spring Boot +Spring Cloud +Docker
  9. 瞭解Hadoop 生態相關技術中的 HDFS、Storm、MapReduce、Hive、Hbase

筆主自己開源的一個Java學習與面試項目,目前已經幾個月是JavaTrending榜第一名了,目前已經有 27k+ star,我自己有點不那麼實至名歸,我也只是靠平時業餘時間來維護,大家可以看一下,不知道對大家學習Java有沒有幫助。項目地址如下:

Snailclimb/JavaGuide​github.com圖標

下面的PDF文檔是我免費分享的專爲Java面試設計的文檔,如果需要的話在公衆號「JavaGuide」回覆關鍵字「面試突擊」就可以了。

Java面試突擊

Java 程序員必備書單

這些書籍大部分我自己都看完了,非常不錯。大家如果需要這些書籍的 PDF資源可以關注我的公衆號之後回覆關鍵字「1」獲取。我的公衆號名稱:JavaGuide。

Java

基礎

  • 《Head First Java》(推薦,豆瓣評分 8.7,1.0K+人評價): 可以說是我的 Java 啓蒙書籍了,特別適合新手讀當然也適合我們用來溫故 Java 知識點。
  • 《Java 核心技術卷 1+卷 2》(推薦): 很棒的兩本書,建議有點 Java 基礎之後再讀,介紹的還是比較深入的,非常推薦。這兩本書我一般也會用來鞏固知識點,是兩本適合放在自己身邊的好書。
  • 《JAVA 網絡編程 第 4 版》: 可以系統的學習一下網絡的一些概念以及網絡編程在 Java 中的使用。
  • 《Java 編程思想 (第 4 版)》(推薦,豆瓣評分 9.1,3.2K+人評價):不推薦初學者看!這本書要常讀,初學者可以快速概覽,中等程序員可以深入看看 java,老鳥還可以用之回顧 java 的體系。這本書之所以厲害,因爲它在無形中整合了設計模式,這本書之所以難讀,也恰恰在於他對設計模式的整合是無形的。

併發

  • 《Java 併發編程之美》 (推薦):2018 年 10 月出版的一本書,個人感覺非常不錯,對每個知識點的講解都很棒。
  • 《Java 併發編程的藝術》(推薦,豆瓣評分 7.2,0.2K+人評價): 這本書不是很適合作爲 Java 併發入門書籍,需要具備一定的 JVM 基礎。我感覺有些東西講的還是挺深入的,推薦閱讀。
  • 《實戰 Java 高併發程序設計》(推薦,豆瓣評分 8.3): 書的質量沒的說,推薦大家好好看一下。
  • 《Java 高併發編程詳解》(豆瓣評分 7.6): 2018 年 6 月出版的一本書,內容很詳細,但可能又有點過於囉嗦,不過這只是我的感覺。

JVM

Java8 新特性

  • 《Java 8 實戰》 (推薦,豆瓣評分 9.2 ):面向 Java 8 的技能升級,包括 Lambdas、流和函數式編程特性。實戰系列的一貫風格讓自己快速上手應用起來。Java 8 支持的 Lambda 是精簡表達在語法上提供的支持。Java 8 提供了 Stream,學習和使用可以建立流式編程的認知。
  • 《Java 8 編程參考官方教程》 (推薦,豆瓣評分 9.2):也還不錯吧。

代碼優化

網絡

  • 《圖解 HTTP》(推薦,豆瓣評分 8.1 , 1.6K+人評價): 講漫畫一樣的講 HTTP,很有意思,不會覺得枯燥,大概也涵蓋也 HTTP 常見的知識點。因爲篇幅問題,內容可能不太全面。不過,如果不是專門做網絡方向研究的小夥伴想研究 HTTP 相關知識的話,讀這本書的話應該來說就差不多了。
  • 《HTTP 權威指南》 (推薦,豆瓣評分 8.6):如果要全面瞭解 HTTP 非此書不可!

操作系統

  • 《鳥哥的 Linux 私房菜》(推薦,,豆瓣評分 9.1,0.3K+人評價):本書是最具知名度的 Linux 入門書《鳥哥的 Linux 私房菜基礎學習篇》的最新版,全面而詳細地介紹了 Linux 操作系統。全書分爲 5 個部分:第一部分着重說明 Linux 的起源及功能,如何規劃和安裝 Linux 主機;第二部分介紹 Linux 的文件系統、文件、目錄與磁盤的管理;第三部分介紹文字模式接口 shell 和管理系統的好幫手 shell 腳本,另外還介紹了文字編輯器 vi 和 vim 的使用方法;第四部分介紹了對於系統安全非常重要的 Linux 賬號的管理,以及主機系統與程序的管理,如查看進程、任務分配和作業管理;第五部分介紹了系統管理員 (root) 的管理事項,如瞭解系統運行狀況、系統服務,針對登錄文件進行解析,對系統進行備份以及核心的管理等。

數據結構與算法

  • 《大話數據結構》(推薦,豆瓣評分 7.9 , 1K+人評價):入門類型的書籍,讀起來比較淺顯易懂,適合沒有數據結構基礎或者說數據結構沒學好的小夥伴用來入門數據結構。
  • 《數據結構與算法分析:C 語言描述》(推薦,豆瓣評分 8.9,1.6K+人評價):本書是《Data Structures and Algorithm Analysis in C》一書第 2 版的簡體中譯本。原書曾被評爲 20 世紀頂尖的 30 部計算機著作之一,作者 Mark Allen Weiss 在數據結構和算法分析方面卓有建樹,他的數據結構和算法分析的著作尤其暢銷,並受到廣泛好評.已被世界 500 餘所大學用作教材。
  • 《算法圖解》(推薦,豆瓣評分 8.4,0.6K+人評價):入門類型的書籍,讀起來比較淺顯易懂,適合沒有算法基礎或者說算法沒學好的小夥伴用來入門。示例豐富,圖文並茂,以讓人容易理解的方式闡釋了算法.讀起來比較快,內容不枯燥!
  • 《算法 第四版》(推薦,豆瓣評分 9.3,0.4K+人評價):Java 語言描述,算法領域經典的參考書,全面介紹了關於算法和數據結構的必備知識,並特別針對排序、搜索、圖處理和字符串處理進行了論述。書的內容非常多,可以說是 Java 程序員的必備書籍之一了。

數據庫

  • 《高性能 MySQL》(推薦,豆瓣評分 9.3,0.4K+人評價):mysql 領域的經典之作,擁有廣泛的影響力。不但適合數據庫管理員(dba)閱讀,也適合開發人員參考學習。不管是數據庫新手還是專家,相信都能從本書有所收穫。
  • 《Redis 實戰》:如果你想了解 Redis 的一些概念性知識的話,這本書真的非常不錯。
  • 《Redis 設計與實現》(推薦,豆瓣評分 8.5,0.5K+人評價):也還行吧!
  • 《MySQL 技術內幕-InnoDB 存儲引擎》(推薦,豆瓣評分 8.7):瞭解 InnoDB 存儲引擎底層原理必備的一本書,比較深入。

系統設計

設計模式

常用框架

  • 《深入分析 Java Web 技術內幕》: 感覺還行,涉及的東西也蠻多。
  • 《Netty 實戰》(推薦,豆瓣評分 7.8,92 人評價):內容很細,如果想學 Netty 的話,推薦閱讀這本書!
  • 《從 Paxos 到 Zookeeper》(推薦,豆瓣評分 7.8,0.3K 人評價):簡要介紹幾種典型的分佈式一致性協議,以及解決分佈式一致性問題的思路,其中重點講解了 Paxos 和 ZAB 協議。同時,本書深入介紹了分佈式一致性問題的工業解決方案——ZooKeeper,並着重向讀者展示這一分佈式協調框架的使用方法、內部實現及運維技巧,旨在幫助讀者全面瞭解 ZooKeeper,並更好地使用和運維 ZooKeeper。
  • 《Spring 實戰(第 4 版)》(推薦,豆瓣評分 8.3,0.3K+人評價):不建議當做入門書籍讀,入門的話可以找點國人的書或者視頻看。這本定位就相當於是關於 Spring 的新華字典,只有一些基本概念的介紹和示例,涵蓋了 Spring 的各個方面,但都不夠深入。就像作者在最後一頁寫的那樣:「學習 Spring,這纔剛剛開始」。
  • 《RabbitMQ 實戰指南》:《RabbitMQ 實戰指南》從消息中間件的概念和 RabbitMQ 的歷史切入,主要闡述 RabbitMQ 的安裝、使用、配置、管理、運維、原理、擴展等方面的細節。如果你想淺嘗 RabbitMQ 的使用,這本書是你最好的選擇;如果你想深入 RabbitMQ 的原理,這本書也是你最好的選擇;總之,如果你想玩轉 RabbitMQ,這本書一定是最值得看的書之一
  • 《Spring Cloud 微服務實戰》:從時下流行的微服務架構概念出發,詳細介紹了 Spring Cloud 針對微服務架構中幾大核心要素的解決方案和基礎組件。對於各個組件的介紹,《Spring Cloud 微服務實戰》主要以示例與源碼結合的方式來幫助讀者更好地理解這些組件的使用方法以及運行原理。同時,在介紹的過程中,還包含了作者在實踐中所遇到的一些問題和解決思路,可供讀者在實踐中作爲參考。
  • 《第一本 Docker 書》:Docker 入門書籍!

網站架構

  • 《大型網站技術架構:核心原理與案例分析+李智慧》(推薦):這本書我讀過,基本不需要你有什麼基礎啊~讀起來特別輕鬆,但是卻可以學到很多東西,非常推薦了。另外我寫過這本書的思維導圖,關注我的微信公衆號:「Java 面試通關手冊」回覆「大型網站技術架構」即可領取思維導圖。
  • 《億級流量網站架構核心技術》(推薦):一書總結並梳理了億級流量網站高可用和高併發原則,通過實例詳細介紹瞭如何落地這些原則。本書分爲四部分:概述、高可用原則、高併發原則、案例實戰。從負載均衡、限流、降級、隔離、超時與重試、回滾機制、壓測與預案、緩存、池化、異步化、擴容、隊列等多方面詳細介紹了億級流量網站的架構核心技術,讓讀者看後能快速運用到實踐項目中。

軟件底層

  • 《深入剖析 Tomcat》(推薦,豆瓣評分 8.4,0.2K+人評價):本書深入剖析 Tomcat 4 和 Tomcat 5 中的每個組件,並揭示其內部工作原理。通過學習本書,你將可以自行開發 Tomcat 組件,或者擴展已有的組件。 讀完這本書,基本可以擺脫背誦面試題的尷尬。
  • 《深入理解 Nginx(第 2 版)》:作者講的非常細緻,註釋都寫的都很工整,對於 Nginx 的開發人員非常有幫助。優點是細緻,缺點是過於細緻,到處都是代碼片段,缺少一些抽象。

其他

  • 《黑客與畫家》:這本書是硅谷創業之父,Y Combinator 創始人 Paul Graham 的文集。之所以叫這個名字,是因爲作者認爲黑客(並非負面的那個意思)與畫家有着極大的相似性,他們都是在創造,而不是完成某個任務。

推薦的教程

筆主自己開源的一個Java學習與面試項目,目前已經幾個月是JavaTrending榜第一名了,目前已經有 33k+ star,我自己有點不那麼實至名歸,我也只是靠平時業餘時間來維護,大家可以看一下,因該對大家學習Java有一點沒有幫助。

這個倉庫裏面有常見知識點總結(目前還在繼續完善中)、常見面試題、備戰面試系列文章以及BATJ真實面經等內容。

  • 對於 Java 初學者來說: 本文檔傾向於給你提供一個比較詳細的學習路徑,讓你對於Java整體的知識體系有一個初步認識。另外,本文的一些文章 也是你學習和複習 Java 知識不錯的實踐;
  • 對於非 Java 初學者來說: 本文檔更適合回顧知識,準備面試,搞清面試應該把重心放在那些問題上。要搞清楚這個道理:提前知道那些面試常見,不是爲了背下來應付面試,而是爲了讓你可以更有針對的學習重點。

Snailclimb/JavaGuide​github.com

 

Java 工程師必備學習資源,大家可以在下年這篇文章中找到獲取上述資源的辦法!無套路!!!完全免費!!!

Java工程師必備學習資源免費獲取​shimo.im

 

我的公衆號:JavaGuide。公衆號主要分享 Java 常見知識點總結、Java 面試重點問題以及大廠 Java 後端真實面經。公衆號作者的開源項目—JavaGuide 目前已經29k+Star。歡迎各位關注