歡迎關注我的公衆號:石杉的架構筆記(ID:shishan100)
面試
週一至週五早8點半!精品技術文章準時送上!算法
最近收到很多讀者反饋,說本身在應聘一些中大型互聯網公司的Java工程師崗位時遇到了很多困惑。數據庫
這些同窗說本身其實也作了精心準備,網上搜集了很多Java面試題,然而實際去互聯網公司面試才發現,人家問的,和你準備的東西,對不上號,這就很尷尬了。。。緩存
所以,從這篇文章開始,筆者準備寫一個長期連載的系列:《Java進階面試系列》。主要跟你們聊聊中大型互聯網公司Java面試中的一些熱門、高頻的技術問題。性能優化
但願這個系列的文章,能在年後金三銀四的跳槽季中,助各位小夥伴一臂之力。網絡
好,閒話很少說,咱們進入正題!架構
本系列文章,咱們將會從消息中間件、分佈式緩存、分佈式搜索、分佈式架構、海量數據、NoSQL、高併發、高可用、高性能、數據庫、JVM虛擬機等各個方面來聊一下面試中的高頻技術問題。併發
如今一些中大型互聯網公司的面試官,不少都是技術水平很是不錯的兄弟。在面試候選人的時候,通常都會採起連環炮的策略來深挖一個候選人的技術水平。框架
舉個例子,好比說看你簡歷上寫了熟悉消息中間件(MQ技術)。那麼可能咱們就會有一個相似下面這樣的連環炮式發問:分佈式
上面僅僅是MQ相關技術問題的一部分,實際上,一個比較好的面試官的問題,就是從技術面、技術點、項目實踐幾塊來抽絲剝繭的發問。
首先考察候選人總體技術面的完整性,各類技術或多或少都須要一些,由於工做中是須要具有必定的技術視野的,不能說光知道消息中間件,可是分佈式緩存卻一無所知,這就是典型的技術短板。
相似於之前高考的時候,你語文特別好,結果物理特別差,那也是不太合適的。
因此工程師首先要避免本身的技術短板,尤爲是三到五年經驗的同窗,已經完全度過了本身人生的職場生涯的初期小白入門菜鳥階段。
因此,務必在工做三到五年的時候,保證本身的技術絕對沒有任何短板,總體技術棧要或多或少都知道一些,不能出現盲區。
好比,我如今問你,大家公司有沒有什麼業務場景是能夠用NoSQL的?如今國內各個公司用NoSQL的技術都有哪些選型?具體NoSQL能夠解決什麼問題?
結果你一問三不知,這就是典型的技術短板,不說對每一個技術有多麼的精通,可是你至少或多或少都知道一些,並且大概明白每一個技術通常在什麼狀況下用,怎麼來用,解決的是什麼問題。
所以上面說的:消息中間件、分佈式緩存、海量數據、分佈式搜索、NoSQL、分佈式架構、高併發、高可用、高性能,這些技術,並非說真的要求工做幾年的同窗每一個技術都精通到源碼層面,而是說你工做幾年之後,應該有必定的技術廣度,開闊的技術視野。
各類技術你都得適當的瞭解一些,同時儘量有機會的話在本身負責的項目裏多實踐各類技術,多體會各類技術如何組成出一套架構來解決公司的技術難題的,儘可能多對各類技術都必定的實踐經驗。
如今通常不少互聯網大廠都會有基本功的考察,舉個例子,Java虛擬機的核心原理、內存模型、垃圾回收、線上FullGC卡頓性能優化、線上OOM內存溢出問題你處理;Java併發中的volatile、鎖優化、AQS源碼;Netty背後的IO、網絡相關的知識。
這些其實本質也能夠歸類到技術面的考察裏,可是實際上這些技術都是開發任何系統均可能須要用到的核心底層技術,JVM、併發、NIO、網絡通訊,在不少系統而言都是通用的。所以特地單獨拎出來,放在這裏,做爲一塊東西來說。
其實這種底層技術也是線上高負載大型系統的架構設計和開發,必需要具有的,由於底層技術不紮實,不少中間件技術或者其餘高階的技術,都是沒法深刻理解其中原理和底層的。並且不少時候,若是要解決線上系統的生產故障,都須要這些技術。
所以這些底層技術,看似不在那些高大上的技術範圍裏,沒有炫酷的技術名詞,可是JVM、Java併發、NIO、網絡通訊,這些東西都是一個工程師必須具有底層技術素養。
其次,咱們必定會深刻考察候選人平時工做中熟悉的以及經常使用的一些技術。
舉個例子,好比你項目裏用了Redis或者是Elasticsearch。只要你用過了,並且是你某個項目裏的核心技術,那麼必定會用連環炮式的發問,深刻各類細節、底層、生產環境可能遇到的技術挑戰。
總之,就是要用壓力測試出來你在這塊技術水平掌握的到底有多深,實踐經驗有多強。
一個好的面試官,本身自己技術功底紮實,是能夠對一個技術問出一連串的連環炮的,就好比上面的那個消息中間件的連環炮發問。
並且只要面試官在一個技術上的深度超過候選人,那麼經過連續的不斷加深的發問,是能夠考察出來一個候選人在本身最熟悉的技術領域的技術深度的。
好比說你對一個技術的掌握是否達到了源碼級別?是否對某個框架,或者是中間件深刻的理解底層的源碼實現,從源碼級別說清楚他的架構原理?是否對這個技術有過線上的高可用部署,承載太高併發流量的訪問?是否對這個技術在線上生產環境解決過各類各樣的複雜技術挑戰?是否基於這個技術落地到你的業務系統中,設計出各類複雜的系統架構?
經過這種連環炮,基本上能夠很是好的考察出某個候選人對技術深度的掌握。
技術深度的考察是中大型互聯網公司面試官對一個高級/資深以上的候選人必須考察的,由於若是一我的工做5年以上,來應聘高級職位的話,那咱們絕對是要求他對至少一個技術領域有着較爲深刻的研究的,好比提及碼你得深刻閱讀過某個熱門技術的核心源碼,有必定的技術功底,能夠解決一些複雜的線上故障。
由於技術廣度決定了你能夠利用各類技術來作項目,可是技術深度決定了你的技術功底,你將來學新東西有多快,線上系統出了故障你可否快速定位和解決,你可否基於對技術的深入理解爲公司的項目設計和開發出複雜並且優秀的架構出來。
上面就是《互聯網公司的面試官是如何360°無死角考察候選人的?(上篇)》,主要是用一個面試連環炮帶出來了平時中大型互聯網公司面試官是如何發問的。而後從技術廣度的考察、底層技術的考察、技術深度的考察幾個角度說了一下,咱們通常是如何來考察候選人的技術。
《互聯網公司的面試官是如何360°無死角考察候選人的?(下篇)》,將會從項目經驗的考察、系統設計的考察、候選人與崗位的匹配、多輪面試官的協做考察,來繼續告訴你們互聯網公司通常是如何科學的、全方位、無死角的來考察候選人的。
知己知彼、百戰不殆,面試也是如此。因此咱們的《Java進階面試系列》,以這兩篇文章做爲開端。
你只有真正瞭解了面試官的選拔標準,考察範圍,才能更好的進行鍼對性的準備,成爲真正的「offer收割機」。
因爲公衆號再也不開通文章留言功能,若是對文章有什麼問題或者對公衆號有什麼建議,歡迎在公衆號聊天框留言交流!
END
若有收穫,請幫忙轉發,您的鼓勵是做者最大的動力,謝謝!
一大波微服務、分佈式、高併發、高可用的原創系列文章正在路上
歡迎掃描下方二維碼,持續關注:
石杉的架構筆記(id:shishan100)
十餘年BAT架構經驗傾囊相授
推薦閱讀:二、【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問?
三、【性能優化之道】每秒上萬併發下的Spring Cloud參數優化實戰
六、大規模集羣下Hadoop NameNode如何承載每秒上千次的高併發訪問
七、【性能優化的祕密】Hadoop如何將TB級大文件的上傳性能優化上百倍
八、拜託,面試請不要再問我TCC分佈式事務的實現原理坑爹呀!
九、【坑爹呀!】最終一致性分佈式事務如何保障實際生產中99.99%高可用?
十一、【眼前一亮!】看Hadoop底層算法如何優雅的將大規模集羣性能提高10倍以上?
1六、億級流量系統架構之如何設計全鏈路99.99%高可用架構
1八、大白話聊聊Java併發面試問題之volatile究竟是什麼?
1九、大白話聊聊Java併發面試問題之Java 8如何優化CAS性能?
20、大白話聊聊Java併發面試問題之談談你對AQS的理解?