自學Java找到20k的工作

程式設計師大彬 發表於 2022-01-24
Java

大家好,我是大彬~

我本科學的不是計算機,大四開始自學Java,並且找到了中大廠的offer。自學路上遇到不少問題,每天晚上都是堅持到一兩點才睡覺,最終也拿到了30w的offer。

自學Java找到20k的工作

在這裡也提醒學弟學妹們,要儘早確定以後的方向,讀研還是工作,找工作的話,也要儘快確定工作崗位,想轉行的,需要花更多的時間準備。很多同學到了大四快畢業的時候,才思考自己未來要做什麼,這個時候已經有點晚了。如果錯過了校招,走社招渠道去找工作,難度將會提升一個等級,到時後悔也來不及!

好了,下面給大家分享一下我的自學經驗。

首先看一下Java學習路線圖:

自學Java找到20k的工作

內容還是挺多的,需要不斷堅持!

給大家分享一份精心整理的大廠高頻面試題PDF,需要的小夥伴可以自行下載:

http://mp.weixin.qq.com/s?__b...

Java基礎

初學者的建議就是:多敲程式碼!多敲程式碼!多敲程式碼!

學習程式設計就是看書加實踐,要多動手,不然看過的知識點很快就會忘,而且多實踐也會遇到很多坑,豐富經驗。 可以到github上找一些專案練練手,通過做專案鞏固知識,而且每實現一個功能之後,會有滿滿的成就感,也會激勵你不斷去學習。

推薦書籍:

  • 《head first java》
  • 《JAVA核心技術卷》

head first系列的書籍講解比較有趣,比較好理解。《JAVA核心技術卷》難度相對適中,內容也比較全面,部分章節(如Swing)可以跳過。

Java基礎知識主要有:

  1. 類與物件
  2. 物件導向特性
  3. 抽象類和介面
  4. 資料型別、重寫過載、封裝繼承多型
  5. 容器類Map/List/Set等
  6. IO操作:InputStream , OutputStream, Reader/Writer, 檔案讀取,各種流讀取等
  7. 異常處理
  8. 反射機制
  9. 泛型
  10. final關鍵字的作用
  11. throw和throws
  12. 自定義異常
  13. 內部類
  14. 匿名內部類

IO流操作:

  1. File類對檔案的操作
  2. 位元組流寫資料
  3. 位元組流讀資料的方式
  4. 位元組流完成視訊檔案的複製
  5. 編碼表
  6. 字元流寫資料
  7. 字串讀資料
  8. 字元緩衝流的使用
  9. 標準輸入輸出流
  10. 物件序列化流
  11. 記憶體操作流
  12. RandomAccessFile
  13. SequenceInputStream
  14. 壓縮流/解壓縮流

集合基礎

  1. 集合框架
  2. ArrayList集合的特點
  3. ArrayList的構造方法
  4. ArrayList的常用操作
  5. HashMap、HashTable、Hashset
  6. HashMap原始碼
  7. 迭代器Iterator
  8. Map集合遍歷
  9. LinkedHashMap
  10. ConcurrentHashMap

Java Web

Java Web是一系列技術的綜合,也是大多數Java開發者的技術方向。有必要學習一下。這部分可以看看視訊教程。

視訊推薦【尚矽谷】的JavaWeb全套教程,HTML/CSS/JavaScript等跟前端相關的可以倍速觀看。

https://www.bilibili.com/vide...

【黑馬程式設計師】的Java web教程總體也不錯,IDEA版本的:https://www.bilibili.com/vide...

HTML&CSS(瞭解)

  1. HTML基本使用
  2. HTML常用標籤
  3. CSS選擇器
  4. HTML5新特性
  5. CSS3新特性

JavaScript(瞭解)

  1. JavaScript嵌入方式
  2. JavaScript基本語法
  3. ECMA6新特性
  4. JavaScript流程控制
  5. 陣列、函式、物件
  6. JavaScript物件導向
  7. 常用內建物件
  8. JavaScript事件繫結/觸發
  9. JavaScript DOM操作及API
  10. JavaScript BOM物件及API

Servlet

  1. Servlet概述
  2. Servlet執行過程分析
  3. Servlet的實現方式分析
  4. Servlet的類試圖詳解
  5. Servlet的生命週期
  6. Servlet的執行緒安全問題分析

Java EE

  1. JavaEE規範
  2. 靜態資源和動態資源
  3. C/S和B/S
  4. Tomcat概述
  5. Tomcat下載與安裝
  6. Tomcat各版本所需支援
  7. Tomcat啟動及啟動問題分析及解決
  8. Tomcat目錄結構
  9. JavaEE工程概述

工具

首先是 Git,版本控制工具,必須掌握。很多剛工作的同學,可能經常會遇到Git相關的問題,如程式碼衝突、分支合併等,所以還是得把Git學會。推薦狂神的視訊:

Git零基礎入門到實戰詳解:

https://www.bilibili.com/vide...

接下來是 Maven 和 Gradle,構建工具,用來構建和管理各種專案。

maven零基礎入門:

https://www.bilibili.com/vide...

Git基礎知識

  1. Git概述和特點
  2. Git基本概念
  3. Git歷史版本控制
  4. Git分支版本控制
  5. Git遠端倉庫
  6. Git遠端託管平臺
  7. Git解決衝突

Maven基礎知識

  1. Maven環境搭建
  2. Maven構建&自動化構建
  3. 本地倉庫&中央倉庫
  4. Maven建立Java、Web工程
  5. pom.xml、依賴管理
  6. 座標、依賴、生命週期等
  7. pom檔案依賴傳遞介紹
  8. 依賴衝突的解決
  9. Maven專案繼承的關係
  10. Maven專案聚合的關係
  11. 分模組搭建聚合專案
  12. 私有伺服器倉庫介紹和搭建
  13. 本地資源上傳到私有伺服器
  14. 從私有伺服器下載資源到本地
  15. 安裝第三方資源到本地倉庫
  16. 安裝第三方資源到私有伺服器倉庫

Docker基礎知識

  1. Docker映象命令
  2. Docker容器命令
  3. Docker部署MySQL、Redis等
  4. 容器儲存轉為映象
  5. 映象備份
  6. 映象恢復和遷移
  7. Dockerfile
  8. Docker Compose 常用命令
  9. Docker私有倉庫使用

資料庫

資料庫也是必學的一塊內容,主要是Mysql資料庫。書籍推薦:

  • 《mysql必知必會》
  • 《高效能mysql》

《mysql必知必會》主要是Mysql的基礎語法,很好理解。後面有了基礎再看《高效能mysql》,這本書主要講解索引、SQL優化、高階特性等,很多Mysql相關面試題出自《高效能Mysql》這本書,值得一看。

MySQL基礎知識:

  1. 增刪改查
  2. 事務特性、隔離級別
  3. 索引原理、優化
  4. b+樹
  5. 最左匹配原則
  6. 儲存引擎
  7. MVCC
  8. 執行計劃
  9. 分庫分表
  10. 日誌,bin log/undo log/redo log
  11. 資料的複雜查詢
  12. 約束的使用
  13. 多表關係(一對一、一對多、多對多)
  14. 資料庫的還原和備份
  15. 多表查詢操作
  16. 事務介紹
  17. 事務的隔離
  18. 資料庫的使用者管理和許可權管理
  19. 檢視的使用
  20. 儲存過程的使用
  21. 觸發器的使用
  22. 儲存引擎原理
  23. 索引高效查詢
  24. 鎖機制
  25. 資料庫叢集

框架

主流框架主要有:

  • spring:面向切面、依賴注入,推薦書籍《Spring實戰》,通過demo的方式帶你一步步搭建Spring應用
  • springboot:習慣優於配置、自動配置。目前很多公司內部都是使用Spring Boot。書籍推薦《Spring Boot實戰》
  • springmvc:基於MVC架構模式的輕量級Web框架
  • Mybatis:orm框架,推薦書籍《深入淺出Mybatis》
  • springcloud:現在面試基本都會問到微服務相關的內容,最好了解下微服務相關的知識。服務註冊與發現、負載均衡、服務降級、API閘道器等。推薦書籍《spring cloud微服務實戰》

Spring

  1. Spring概述
  2. 耦合與解耦
  3. 工廠設計模式
  4. IoC概述及作用
  5. 依賴注入的概念
  6. Spring中的依賴注入
  7. Spring基於註解的IoC配置
  8. 常用註解的使用
  9. 元件掃描器
  10. BeanFactoryPostProcessor
  11. BeanPostProcessor
  12. InitializingBean

SpringMVC

  1. 常用元件
  2. @RequestMapping註解
  3. 請求引數封裝
  4. 表單校驗相關注解
  5. ServletAPI相關的註解使用
  6. 控制器方法的返回值詳解
  7. 的非同步互動和相關注解介紹
  8. Rest風格URL
  9. @PathVariable註解
  10. 跨域訪問詳解和 @CrossOrigin註解的使用
  11. SpringMVC中的異常處理
  12. SpringMVC中的攔截器

MyBatis

  1. 全域性配置檔案
  2. 對映配置檔案
  3. 增刪改查
  4. 引數深入
  5. 結果集封裝
  6. 連線池與事務深入
  7. 動態sql語句
  8. 多表查詢
  9. 延遲載入策略
  10. 新增分頁外掛
  11. 日誌整合

Spring Boot

  1. SpringBoot的核心功能
  2. SpringBoot的優勢
  3. 起步依賴原理分析
  4. 自動配置原理解析
  5. 自定義起步依賴並實現自動配置
  6. SpringBoot配置檔案型別
  7. 配置檔案與配置類的屬性對映方式
  8. SpringBoot整合Mybatis
  9. 自定義Starter
  10. 事件監聽
  11. 初始化流程

SpringCloud

  1. 服務註冊中心Eureka介紹
  2. Eureka服務端開發
  3. 微服務開發並註冊到Eureka服務註冊中心
  4. Eureka保護模式
  5. 客戶端負載和服務端負載
  6. Ribbon實現客戶端負載均衡
  7. Feign的實現
  8. Feign工作原理
  9. 雪崩效應與熔斷器
  10. 熔斷器Hystrix使用
  11. 閘道器介紹
  12. 基於Gateway構建閘道器服務
  13. 通過Gateway閘道器訪問微服務
  14. Spring Cloud Config
  15. 使用Git儲存的方式實現配置管理
  16. 微服務改造從配置中心獲取配置資訊
  17. 服務匯流排Spring Cloud Bus介紹和應用

Dubbo

  1. Dubbo簡介
  2. Dubbo架構
  3. Dubbo服務提供方
  4. Dubbo服務消費方
  5. Dubbo相關配置
  6. 監控中心
  7. 架構原理
  8. 工作原理與服務治理
  9. 心跳與通訊

中介軟體

Redis

  1. Redis優勢
  2. Redis五大資料型別
  3. 基本操作命令
  4. Redis持久化(RDB和AOF)
  5. LUA指令碼
  6. 分散式鎖
  7. pipeline
  8. Redis資料刪除策略
  9. Redis資料淘汰策略
  10. 叢集主從複製
  11. 叢集哨兵模式

RocketMQ

  1. 搭建RocketMQ
  2. RocketMQ-Console
  3. RocketMQ模式
  4. 訊息丟失
  5. 訊息重複
  6. 基於MQ的分散式事務解決方案說明

JVM

jvm也是面試經常會問的內容。Java開發者不用自己進行記憶體管理、垃圾回收,jvm幫我們做了,但是還是有必要了解下jvm的工作原理,這樣在出現oom等問題的時候,才有思路去排查和解決問題。書籍推薦周老師的《深入理解Java虛擬機器》。

jvm的基礎知識:

  • jvm記憶體結構(程式計數器、虛擬機器棧、本地方法棧、堆、方法區、執行時常量池、直接記憶體)
  • 類載入過程
  • 類檔案結構
  • 物件頭
  • 雙親委派
  • 記憶體分配和回收
  • 垃圾回收演算法
  • 垃圾回收器
  • 調優工具(jsp/jstack/jstat/jmap,瞭解即可)

併發

併發程式設計的相關內容可以看看《JAVA併發程式設計實戰》這本書,主要內容有:

  1. 執行緒的基本定義
  2. 實現執行緒的種方法
  3. 執行緒執行狀態
  4. 執行緒池原理
  5. 執行緒間通訊方式
  6. 鎖(synchronized、ReentrantLock)
  7. 併發工具類(CountDownLatch/CyclicBarrier/Semaphore)
  8. 原子類
  9. AQS
  10. 執行緒間通訊的方法
  11. 執行緒同步
  12. 執行緒死鎖

計算機基礎知識

平時抽空學習計算機基礎知識,鞏固基礎。

資料結構和演算法

推薦書籍《資料結構與演算法分析 java語言描述》,用Java語言描述各種資料結構和演算法,對於Java開發者來說,更容易理解,主要學習以下內容:

  • 基本資料結構(陣列、連結串列、棧、佇列等)
  • 樹(二叉樹、avl樹、b樹、紅黑樹等)
  • 堆結構
  • 排序演算法(氣泡排序、選擇排序、插入排序、快速排序、歸併排序、堆排序等及時間空間複雜度)
  • 動態規劃
  • 回溯
  • 貪心演算法

計算機網路

推薦《計算機網路自頂向下方法》:

  • 網路分層結構
  • TCP/IP
  • 三次握手四次揮手
  • 滑動視窗、擁塞控制
  • HTTP/HTTPS
  • 訪問某個連結的整個過程
  • DNS
  • 網路安全問題(CSRF、XSS、SQL隱碼攻擊等)

作業系統

學起來比較頭大,可以到b站找找視訊看,推薦清華大學的公開課。書籍推薦《深入理解計算機系統》,大部頭,經典書籍,值得多讀幾遍。

基礎知識:

  1. 程式執行緒
  2. 程式間通訊方式
  3. 執行緒同步方式
  4. 死鎖是什麼?產生條件
  5. 死鎖處理策略
  6. 分頁分段區別
  7. 程式排程策略
  8. 虛擬記憶體是什麼
  9. 頁面置換演算法
  10. 訊號量
  11. ...

linux

推薦書籍《鳥哥的linux私房菜》。

以上就是Java的學習路線,整個路線學習下來,基本最少也要半年時間,堅持就是勝利!

最後給大家分享一個github倉庫,上面放了200多本經典的計算機書籍,包括C語言、C++、Java、Python、前端、資料庫、作業系統、計算機網路、資料結構和演算法、機器學習、程式設計人生等,可以star一下,下次找書直接在上面搜尋,倉庫持續更新中~

自學Java找到20k的工作

github倉庫:https://github.com/Tyson0314/...

如果github訪問不了,可以訪問gitee倉庫。

gitee倉庫:https://gitee.com/tysondai/ja...

碼字不易,小夥伴們覺得有幫助的話,可以點個贊

我是@程式設計師大彬,定期分享Java後臺核心知識,歡迎大家關注~