我在面試中經常會問的兩個問題
面試久了之後,發現自己每次都會問下面這兩個問題。
執行緒池相關
問:你講講執行緒池的實現原理。
聽到這個問題,小部分同學會很坦白的說,我平時用過執行緒池,但是沒有了解過內部是怎麼實現的。
偶爾也會有同學反懟,我會用不就行了麼,為啥要知道咋實現!碰到這樣的同學,我只能說,嗯,你說的對。
我希望聽到的答案是,把每個引數的作用都說一遍,最好可以在紙上更加直觀的描述出來,各個引數在設定的時候需要注意什麼問題。
有時候,有些同學語言組織的不太好,描述的時候有點含糊不清,為了能夠確定他了解的是否正確,我會直接提供一組執行緒池引數
問:比如現在設定coreSize=5,maxSize=10,blockQueueSize=10,依次提交6個比較耗時的任務,執行緒池是如何執行的?
如果這樣還描述不清楚,那真的要pass了。
繼續問:你在什麼場景下使用過執行緒池,主要解決什麼問題?
面試者:巴拉巴拉說一堆&%^($#@!
繼續問:那如果我給你一個場景,支付場景,A介面需要呼叫微信支付介面完成支付任務,呼叫微信支付介面被放在一個執行緒池中執行,假如微信介面的超時時間為2s,A介面的qps大概是100,如何設定執行緒池引數比較合理?
繼續問:如果涉及到有突發流量的場景,又該如何設定?
計數器相關
問:如果讓你設計一個計數器,你怎麼實現?
當然了,這道題其實並不難,有點經驗的同學,都應該知道使用原子類Atomic實現,但也是碰到不少同學說直接用 i++,這真的太缺乏經驗了,但我還是想引導一下這樣回答的同學,
問:你知道執行緒對變數的操作對其它執行緒是不可見的嗎?
答:哦,對對對,需要加個volitile修飾。
回答的還很自信。
我:哦,醬紫啊。我一下不知道咋引導了。
對於大部分能夠回答出來的同學,當然會繼續問
問:那Atomic原子操作是如何實現的?
問:這種實現原理,在併發量很大的情況是,效能如何?
問:你有去做過壓測嗎?
問:既然效能不好,那有什麼可替代方案?
到這裡,大部分同學會GG。
一份整理的蠻不錯的Java核心知識點。覆蓋了JVM、鎖、併發、Java反射、Spring原理、微服務、Zookeeper、資料庫、資料結構等大量知識點。
獲取方式

關注公眾號,並回復 666,獲取通關口令。