1. 程式人生 > >java面試知識點

java面試知識點

1. HashMap 原始碼解讀(TreeMap. LinkedHashMap)

hashmap 允許 空值 和 空key, 非執行緒安全的,不保證儲存順序

初始容量 和 負載因子(0.75)

結構化改變,增加或者刪除必須是同步的, 單純的改變值不需要同步

獲取遍歷器的時候,多執行緒的結構的改變,不是通過遍歷器的remove方法的結構改變,都是在遍歷器的時候 丟擲異常,但是這個不能保證,只能是測試使用

根據hashcode排序,相同comparable的根據comparable排序

treeNode是正常節點的2倍 .

樹節點往往是根節點, iterator.remove才可能不是根節點,但是可以根據treenode.root恢復

容量必須是2的倍數,預設為16,最大為2^30

一個桶的元素>=8 就從list 變為 tree,<=6就從tree變為list

桶數量到64的時候裡面的桶才會被樹形化

4*8的元素在同一個節點的時候,會被重新更新size大小

hashBinNode hashCode是key和value的異或

2. heap 和 stack 的區別

stack: 先進後出

函式呼叫棧,有結構,查詢快,執行緒獨佔的,儲存引用和基本型別

heap:

先進先出,沒有結構,查詢慢,執行緒共享的,儲存數值,等待垃圾回收

方法區, 儲存static唯一變數, 被所有執行緒共享

3. java基礎

基本型別: byte short int double float long boolean char

快速排序:

單例模式(單例三個)

列舉實現單例模式:

StringBuffer 執行緒安全和 StringBuilder非執行緒安全

Builder 設計模式

介面卡模式(比如實體類裝換):

Composite組合模式: 樹形

Observer觀察者模式: 區別對待觀察者, java預設的觀察者介面

裝飾器模式(裝飾器和被裝飾物件介面相同):

橋接模式:

簡訊郵件 傳送 緊急訊息, 普通訊息, 進行橋接

責任鏈模式:

Shiro的許可權框架

Iterator 模式:

自己寫的分段List,Set迭代器

Command 命令模式:

策略模式:

工廠方法:匯出不同格式的檔案

一個產品的時候, 返回不同的工廠

抽象工廠:不同格式的檔案,前 綴也不同

多個產品,返回不同的工廠

代理模式:

java 動態代理

狀態模式:

Spring 狀態框架

JVM 垃圾回收演算法:

計數器法, 標記清除, 標記整理, copy 演算法 (物件區和空閒區互相換),

java中可作為GC Root的物件有

1.虛擬機器棧中引用的物件(本地變量表)

2.方法區中靜態屬性引用的物件

3. 方法區中常量引用的物件

4.本地方法棧中引用的物件(Native物件)

分代演算法:

年輕代,年老代, 永久代

類載入機制:

AOP:

依賴注入:

排序演算法(jdk sort):

ln A B B是連結, A是實質檔案

java記憶體模型:(除錯工具)

tomcat調優:

jvm引數, 連線數, 執行緒數,緩衝池,資料庫連線池

自旋鎖:

@transanal

資料結構:

堆排序:

AVL:

紅黑樹:

B-樹:

樂觀鎖和悲觀鎖(CAS):

版本號和時間戳實現樂觀鎖

Volatile 原理:

JVM 卡頓調優:

-Xincgc

開啟增量gc(預設為關閉);這有助於減少長時間GC時應用程式出現的停頓;但由於可能和應用程式併發執行,所以會降低CPU對應用的處理能力

java 8:

分散式鎖: 略

ConcurrentHashMap:略

TreeMap:

java發現死鎖:

jstack -l pid 列舉出執行緒

執行緒狀態:

java.lang.Thread.State

執行緒池:

kafka 和 redis

http:三次握手

負載均衡, 斷路器, 服務註冊原理

Spring 迴圈依賴:

Spring cache

原文連結