苦修月餘,斬獲bigo、騰訊offer,面經奉上!

2020年已經接近尾聲了,跳槽的季節又來了,剛好,最近有好幾個讀者拿到了騰訊、阿里大廠的offer,在我厚顏無恥的追問之下,他們終於給我透露出了面試題的細節,這份熱乎乎、滾滾燙的面經分享給大家,希望對大家有所幫助。

bigo面試

第一位讀者經過1個多月的刷題、看書,成功拿下bigo和騰訊的offer,這位讀者之前也是985高材生,但是一直在小公司,之前和我聊了聊,透露出想去大廠的想法,這不,還是挺簡單的嘛,一把就過了,成功斬獲bigo、騰訊offer。

bigo一面

第一面的話,我覺得比較基礎,都是針對Java、SQL基礎的一些問題,然後擴展了一下對JVM對應到生產上的使用、調優經驗,看是不是真的做過、解決過問題,要有思路。

內存泄露怎麼分析?怎麼知道整條內存泄露的鏈路?

一般方法,jmap dump出轉儲文件,然後通過MAT等一些工具來做具體的分析。

用的什麼垃圾收集器?GC一次多久?線上多久一次Full GC?

垃圾收集器比較簡單,背背書就可以了,然後GC的頻率這個就是根據現在公司的場景舉例子說明。

怎麼進行JVM調優?

說了一點JVM調優的參數,使用之類,然後結合線上的一次問題回答了怎麼發現問題,最終調整JVM參數解決問題的過程。

項目裏有用過ConcurrentHashMap嗎?ConcurrentHashMap底層結構有了解嗎?

這個八股文看書就行了,分段鎖到CAS+synchronized改變,get、put、resize過程。

你知道JDK7和8之間的區別嗎

說了下Stream API使用、lambda表達式,HashMap頭插尾插的改變,ConcurrentHashMap實現方式的變化。

用過Stream嗎,講講

就根據平時使用說就好了,比較簡單。

sql優化的經歷

也比較簡單,平時用到的一些慢SQL優化的經歷說下就行了,但是平時要有總結,不然的話就會東一棒槌西一棒槌。

算法,鏈表相加

通用答案,用刷題大法。

bigo二面

二面會偏中間件一點,考察了項目的細節,會被問的很細,然後其他的問題都是看看書就知道了,雖然都不難,但是還是要多看書、多總結纔行。

深挖項目

項目一定要準備好,每個細節的點,有問題的地方要自己多思考,不然被問到了回答不了就很尷尬。

講講ES,ES文檔數據太多了怎麼辦?

基本上把ES的所有點都講了一遍,就差不多OK了,因爲我做的搜索業務,所以這塊的問題比較多。

RocketMQ集羣的原理,消息堆積怎麼辦,推拉模式優劣?

也是看書就行的,堆積的解決方案可以看我的MQ文章系列。

說下Raft協議?

也就說說主要工作原理,Leader選舉、日誌複製這些。

分佈式ID的設計方案?

很多,雪花算法,國內美團、滴滴、百度開源的記得一兩個就可以了,然後找一個說說實現的原理。

比較簡單的一個算法題,印象不是很清晰了,但是依稀記得是考併發工具包的設計

bigo三面

三面一上來其實還是問項目,扣細節,這一面是技術的終面了,可能是老闆面,所以沒有很多的技術上的難題,針對的還是個人思維方式,平時解決問題的想法和思路。

Redis集羣的特性,分佈式鎖的設計?

這個一般也沒什麼好說的,該背書就背書,分佈式鎖也是老生常談的問題了。

問了項目架構,項目難點

再次被扣細節,平時要理解深刻。

算法是二分法的一個變形題,也不算難

bigo面試總結

面試難度總體來說一般,都是在網上能看得到的問題,但是必須都要會,比較順利的拿下offer。

騰訊面試

因爲讀者已經先拿了bigo的offer,接下來騰訊的面試也算是更有信心了,至少有一個offer打底。不過騰訊一面問的非常廣泛,提問速度也很快,如果講的明白的話,立刻就開始下一個問題... ...

騰訊一面

HTTP/HTTPS,網絡安全問題?

說了說他們的區別,Https通信的機制,證書、密鑰保證安全一些東西。

volatile和synchronize的區別?

八股文,背!

JAVA內存模型?

JMM一套規則,工作內存、主內存,原子性、可見性、有序性,happens-before等等都說了。

Redis分佈式鎖?

這個挺簡單的,大家都會的,另外還要說下和zookeeper實現方式的一些區別,實際應用的過程。

Innodb講講?

把知道的都說出來就好了,行鎖啊,MVCC,外鍵,一致性讀一些東西。

ZAB講講?

就說整個ZAB協議的過程,選舉、發現、同步、廣播的流程。

怎麼分庫分表?

這個其實還是需要點經驗的,沒有對應到數量級的項目的話可能還是靠背書了,參考我的分庫分表文章。

怎麼自己實現IOC?

如果自己看過實現,這個就比較簡單。

用過哪些設計模式,講講?

舉例一些常見的模式,平時怎麼使用的說說就行了。

怎麼判斷一個鏈表是不是有環?

刷題就好了。

一面的內容非常多,後面Kafka,Redis,Zookeeper,ES,計算機網絡都有被問到,有一些回答的不是很好,不過還是過了。

騰訊二面

這一面比上一面還是好一點吧,沒有那麼多問題,感覺上比一面還稍微容易一點,還有一些簡單的問題有點回憶不上了,項目的問題,我已經很熟了。

自我介紹?

自我介紹要準備好,不要太長也不要太短,幾句話說明自己的職業生涯的情況,重點的項目,用到的技能點概括進去就行。

深挖項目,問了下商品表的設計,項目有什麼亮點,或者認爲有什麼缺陷,怎麼改進,併發有多少等等?

還是項目,深挖,沒什麼好說的了。

ES講了個遍,包括基礎原理和優化?

又重新說了一遍。

分佈式ID的生成方式?

還是老問題。

再次聊了下項目,還有分佈式事務相關知識,保證數據一致性?

也是老生常談題,面試必問。兩階段、三階段提交,TCC方案,還有強一致性、最終一致性等等。

爲什麼要用框架做分佈式,沒有行不行?

這種開放性的問題,說自己的思路就行了。舉例子說明比如Dubbo這種框架解決了什麼問題,如服務治理、服務編排、降級等。

騰訊總結

騰訊的面試相比bigo更加全面,更多的考察的是中間件的原理和使用,還有就是分佈式系統下的一些常規的解決方案,平時這些知識點都碰到過,但是要多總結。感覺下來,整體難度也是一般。

附贈快手

讀者非常優秀,臨到採訪結束之際,還要附送我一輪快手面試,只能勉爲其難收入囊中。

數據庫連接不上了,怎麼排查?

還是看思路的問題,思考比如網絡是否正常,數據庫服務是否正常、權限等因素。

雙親委派模型,有什麼好處?

說下原理,好處說了下安全、避免重複加載之類。

ThreadLocal講講?

看過知道就能說上來。

一次接口調用,在日誌文件裏打印”kuaishou ”+耗時,比如“kuaishou 20ms”,"kuaishou 50ms", "kuaishou 100ms",有十萬條,用linux的命令怎麼查出來耗時最短的十條?

這個不知道,然後面試官還一直硬要我手寫出來... ...

安裝了一個軟件,怎麼在linux找到他的路徑?

我說了whereis。

怎麼查看jvm裏線程狀態?

jstack進程ID就可以了。

CountDownLatch和CyclicBarrier有什麼區別?

這個看過就知道了,具體可以看我的文章有寫道。

jps -m ,jps -l 用過嗎?

-m可以輸出主函數的傳參,-l可以輸出完整包名。

講一下Spring事務底層是怎麼實現的?

這個問題也要看過源碼,AOP動態代理實現。

算法題:樹的鏡像,不能用遞歸寫。

還是那句話,刷題完事兒。

快手總結

快手的問題,嗯... 比較奇怪,然後沒有什麼太大問題...一輪遊了。

總結

總結下來,也基本都是常考的知識點,知道的話基本都沒有太大的問題,還要有生產中實際解決的經驗,考慮解決問題的思路,這位讀者bigo和騰訊的基本都全部回答上了,就是最後快手的這個fail-fast了。

如果快手一面你來,會不會掛?

—————END—————

喜歡本文的朋友,歡迎關注公衆號 程序員小灰,收看更多精彩內容

點個[在看],是對小灰最大的支持!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章