程序員面試,爲何不要大談高併發?

做爲一個看過幾千份簡歷,面試過幾百人的面試官,經常會看到簡歷中有以下文字:程序員

  • 對業務邏輯解耦,高併發等有比較深刻的研究和豐富的開發實戰經驗面試

  • 對解決高併發問題有深刻理解docker

  • 熟悉大併發技術,如:反向代理、負載均衡、Keepalived數據庫

 

而當我在面試中,問及對方的職業規劃的時候,也有一大半人會回答服務器

  • 但願未來能夠處理高併發業務架構

  • 但願學習高併發相關技術併發

  • 但願開發數千萬/數億級別併發的應用負載均衡

 

可是當我問及如下問題的時候,絕大多數人都會麻爪:運維

  • 負載均衡有幾種分配方式?(大概不到1/10的簡歷說起高併發的人能答出來)高併發

  • 有沒有用任何方式(好比虛擬機)模擬過各類集羣(API服務器,數據庫,CDN等等)?

  • 有沒有用任何方式測試過採用了高併發應對策略後對項目的改進和提高?數據有什麼變化?

  • 若是業務規模再次擴大,下一階段應該用什麼技術和策略?


問題就在這裏了,

  • 爲何我會把簡歷裏說起「高併發」的絕大多數人KO掉,或者在面試中,對職業規劃只有「高併發」的人發拒信?

  • 很愛「高併發」的面試者,應當如何在簡歷中體現本身的能力和期待?

 

首先,絕大多數人沒有考慮過如何把技術應用於高併發場景

我常常會問沉迷於高併發的面試者:當你有了一個數千萬乃至數億級別的高併發解決方案的時候,你準備用在哪裏?讓誰買單?

顯而易見,買單的是企業,企業爲用戶服務,可是這樣規模的企業自己已經不是不少,並且它們使用的方案或者是已有的成熟方案,或者是企業內部長期迭代得來,不太會有人冒業務中斷的風險去應用一套外部的沒來頭的方案。

另外,解決高併發的方案不是單純的三五項技術,而是許多套完整的技術棧,把它運行起來須要一個完整的研發、運維團隊來進行支持,沒有幾個單獨的我的能夠百分百解決,那麼這我的的技能短板會馬上致使方案不可靠。

所以,脫離使用場景的技術價值是要大打折扣的。

 

第二,高併發背後的高成本是大多數人沒有考慮過的

硬件成本的問題:通常在企業中作開發,都至少要有開發環境,集成測試環境,生產環境,有的時候還須要有鏡像的災備環境。若是用了服務器集羣,那麼高併發方案的服務器的數量就要比堆硬件硬抗的方案翻好幾倍。並且運維的成本也會增長不少。

人力因素也很重要,人肉運維天然是成本貴,能寫程序搞自動運維的工程師顯然更貴。

成本須要企業來買單,程序員學了用了新技術開心了,企業成本提升作掛了顯然不是企業想看到的。

所以,如何用各類方式下降你的方案的成本【好比在虛擬環境作各類測試】而且說服企業應用,是面試者要思考的問題。

 

第三,高併發只是業務規模巨大致使的衆多嚴重問題中的一個,還不必定是最重要的那個

高併發只是表象,業務規模用戶規模巨大會致使一系列嚴峻問題,不只僅是高併發。

舉例來講,團購秒殺拍賣之類的場景是常見的高併發應用場景。總而言之都是賣貨,可是在賣貨的大前提下,商品庫存數字的變化(要不要實時,要不要各端同步),訂單狀態變化對業務流程的影響(下單減庫存仍是付款減庫存仍是發貨減庫存,預售和返現等營銷行爲致使的錢款卡券變化)都有可能致使整個方案變化。【想一想12306,處理商品庫存數據的實時性要比處理高併發請求複雜的多】

所以,結合具體業務場景,展現出面試者在整個業務場景中,包含但不限於高併發技術而體現出來的價值,才能爲面試加分。

 

第四,你說你擅長高併發,你得要證實給我看

從面試的角度來講,我除了預設的面試題以外,還會很細緻的詢問對方的簡歷細節。

知乎用戶:爲何有面試官喜歡讓面試者用紙筆寫代碼?

面試者在簡歷上寫了擅長高併發,那我就要三段論問一下:是什麼問題,怎麼解決的,效果如何?

即便去掉僞造簡歷和過分美化簡歷的人,仍然有大多數人沒法回答第三個「效果如何」的問題。

大量的聲稱研究過負載均衡的面試者都是用兩三臺電腦搭一個環境測試可以實現平均分配的負載均衡策略,可是若是問「若是我想測試三五臺或七八臺服務器的場景應該如何實現?」就又答不出來了。

(答案:如今有docker,古時候有各類虛擬機【vmware,virtual box】和雲端部署【gae,sae之類】,實在不行還能夠用各類雲服務器的按量付費按小時啓動服務就好)

所以,用豐富的細節和深入理解的心得體會來證實面試者的技能水平,是面試要解決的一個最核心的問題

 

總結:

  1. 掌握高併發技術不是壞事,技術好不只僅體如今能處理高併發

  2. 有水平須要證實,證實須要實踐(企業沒有責任挖掘面試者的價值,面試者須要本身證實)

  3. 能解決實際業務問題的技能纔是企業須要的,企業裏沒有龍,面試者的屠龍之技就沒有賣點

  4. 不要過分美化簡歷(個人建議:至少要可以抗住3-5個刨根究底的問題才能寫到簡歷上)

最後,以爲有收穫的同窗,能夠關注一下個人公衆號:【Java技術zhai】,不按期的技術乾貨分享,帶你從新定義架構的魅力!

相關文章
相關標籤/搜索