部分面試題總結1

2021-09-01 03:01:25 字數 789 閱讀 1821

一、執行緒池的底層怎麼實現的?

實現類為reentrantlock類,

有幾個重要的方法:

lock():加鎖,如果已經被獲取則等待

trylock():嘗試獲取鎖,獲取則返回true,否則false

trylock(long time,keepalivetime unit):在規定時間內獲取鎖

unlock();解鎖

lockinterruptly():如果執行緒正在等待釋放鎖,可以中斷這一過程

還有實現類reentrantreadwrite類

readlock():

writelock():

三、synchronized底層實現

jvm中物件的存放有三塊區域:物件頭、例項資料、對齊填充

物件頭:hashcode、分代年齡、鎖標記位

1、**塊的底層實現

對**塊新增synchronized關鍵字後,在底層jvm虛擬機器進行編譯時會在該**塊前後新增monitorenter和monitorexit

在執行monitorenter時,系統會獲取物件的物件頭中的monitor,獲取後將計數器記為1,表示加鎖,執行完到monitorexit減1,表示釋放鎖

如果在獲取monitorenter時失敗,那就要等待鎖被另乙個執行緒釋放。

2、方法的底層實現

對方法新增synchronized關鍵字後,在底層jvm虛擬機器中不是之前的monitor,而是acc_synchronized標識,jvm通過該標識辨別乙個方法是否為同步方法

部分面試題

1.請程式設計遍歷頁面上所有textbox控制項並給它賦值為string.empty?答 foreach system.windows.forms.control control in this.controls 2.請程式設計實現乙個氣泡排序演算法?答 int array new int int ...

部分面試題

1.廣播變數和driver 中定義的普通變數的區別 2.資料傾斜 優化的方式,怎樣定位問題,有什麼樣的解決方案,有沒有調參的方式能夠解決的 3.模型 1 怎樣評判彙總層的資料模型的好壞 2 怎樣應對業務變化 3 分層的原則 4.實時流join怎麼做的,採用實時流相互等待借助外部快取join,如果資料...

部分面試題

get與post 通訊的區別 get 請求能快取,post 不能 post 相對 get 安全一點點,因為get 請求都包含在 url 裡,且會被瀏覽器儲存歷史紀錄,post 不會,但是在抓包的情況下都是一樣的。post 可以通過 request body來傳輸比 get 更多的資料,get 沒有這...