有贊 校招 面經
阿新 • • 發佈:2018-12-11
-
校招已經過去一年,在此掛出去年有贊校招面經,一輪卒 淚奔
-
sychronized 加兩個sychronize可以嗎? 和可重入鎖有什麼區別?
- synchronized擁有強制原子性的內部鎖機制
- 在一個執行緒使用synchronized方法時呼叫該物件另一個synchronized方法,即一個執行緒得到一個物件鎖後再次請求該物件鎖,是永遠可以拿到鎖的
-
volatile
-
Java記憶體模型
-
如何實現一個雙向連結串列?
-
AQS
- 同步器 多執行緒併發執行,通過某種共享狀態來同步,只有當狀態滿足xxx條件時,才會觸發執行緒執行xxx
- AQS框架如何構建同步器
- 功能
- 獲取同步狀態 如果允許,則獲取鎖,如果不允許就阻塞執行緒,直到同步狀態允許獲取
- 釋放同步狀態 修改同步狀態,並且喚醒等待執行緒
- 需求
- 獨佔鎖和共享鎖兩種機制。
- 執行緒阻塞後,如果需要取消,需要支援中斷。
- 執行緒阻塞後,如果有超時要求,應該支援超時後中斷的機制
- 獨佔模式
- tryAcquire 本身不會阻塞執行緒,如果返回 true 成功就繼續,如果返回 false 那麼就阻塞執行緒並加入阻塞佇列
- 可中斷時獲取,取消,超時模式獲取
- 共享模式
- 可以認為同步狀態的維護、獲取、釋放動作是由子類實現的功能,而動作成功與否的後續行為時有AQS框架來實現。
- 功能
-
CAS
-
final 可以修飾類? 有什麼好處?
-
finalize() 方法會觸發GC嗎
-
三次握手,四次揮手
-
有在Linux開發的經歷?linux常用命令知道? 如何檢視節點,檢視cpu命令? grep知道嗎 不知道。。。。。
-
git和svn有哪些區別? 平時怎麼使用git fetch和poll命令
-
如何實現一個執行緒池?要注意哪些地方,執行緒超出最大容量如何處理?答了異常好像不滿意
- JDK1.5中提供了4種策略:
- AbortPolicy 直接丟擲異常
- CallerRunsPolicy 只用呼叫者所線上程來執行任務
- DiscardOldestPolicy 丟棄佇列中最近的一個任務,來執行當前任務
- DiscardPolicy 不處理不丟棄
- JDK1.5中提供了4種策略:
-
執行緒的幾種狀態
-
Spring boot有哪些好處? 閱讀過原始碼?
-
Spring在開發中用在哪裡?Aop是如何實現的?
-
applicationContext BeanFactory瞭解嗎?
-
可重入鎖 ReentrantLock瞭解多少?
-
程序和執行緒的區別?
-
程序之間的通訊有哪些?
-
死鎖發生的條件?
-
重排序瞭解嗎?
-
hashMap的get()實現,1.8比1.7有哪些改進?
- 首先計算 key 的 hashCode,找到陣列中對應位置的某一元素,然後通過 key 的 equals 方法在對應位置的連結串列中找到需要的元素
-
equals()
-
ConcurrentHashMap? 和hashtable區別??
-
平時有關注技術論壇? 怎麼學習? 寫部落格? github上有什麼東西?
-
歸併排序瞭解? 時間複雜度? 穩定性標準是什麼?
-
java深拷貝 淺拷貝
- 淺拷貝:
- 淺複製僅僅複製所考慮的物件,而不復制它所引用的物件
- Cloneable介面
- 深拷貝:
- 深複製把要複製的物件所引用的物件都複製了一遍
- 物件序列化 物件寫入到一個位元組流中,再從位元組流中將其讀出來
- 淺拷貝:
-
總結
- 對待問題的細節還不夠深入
- 建議看一些jdk原始碼和spring原始碼,並思考為什麼要這樣做,觸類旁通