本文我們通過一篇真實的一線面經,帶大家去體驗一下 BAT 等網際網路公司的面試現場氛圍!
面試者是筆者以前的下屬,多年的好朋友。這是他去年早些時候出去面試,拿到 BAT 等多家一線網際網路公司技術專家 Offer 的面試經曆。
先介紹一下這位朋友的個人經曆:
- 大學畢業,接近 10 年工作經驗。跳槽之前,在國内某大型網際網路公司裡帶一個 8 人左右的技術團隊。
- 由于公司業務發展較為平緩,是以職業上升機會較少。
- 朋友對其負責的系統架構和技術已經非常熟悉,薪資上也較難有大幅度的增長,至于晉升更高的級别,短期内也不容易。
是以,在仔細思考一番之後,決定出來看看機會,能否在帶團隊的規模、技術以及薪資上實作一個突破。
一面
一面是一個獵頭給朋友推的一個職位,BAT 中某一個大廠的某個團隊,具體就不說是哪個部門了。
一面就直接過去當面聊了一次,大概從下午 2 點聊到了下午 4 點多,時間很長,炮火相當猛烈。
一面面試官也是專家職級,上來就是先聊項目,針對項目中的各種細節仔細問,就項目展開,而且極其注重細節。
下面的内容,是根據朋友面試之後的回憶,整理出的部分問題:
面試同樣是通過網際網路公司最喜歡的連環炮形式發問。比如在面試過程中,聊到了緩存,連環炮如下。接着,面試官繼續深扣了很多細節。
面試官:
- 那請說一下,這些請求具體是落在哪些接口上?
- 哪些資料是資料庫和緩存雙寫一份的?
- 雙寫一緻性如何保證?保證一緻性的同時如何保證高并發和性能?
- 緩存線上是如何部署的?給了多大的總記憶體?命中率有多高?
- 緩存抗了多少 QPS?資料流回源會有多少 QPS?
- 是否某個 key 出現了熱點緩存導緻緩存叢集中某個機器的負載過高?如何解決的?
- 是否出現超大 value 打滿網卡的問題?如何規避這個問題?
- 線上是否出過緩存叢集事故?如果出現了你們怎麼解決有什麼高可用保障預案?
- 平時如何監控緩存叢集的 QPS 和容量?如果要擴容該怎麼擴?能否平滑擴容?擴容會導緻系統需要停機嗎?
- 聊聊 Redis 的叢集原理?擴容的時候會不會導緻資料丢失?key 尋址算法都了解哪些?
- 你了解一緻性 hash 算法嗎?畫個圖說說 Redis 線程模型和記憶體模型?
朋友:紙筆翻飛,大腦高度運轉,一個接一個的回答。。。
如上所述,所有問題,全部結合項目,落地到生産中,同時注重聊技術的很多細節,包括技術的一些原理。
像緩存這樣的連環炮提問法,面試官還用來問了 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 的那家大廠同樣配發了期權,但是這家超級獨角獸的期權未來潛力可能更大。事實證明,的确如此。
是以綜合考慮了之後,朋友最終還是根據自己的職業發展選擇了獨角獸公司,沒有再回到 BAT 行列中。
最後
我這裡還是把之前那位大佬分享給我的Java架構思維路線知識點分享給大家。
1、高性能架構- 性能優化如何了解
- JVM調優
- JAVA程式性能優化
- Tomcat
- Mysql
- 1.spring概述
- 2.Spring 容器
- 3.Spring AOP
- 4.Spring MVC
- 5.Spring 5新特性
- 6.Mybatis
- SpringBoot
- SpringCloud
- Docker虛拟化技術
- Dubbo應用及源碼解讀
- 分布式環境指揮官Zookeeper
- 分布式消息通訊 異步與MQ
- 分布式緩存 NoSql
- 資料存儲
- 高并發分流技術Nginx
- 分布式檔案存儲fastdfs
- Git
- Maven
- Jenkins
- Sonar
如果需要以上
高清的技術圖的話可以
關注一下我
,以上知識點這邊都有相應的
視訊講解,同樣可以免費擷取。
需要擷取Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術視訊教程資料,架構思維導圖,和BATJ面試題及答案的,都是免費分享的。
可以
關注一下我
,首頁有擷取方式