看似簡單的併發面試題,卻暴露出了你技術的種種漏洞
相信不用我說,大家也都知道掌握併發程式設計對於一個 Java 程式設計師的重要性。但相對於其他 Java 基礎知識點來說,併發程式設計更加抽象,涉及到的知識點很多很零散,實際使用也更加麻煩。以至於很多人學完之後,根本不知道自己學了什麼。
我在面試的時候,經常會問這些問題:
執行緒池相關
問:你講講執行緒池的實現原理。
聽到這個問題,小部分同學會很坦白的說,我平時用過執行緒池,但是沒有了解過內部是怎麼實現的。偶爾也會有同學反懟,我會用不就行了麼,為啥要知道咋實現!
碰到這樣的同學,我只能說,嗯,你說的對。
我希望聽到的答案是,把每個引數的作用都說一遍,最好可以在紙上更加直觀的描述出來,各個引數在設定的時候需要注意什麼問題。
有時候,有些同學語言組織的不太好,描述的時候有點含糊不清,為了能夠確定他了解的是否正確,我會直接提供一組執行緒池引數
問:現在設定 coreSize=5,maxSize=10,blockQueueSize=10,依次提交 6 個比較耗時的任務,執行緒池是如何執行的?
如果這樣還描述不清楚,那真的要 pass 了。
繼續問:你在什麼場景下使用過執行緒池,主要解決什麼問題?
面試者:巴拉巴拉說一堆 &%^($#@!
繼續問:那如果我給你一個場景,支付場景,A介面需要呼叫微信支付介面完成支付任務,呼叫微信支付介面被放在一個執行緒池中執行,假如微信介面的超時時間為2s,A 介面的 qps 大概是 100,如何設定執行緒池引數比較合理?
繼續問:如果涉及到有突發流量的場景,又該如何設定?
併發程式設計常見面試問題
舉幾個簡單的問題,大家自測一下,看看如果自己面試中遇到這些問題,能不能回答上來。比如
1. 悲觀鎖和樂觀鎖有什麼區別
2. 一不小心就死鎖了,怎麼辦?
3. 多執行緒同步和互斥有哪幾種實現方法?
4. 執行緒池解決什麼問題、執行緒池的原理、執行緒池使用時的注意事項
5. 如何避免重複建立執行緒?
6. 多執行緒同步和互斥有哪幾種實現方法?
7. ReentranLock 原始碼,設計原理,整體過程
8. 如何批量執行非同步任務?
學習好高併發相關知識,不光是為了能在面試中不被面試官難到,更是為了能滿足工作的需求。我們常常被要求開發一個高併發的系統,而掌握併發程式設計正是其中的關鍵。
併發程式設計全景圖
那我們應該怎麼學習併發程式設計?是不是一上來就去看 Java SDK 的併發包?然後死記硬揹他們的使用場景?有沒有一張“全景圖”?
說實話,時至今日也還沒有一張普遍認可的“併發程式設計”全景圖,但下面這張圖,看到的時候卻是讓我眼前一亮,是由資深架構師王寶令製成,從三個核心問題:分工、互斥、協作,全面且系統地涵蓋了Java 併發程式設計的技術難點。
另外,王寶令在極客時間開設了《Java 併發程式設計實戰》專欄,絕對值得一看。
正如上面這張思維導圖所示,寶令在專欄中,會站在理論、模型的角度講解 Java 併發,讓你融匯貫通,形成全面系統的併發程式設計知識體系。最終可以得心應手地解決各種併發難題,同時將這些知識用於其他程式語言。
除了涉及 12 個Java 併發工具類以及 9 種最常見的併發設計模式,相信專欄中的四大經典併發程式設計實戰案例解析可以讓你即學即用,讓你從案例中根本性地瞭解如何處理併發問題。
現在這個專欄優惠最後 1 天了,優惠價 ¥68(原價 ¥99),就基本兩頓外賣的錢。
掃上圖二維碼訂閱,一共 45 講,落地且全面
一篇一塊多錢,不能更划算
這個專欄,上線不到10天,已經有近 7000人訂閱了,截了點評價給你們作為參考。
這個專欄裡有部分腦圖,分享給大家,建議收藏:
大廠面試肯定用的上 :)
相關文章
- 看似簡單的TextViewTextView
- 無人駕駛技術看似一片藍海:背後卻將面臨各種阻礙
- SSD的兩種技術簡介
- 「架構技術專題」9種高效能高可用高併發的技術架構(5)架構
- Excel合併單元格的兩種簡單方法Excel
- 九種高效能可用高併發的技術架構架構
- 簡單的面試總結---內含面試題目 | 掘金技術徵文面試題
- 看似簡單的hashCode和equals面試題,竟然有這麼多坑!面試題
- 【併發技術01】傳統執行緒技術中建立執行緒的兩種方式執行緒
- 你應該掌握的七種迴歸技術
- 專訪劉岐:直播技術看似門檻低,裡頭的門道卻不少
- 測試技術常見的十一種問題
- iOS面試問答集錦,從容應對各種面試技術難題!iOS面試
- 架構面試題—大併發量的訂單的解析架構面試題
- 技術分享 | 一種針對PHP物件注入漏洞的新型利用方法PHP物件
- JavaEE的13種核心技術Java
- 最近面試遇到的種種應聘者,你是這樣的嗎?面試
- [技術討論]多人併發開發中的問題
- 五種前端開發必備的除錯技術前端除錯
- 十二種特徵工程相關技術簡介特徵工程
- Web前端十種常用的技術Web前端
- 實現單例模式的 9 種方法,你知道幾種?單例模式
- SQLite 併發的四種處理方式SQLite
- Google 面試題 | 種花Go面試題
- 面試題裡的那些各種手寫面試題
- 面試題:水平垂直居中的17種方法面試題
- hadoop 執行期間偶發的各種問題積累(簡單問題不展示)Hadoop
- 併發技術5:死鎖問題
- 「分散式技術專題」併發系列一:基於加鎖的併發控制分散式
- 「分散式技術專題」併發系列二:基於時間的併發控制分散式
- 簡單面試題面試題
- [ kvm ] 四種簡單的網路模型模型
- 10種簡單的Java效能優化Java優化
- 這5種必知的大資料處理框架技術,你的專案應該使用哪種?大資料框架
- 八種改變未來的技術
- 一種蜜網技術的介紹
- 50種常見的影像分割技術
- Python單例的一種簡單寫法Python單例