本文咱們經過一篇真實的一線面經,帶你們去體驗一下 BAT 等互聯網公司的面試現場氛圍!面試
面試者是筆者之前的下屬,多年的好朋友。這是他去年早些時候出去面試,拿到 BAT 等多家一線互聯網公司技術專家 Offer 的面試經歷。算法
先介紹一下這位朋友的我的經歷:spring
所以,在仔細思考一番以後,決定出來看看機會,可否在帶團隊的規模、技術以及薪資上實現一個突破。sql
一面是一個獵頭給朋友推的一個職位,BAT 中某一個大廠的某個團隊,具體就不說是哪一個部門了。數據庫
一面就直接過去當面聊了一次,大概從下午 2 點聊到了下午 4 點多,時間很長,炮火至關猛烈。設計模式
一面面試官也是專家職級,上來就是先聊項目,針對項目中的各類細節仔細問,就項目展開,並且極其注重細節。緩存
下面的內容,是根據朋友面試以後的回憶,整理出的部分問題:性能優化
面試一樣是經過互聯網公司最喜歡的連環炮形式發問。好比在面試過程當中,聊到了緩存,連環炮以下。接着,面試官繼續深扣了不少細節。網絡
面試官:數據結構
朋友:紙筆翻飛,大腦高度運轉,一個接一個的回答。。。
如上所述,全部問題,所有結合項目,落地到生產中,同時注重聊技術的不少細節,包括技術的一些原理。
像緩存這樣的連環炮提問法,面試官還用來問了 MQ、MySQL 分庫分表、高可用、JVM、多線程併發,等各類問題。
簡單總結:
整體來講,一面還算順利,畢竟都是結合項目來問的,各類細節平時朋友進行架構設計時,都會仔細考慮過。
並且朋友也作過線上的高併發系統,踩過不少坑,因此這些問題基本都回答的不錯。
可是這裏給你們提醒一句,通常某個同窗出去面試,回來以後其餘人問他面試經驗,通常都是問:都有啥面試題?面試官是怎麼問的?
說實話,你們看了上面那些問題,可能會以爲說,哦,其實我也能夠答出來,沒什麼特別的。
但其實並非這樣,若是隻是拿高級崗位的 Offer,你的技術會佔很大比重。
可是若是要拿專家崗位的 Offer,你到底有沒有線上真實的高負載的系統架構經驗,很是重要。
一樣的問題,普通人會回答的很普通,可是經歷過真實幾十億流量請求的人必定會說出大量經驗總結、教訓以及踩坑。
並且對整套複雜的大型系統究竟是如何抗住高併發的,會了然於胸,熟悉全部的細節。
因此針對一面,通常就是結合項目,深挖細扣,看你到底有多少水平,作過多複雜的系統。
這塊說實話,作過就是作過,沒作過就是沒作過,是不可能做假的。不少同窗可能本身平時也看過不少書和博客,可是看書和博客只是基礎,若是沒有真實的線上生產環境的歷練,是確定不夠的。畢竟實踐出真知!
一面就順利經過了,緊接着安排了第二輪面試。二面面試官應該是這個團隊的 Leader,P8 級別的,若是進去,應該就是朋友將來的頂頭上司。
據朋友講,二面面試官態度很是好,很和善,看來一面面試官反饋以後,這個 Team 對朋友仍是比較重視的。
技術深度
二面內容就從廣度變成深度了,面試官技術實力很深厚,應該是有十幾年經驗。對相關技術深挖了不少東西。
一樣,二面也聊到了緩存相關的問題。問了朋友具體瞭解過哪些緩存技術,Redis、Memcached,還有阿里開源的 Tair,哪一個瞭解過內核原理?
朋友以前看過一些 Redis 的內核,就聊了聊 Redis 內核的一些數據結構和實現原理。包括集羣、持久化在內核層面的一些東西。
此外在 MQ 這塊,朋友正好對 Kafka 作過深刻的研究,就聊了聊 Kafka 的源碼。
好比 Kafka Controller 在故障轉移這塊的源碼,日誌存儲、網絡通訊的一些細節。
如何保證磁盤讀寫的高性能,零拷貝那塊的底層實現,leader 和 follower 之間的數據是如何同步的,都是從源碼層面來聊。
此外,還聊了 Dubbo 的源碼以及 MySQL 內核層面的東西。
系統設計、工程素養、帶團隊
同時二面很是重視考察系統設計能力、工程素養、帶團隊的能力。好比面試官就這個部門負責的一塊業務,出了一個相關的系統設計題目。
題目細節記不清楚了,大致內容是給出具體的用戶量、業務場景、併發量、數據量,而後讓你總體負責這個系統的架構設計。
朋友須要闡述本身的總體設計思路,從哪些點來考慮,存在着哪些技術挑戰,而且現場畫出來具體的架構設計圖。
工程素養這塊,讓朋友聊了聊平時如何作的技術設計、技術評審、編碼規範、測試、上線、回滾、灰度、壓測、監控等等。
帶團隊,讓朋友說一下,如何招人、面試標準、如何搭建團隊的人才梯度,等等。
架構演進
此外,還會問一下,整個系統架構是如何一步一步進行演進的。從 0 到 1 的時候是什麼架構?從 1 到 10 的時候是什麼架構?從 10 到 100 的時候是什麼架構?這塊就是看看你的總體架構能力,以及技術規劃能力。
說到這裏,筆者提一句,若是出去面試,尤爲是去 BAT 等大型互聯網公司面試,必須精心準備。
包括你的項目的每一個細節,你解決過的各類線上問題和坑,你簡歷裏的技術是否達到必定的深度,你平時其餘的工程、設計能力,這些都必定要精心準備一下。
絕對不要裸面!絕對不要裸面!絕對不要裸面!重要的事情說三遍!裸面必敗,並且若是一問三不知,那麼給人的印象就是不好的。
若是要衝着心儀的大公司去,最起碼精心準備 1 個月以上,你們務必記住這一點,這也是朋友此次的一個重要心得,準備充分了,纔能有備無患。
二面以後,又等了大概一兩週。。。由於越往上面,領導級別越高,平時越忙,有時人家可能出差開會去了,不過等了一兩週,那邊總算約上了三面。
三面是總監級別的,不太肯定是走的 M 線仍是 P 線。若是是 P 線,那麼必定是 P9,可是觀察面試風格應該是 M 線的總監。
這一面,聊技術其實並很少,更多的是跟朋友聊過往的各類公司的經歷和項目經驗,具體負責過哪些比較有挑戰的大型的系統。
另外,考察了各類軟素質。好比說責任心、抗壓能力、自我驅動,讓朋友舉例說明本身過去的一些事情,來證實軟素質。
同時還會聊聊職業價值觀,是否願意加班,等等吧。最後也聊了聊朋友的職場指望,包括這個團隊是幹什麼的,將來的發展方向之類的。
朋友以爲最重要的仍是前面兩面,其實這一面,只要人品端正,平時幹活兒認真負責,通常的都沒什麼太大的問題。
接着又過了一兩個禮拜,由於當時二面面試官,也就是那個將來可能成爲朋友 Leader 的人,對朋友仍是比較看重的,私下還短信聯繫了一段時間,就怕朋友跑去別的公司了。
他告訴朋友說是由於 HR 那邊太忙了,因此終面還未安排上。關於 HR 面,朋友印象真是至關之深入,爲何呢?
由於 HR 是直接電話聊的,沒過去了,過去實在太折騰,並且二面面試官也是去打了招呼。
HR 當時竟然是晚上 11 點打來的電話,人家剛剛加班開會結束,就打來了電話,真是不得不佩服其敬業精神!
並且這位 HR 是至關專業的,若是是普通的 HR 其實隨便聊聊就好了,可是這邊的 HR 問了不少問題,大概聊了 1 個小時左右。
主要是跟朋友聊了一些價值觀的東西,好比以前以爲作過最難的事情是啥,怎麼克服的,當時啥心態。
還有就是爲啥要離職,沒有發展空間?那當時沒考慮過公司內部 transfer(轉崗)嗎?爲啥很差 transfer?你的績效平時怎麼樣?你以爲你跟同事相處的怎麼樣?
終面內容,總結起來,其實仍是一句話,你人品正就行了,通常都問題不大,老老實實的踏實回答。
後來 HR 面了事後,那邊的薪資確實給到位了,達到了朋友的指望薪資。可是那邊給的規劃是將來能夠帶的團隊人數也就是 10 人之內,並且不是配發集團股票,是配發的正在快速發展的這個團隊的期權。
因此朋友當時糾結了一下,但仍是先答應了,因而 Offer 就發了過來。
原本朋友想的是,若是沒有別的更好的機會,那麼這個機會也能夠考慮,畢竟薪資上仍是能夠的。
可是當時包括 TMD(頭條、美團、滴滴)這邊,也都有人內推朋友過去試試,因此當時也面了其餘的幾個一線互聯網公司。
其實若是經歷了 BAT 這種互聯網公司的幾輪技術面試洗禮,那麼去國內任何一個公司都沒什麼問題了,因此當時面試也都很順利,得心應手。
一樣,朋友也不出意外的拿到了那些一線互聯網公司的 Offer。通過一番對比,朋友最終沒有選擇去最初面試的那個 BAT 中的某個大廠,而是去了上面說的那幾個超級獨角獸公司中的其中一個。
緣由是這家超級獨角獸公司給出的薪資超出指望以外,並且領導對朋友一樣很是重視,配發了大量的期權,承諾能夠獨立帶 20+ 人的團隊。
而朋友更看重的是這個超級獨角獸公司將來的潛力:
因此綜合考慮了以後,朋友最終仍是根據本身的職業發展選擇了獨角獸公司,沒有再回到 BAT 行列中。
我這裏仍是把以前那位大佬分享給個人Java架構思惟路線知識點分享給你們。
一、高性能架構
二、開源框架解析
三、微服務架構
四、架構築基
五、團隊協做開發
六、B2C商城項目實戰
七、設計模式
若是須要以上高清的技術圖的話能夠關注一下我,以上知識點這邊都有相應的視頻講解,一樣能夠免費獲取。
須要獲取Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術視頻教程資料,架構思惟導圖,和BATJ面試題及答案的,都是免費分享的。
能夠關注一下我,主頁有獲取方式