一個工作了3年的粉絲,去一個網際網路公司面試,結果被面試官懟了。
面試官說:”這麼簡單的問題你都不知道? 沒法聊了,回去等通知吧“。
這個問題是: ”什麼是可重入鎖,以及它的作用是什麼?“
對於這個問題,來看看普通人和高手的回答吧
普通人:
嗯。。。。。。。。。。。。。。。。。。
高手:
好的。
可重入是多執行緒併發程式設計裡面一個比較重要的概念,
簡單來說,就是在執行的某個函式或者程式碼,因為搶佔資源或者中斷等原因導致函式或者程式碼的執行中斷,
等待中斷程式執行結束後,重新進入到這個函式或者程式碼中執行,並且執行結果不會受到影響,那麼這個函式或者程式碼就是可重入的。
而可重入鎖,簡單來說就是一個執行緒如果搶佔到了互斥鎖資源,在鎖釋放之前再去競爭同一把鎖的時候,不需要等待,只需要記錄重入次數。
在多執行緒併發程式設計裡面,絕大部分鎖都是可重入的,比如Synchronized、ReentrantLock等,但是也有不支援重入的鎖,比如JDK8裡面提供的讀寫鎖StampedLock。
鎖的可重入性,主要解決的問題是避免執行緒死鎖的問題。
因為一個已經獲得同步鎖X的執行緒,在釋放鎖X之前再去競爭鎖X的時候,相當於會出現自己要等待自己釋放鎖,這很顯然是無法成立的。
以上就是我對這個問題的理解。
總結
關於這個問題,其實是考察求職者的基礎知識。
網際網路大廠對基礎的考察會特別深,有必要的話還是需要在工作之外去多花一點時間研究。
並且,對於3年工作經驗,考察這類問題也不算過分。
如果有任何面試問題、職業發展問題、學習問題,都可以私信我。
版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!