大廠Java面試題目總結
基礎篇
-
String為什麼要設計成Final
-
String StringBuffer StringBulider的區別
-
你能給我寫一個final物件嗎
-
重寫hashcode()方法
-
java 序列化
-
你能給我寫個單例模式嗎?你這個如果要是被反射或者序列化破壞單例該怎麼辦?
-
Java io流體系結構
-
HashMap的實現原理
-
HashMap產生衝突了會怎麼樣
-
HashMap在多執行緒下會出現什麼問題,為什麼會這樣
-
HashMap為什麼要採用紅黑樹,你能給我講講紅黑樹的特點嗎
-
ConcurrentHashMap的實現原理
-
ConcurrentHashMap JDK1.7和1.8有什麼區別
-
ConcurrenthashMap用到了哪些鎖
-
ArrayList和LinkedList的區別,分別在什麼場景下使用
-
ArrayList的擴容
-
Vector為什麼是執行緒安全的
-
TreeSet的底層實現
-
一些Collection的方法
-
Servlet,filter
-
interface裡面介面用什麼進行修飾
-
為什麼要先載入父類構造器,如果父類構造器沒有無參構造器會怎麼辦
-
idea 快捷鍵
-
git操作
-
maven生命週期,install和deploy的區別
併發篇
-
volatile 底層實現
-
CAS樂觀鎖的原理
-
ASQ 的原理
-
CountDownLanch 和 CyclicBarrier 的區別和用法
-
執行緒池的拒絕策略
-
FixedThreadPool SingleThreadPool CacheThreadPool 一些細節,比如說用了什麼佇列,空閒執行緒的等待時間等等。
-
sleep和wait的區別
-
notify和notifyAll的區別
-
如何實現執行緒按順序執行
-
為什麼wait, notify, notifyAll方法定義在Object裡
-
你是怎樣理解執行緒安全的
-
ThreadLocal用過嗎,給我介紹下他的使用場景
-
Lock和Sychronizated的區別
-
Callable和Future瞭解過嗎?
-
為什麼說ConcurrentHashMap是弱一致性的?以及為何多個執行緒併發修改ConcurrentHashMap時不會報ConcurrentModificationException?
-
執行緒執行的狀態以及如何他們之間是怎麼切換的
底層篇
-
JVM 記憶體模型
-
JVM 垃圾回收演算法
-
JVM 垃圾回收器
-
JVM major gc 和 full gc 的觸發時機
-
new一個物件會放在哪裡
-
JVM 調整的一些引數
-
怎麼判定一個物件的記憶體可以被回收了
-
哪些物件可以作為CGRoots
-
強引用,軟引用,弱引用,虛引用
-
可達性分析演算法
類載入
-
類載入器與類的”相同“判斷
-
類載入器種類
-
類載入過程
-
自定義類載入器
-
反射用過麼,私有成員變數和私有方法能被反射出來嗎
-
怎樣獲取一個類的私有方法和私有變數
Spring篇
-
BeanFactory和ApplicationContext的區別
-
Spring 和SpringBoot的區別
-
SpringMvc的請求過程
-
SpringMvc用到的設計模式
-
你用過的一些Spring註解
-
如何讓Spring bean按順序初始化
資料庫
計算機網路
作業系統
-
程序通訊方式
-
執行緒程序區別
-
程序通訊方式;
-
死鎖(程式碼實現);
-
常用linux命令;
-
作業排程方式;
-
LRU演算法實現