硬菜它又來了!“總結歷年各大廠面試官傳授的面試經驗”+“阿里P8級架構師整理的Java高頻核心知識點”
阿新 • • 發佈:2020-10-09
前言:
一直以來Java程式設計師最關注的問題:Java的學習路徑?Java要學到什麼程度才可以就業?Java培訓機構靠譜嗎?等等。
下面是我總結的工作或者面試必備的一些知識點文件,供大家參考。你也可以和培訓機構的課程大綱就下對比,來確定優劣。也可以檢測一下自己的知識是不是能跟上時代的要求。完整文件覆蓋十四個大項,七十八個小項,希望能幫助到正在路上的你!
一.Java基礎
- 1.11 Java 反射
二.集合類 Set
2.12 hash 演算法 java map 底層實現,最好看原始碼,還有各種集合類的區別 4. TreeMap 和 TreeSet 區別和實現原理 5. 集合和有序集合有什麼區別 6. Set 是無序的,那怎麼保證它有序?有什麼辦法嗎?提到了 TreeSet,那說一下 TreeSet 為什麼能夠保證有序? 7. java 中 hashMap 結構,處理衝突方法,還有啥方法,各個方法優缺點 .Collections.sort() 的原理 集合框架的理解 對 Java 的集合框架有什麼樣的瞭解, 用過哪些集合類三.java 多執行緒
4.2.執行緒狀態
- 1、新建狀態(New):新建立了一個執行緒物件。
- 2、就緒狀態(Runnable
- 3、執行狀態(Running):就緒狀態的執行緒獲取了 CPU,執行程式程式碼。
- 4、阻塞狀態(Blocked):阻塞狀態是執行緒因為某種原因放棄 CPU 使用權,暫時停止執行。直到執行緒進入就緒狀態,才有機會轉到執行狀態。阻塞的情況分三種:
- (一)、等待阻塞:執行的執行緒執行 wait()方法,JVM 會把該執行緒放入等待池中。(wait會釋放持有的鎖)
- (二)、同步阻塞:執行的執行緒在獲取物件的同步鎖時,若該同步鎖被別的執行緒佔用,則 JVM 會把該執行緒放入鎖池中。
- (三)、其他阻塞:執行的執行緒執行 sleep()或 join()方法,或者發出了 I/O 請求時,JVM 會把該執行緒置為阻塞狀態。當 sleep()狀態超時、join()等待執行緒終止或者超時、或者 I/O 處理完畢時,執行緒重新轉入就緒狀態。(注意,sleep 是不會釋放持有的鎖)
- 5、死亡狀態(Dead):執行緒執行完了或者因異常退出了 run()方法,該執行緒結束生命週期。
四.Java 進階 ssh/ssm 框架
2.4 Redis
- Redis 資料結構 Redis 持久化機制
- Redis 的一致性雜湊演算法
- redis瞭解多少 redis五種資料型別,當雜湊型別的 value 值非常大的時候怎麼進行壓縮,
- 用 redis 怎麼實現搖一搖與附近的人功能,redis 主從複製過程,
- Redis 如何解決 key 衝突
- redis 的五種資料結構
- redis 是怎麼儲存資料的
- redis 使用場景
五.Java 記憶體模型 和 垃圾回收
3.9 面試問題
3.9.1 一般 Java 堆是如何實現的? 我:在 HotSpot 虛擬機器實現中,Java 堆分成了新生代和老年代,我當時看的是 1.7 的實現, 所有還有永久代,新生代中又分為了 eden 區和 survivor 區, survivor 區又分成了 S0 和 S1, 或則是 from 和 to,(這個時候,我要求紙和筆,因為我覺得這個話題可以聊蠻長時間,又 是我比較熟悉的...一邊畫圖,一邊描述),其中 eden,from 和 to 的記憶體大小預設是 8:1:1 (各種細節都要說出來...),此時,我已經在紙上畫出了新生代和老年代代表的區域六.設計模式
4.1.13 組合模式
Composite 組合模式: 又叫做部分-整體模式,使得客戶端看來單個物件和物件的組合是同等的。換句話說,某個 型別的方法同時也接受自身型別作為引數。 avax.swing.JComponent#add(Component) java.util.Map#putAll(Map) java.util.List#addAll(Collection) java.util.Set#addAll(Collection)七.資料結構與演算法
八.資料庫
8.7 資料庫正規化
- 1NF:符合1NF的關係中的每個屬性都不可再分
- 2NF∶屬性完全依賴於主鍵[消除部分子函式依賴]
- 3NF:屬性不依賴於其它非主屬性[消除傳遞依賴]
- BCNF:在1NF基礎上,任何非主屬性不能對主鍵子集依賴[在3NF基礎上消除對主碼子集的依賴
- 4NF:要求把同一表內的多對多關係刪除。
- 5NF:從最終結構重新建立原始結構。
九.作業系統
10.2.2 死鎖避免-安全序列
安全序列 安全序列是指對當前申請資源的程序排出一個序列,保證按照這個序列分配資源完成程序,不會發生 “ 醬油和醋 ” 的尷尬 問題。 我們假設有程序 P1,P2,.....Pn 則安全序列要求滿足: Pi(1<=i<=n) 需要資源 <= 剩餘資源 + 分配給 Pj(1 <= j < i) 資源 為什麼等號右邊還有已經被分配出去的資源?想想銀行家那個問題,分配出去的資源就好比第二個開發商,人家能還回 來錢,咱得把這個考慮在內。十.Linux 命令
10.9 linux 鎖 1.互斥鎖 互斥鎖只能有對一個執行緒使用,就是用來互斥的。 以下是互斥鎖的基本操作 3. 自旋鎖 自旋鎖上鎖後讓等待執行緒進行忙等待而不是睡眠阻塞,而訊號量是讓等待執行緒睡眠阻塞。 自旋鎖的忙等待浪費了處理器的時間,但時間通常很短,在 1 毫秒以下。十一.專案
由於文章篇幅原因,只能展示部分文件。需要整份文件資料以及以下我整理的歷年大廠面試題的,三連後“加我助理VX”即可免費獲取到;