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

寫在前面

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

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

JAVA

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

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

  • 單例模式 懶漢、餓漢、雙重校驗鎖、靜態內部類
  • 工廠模式
6大面試技能樹:JAVA基礎+JVM+算法+數據庫+計算機網絡+操作系統

23種設計模式要點(PDF)

02 JAVA基礎(HashMap,線程池)

  • 抽象類和接口區別
  • 集合類的結構 Iterator、Collection(List、Set、Queue)、Map
  • ArrayList和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

6大面試技能樹:JAVA基礎+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(事務,索引)

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

MySQL高頻知識點(Word)

5.1 事務

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

5.2 索引

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

06 Redis

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

Redis學習筆記(PDF)

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

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

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

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命令)

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

linux命令全集(PDF)

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

8.3 算法

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

算法刷題LeetCode中文版

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

最後總結

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

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

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

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


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

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


分享到:


相關文章: