01.15 6大面試技能樹:JAVA基礎+JVM+算法+數據庫+計算機網絡+操作系統

寫在前面

走過春招,跨過秋招,一年又一年,又將踏入新的一年。事實上,面試問題幾乎集中在JAVA基礎、JVM、算法、數據庫(MySQL、Redis)、計算機網絡、操作系統等方面,接下來小編會分類進行列舉(敲黑板,這都是要考的重點啦)!!!

JAVA

注意注意:6大面試技能樹對應的“具體筆記詳解”分享在文中,私信“學習”可免費獲取!!

01 設計模式(23種設計模式)

單例模式 懶漢、餓漢、雙重校驗鎖、靜態內部類工廠模式

23種設計模式要點(PDF)

02 JAVA基礎(HashMap,線程池)

抽象類和接口區別集合類的結構 Iterator、Collection(List、Set、Queue)、MapArrayList和LinkedList的區別

2.1 HashMap

底層結構 數組 + 鏈表Put 的過程為什麼長度是2的倍數 找索引時 key 的 hash 值與數組的長度值減 1 進行與運算,長度為 2 的倍數時能減少碰撞JDK 1.7 和 1.8 中 HashMap 的區別 1.8 增加紅黑樹、頭插變為尾插、擴容後元素位置要麼在原位置,要麼在原位置 + 擴容前舊容量為什麼線程不安全 擴容時鏈表可能形成閉環ConcurrentHashMap 怎麼保證線程安全ConcurrentHashMap 和 HashMap 區別

2.2 線程池

線程池常用參數 核心線程數、最大線程數、阻塞隊列、線程最大存活時間線程池工作流程線程池的類別和區別阻塞隊列的類別和區別

03 JVM

JAVA核心知識整理——JVM詳解

內存結構和各自存放的內容 方法區、堆、虛擬機棧、本地方法棧、程序計數器新生代和老年代垃圾回收算法 新生代 -> 複製,老年代 -> 標記-整理(CMS用的標記-清除)CMS/G1的流程 初始標記 -> 併發標記 -> 重新標記 -> 併發清除CMS/G1的特點和區別 CMS:儘可能減少停頓時間,採用標記-清除,會造成內存碎片化 G1:可以預測停頓時間,採用標記-整理,減少內存碎片化, 將內存劃分為 region 粒度判斷垃圾是否可以回收的方法 引用計數法、可達性分析法哪些對象可以作為GC ROOT

04 Spring

IOC 和 AOP 的含義和原理Spring、SpringBoot、SpringMVC 的區別SpringBoot 的啟動流程Bean 的生命週期SpringMVC 的流程

05 MySQL(事務,索引)

MySQL高頻知識點(Word)

5.1 事務

什麼是事務事務的特性(ACID),詳細說明各個特性的含義 原子性、一致性、隔離性、持久性事務隔離級別 未提交讀 -> 已提交讀 -> 可重複讀 -> 串行化髒讀、不可重複讀、幻讀的區別事務隔離級別怎麼實現預防上述問題(eg: 可重複讀怎麼實現預防不可重複讀)

5.2 索引

常用索引(B樹、Hash)聚簇索引和非聚簇索引的區別聯合索引和單個索引的區別,聯合索引的最左匹配原則B樹和B+樹的區別 B+樹的非葉子節點不保存數據,所以磁盤頁能容納更多節點元素,更“矮胖” B+樹查詢必須查找到葉子節點,B樹只要匹配到即可不用管元素位置,因此B+樹查找更穩定(也不慢) 對於範圍查找來說,B+樹只需遍歷葉子節點鏈表即可,B樹卻需要重複地中序遍歷

06 Redis

Redis學習筆記(PDF)

Redis 的五種數據結構 String、Hash、List、Set、Zset(SortSet)Redis 為什麼快 純內存、單線程、IO多路複用(一般會繼續問IO多路複用相關問題)Redis 持久化 RDB、AOFRedis 高可用 哨兵機制、Redis Cluster、持久化(上面那個)

07 計算機網絡(TCP & UDP,HTTPS)

JAVA核心知識整理——計算機網絡詳解

點擊一個URL到頁面返回,發生了什麼 客戶端傳給服務端時經過 TCP/IP 四層模型,中途依次加入HTTP報文、TCP報文、IP報文、MAC報文,然後逆序依次拆包OSI 七層模型 & TCP/IP 四層模型cookie 和 session 的區別

7.1 TCP & UDP

TCP 三次握手,四次揮手的流程(最好能畫圖,說明各階段狀態)為什麼需要三次握手 防止已過期的連接再次傳到被連接的主機為什麼需要四次揮手 / 斷開連接時為什麼比建立連接多一次 服務端的 ACK 和 FIN 一般都會分開發送,ACK 表示自己收到了客戶端的斷開請求(但還有數據沒傳輸完),FIN 表示自己傳輸完了數據TCP 和 UDP 的區別TIME_WAIT 的作用 保證客戶端發送的最後一個ACK報文能夠到達服務器 防止類似與“三次握手”中提到了的“已經失效的連接請求報文段”出現在本連接中。客戶端發送完最後一個確認報文後,在這個2MSL時間中,就可以使本連接持續的時間內所產生的所有報文段都從網絡中消失

7.2 HTTPS

HTTPS的優勢 CA證書認證、加密傳輸HTTPS建立連接流程為什麼傳輸過程中採用對稱加密,協商時採用非對稱加密 對稱加密快

08 操作系統(進程 & 線程, Linux(幾乎為Linux命令),算法)

8.1 進程 & 線程

進程和線程的區別進程間通信方式 管道、消息隊列、信號量、共享內存線程間通信方式 消息隊列、全局變量

8.2 Linux(幾乎為Linux命令)

linux命令全集(PDF)

查找某個進程(ps aux |grep threadId)殺掉某個進程(kill,參數添加-9表示強制執行)查看某個端口是否被佔用(netstat -anp |grep threadId)實時查看進程狀態(top)

8.3 算法

算法刷題LeetCode中文版

最大子序列和反轉鏈表數組中查找兩數之和為K的序列對

最後總結

跳槽無處不在,時時刻刻都在發現,新年即將來臨,弱弱的問一句:你真的準備好了嗎?

如果你正在準備2020的春招,那麼建議看看這篇6大JAVA面試技能樹:JAVA基礎+JVM+算法+數據庫+計算機網絡+操作系統,6大方向的具體筆記解析也會免費分享給大家一起學習

關注一下免費獲取學習方式:轉發 轉發 轉發+私信 私信 私信 “學習”

小編會一一回復,按回復操作即可免費領取!!!


6大JAVA面試技能樹:JAVA基礎+JVM+算法+數據庫+計算機網絡+操作系統