'面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)'

"
"
面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

1.字節跳動

頭條技術面共三面,之後是HR面,面試形式是 視頻。時間均控制在1個小時。

第一面:

第一面主要考察基礎,先簡單自我介紹,以及介紹一下項目,然後開始考察基礎。

TCP相關基礎知識

問題1:請詳細描述三次握手和四次揮手的過程

要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。

問題2:四次揮手中TIME_WAIT狀態存在的目的是什麼?

這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。

問題3:TCP是通過什麼機制保障可靠性的?

從四個方面進行回答,ACK確認機制、超時重傳、滑動窗口以及流量控制,深入的話要求詳細講出流量控制的機制。

語言的相關基礎知識

字節跳動的技術棧是Go和Python,會問一下相關語言的基礎。

問題1:描述線程、進程以及協程的區別?

描述線程、進程以及協程的定義和區別,順便描述Python語言中三者的使用。

問題2:GO語言中的協程與Python中的協程的區別?

主要講解Go中GMP機制。

網絡編程相關基礎

問題1:網絡IO模型有哪些?

5種網絡I/O模型,阻塞、非阻塞、I/O多路複用、信號驅動IO、異步I/O。從數據從I/O設備到內核態,內核態到進程用戶態分別描述這5種的區別。

問題2:I/O多路複用中select/poll/epoll的區別?

從select的機制,以及select的三個缺點,講解epoll機制,以及epoll是如何解決select的三個缺點的。還會講到epoll中水平觸發和邊沿觸發的區別。

HTTP相關基礎

問題1:客戶端訪問url到服務器,整個過程會經歷哪些?

從七層網絡模型,HTTP->TCP->IP->鏈路整個過程講解報文的產生以及傳遞的過程

問題2:描述HTTPS和HTTP的區別

從端口的區別,以及HTTPS是在SSL的基礎上以及加密等方面說明

問題3:HTTP協議的請求報文和響應報文格式

要非常清楚請求報文和響應報文的組成部分,要求在寫具體案例。

問題4:HTTP的狀態碼有哪些?

從2xx,3xx,4xx,5xx分別舉例出常見的code,面試官會問301和302的區別,以及500/503/504分別在哪些場景出現。

緩存和數據庫的基礎知識

問題1:描述一下redis有哪些數據結構。

基礎的數據結構有5種,String/List/Hash/Set/Zset,還答了高級數據結構HyperLogLog/BitMap/BloomFilter/GeoHash。面試官還問了BloomFilter的原理以及Zset的實現原理,主要講解跳躍表。

問題2:MySQL場景題目

面試官提供場景,要求寫出查詢SQL,考察聯合語句,如何分頁以及複雜語句的優化。

裸寫算法

樹的非遞歸先序遍歷。

第二面:

項目經驗

第二面跟個人項目經驗很大,面試官會要求先詳細介紹最近的項目,介紹項目的同時會打斷你,延伸項目的難度和架構,要求提出更優的解決方案。

之前項目經驗裡寫了一個分佈式的項目,面試官著重討論了這個項目的實現方案,引申出分佈式事務以及分佈式一致性等問題,同時會要求在當前項目的基礎上附加條件,要求你提供解決方案,這部分比較難,要求對項目的深度理解很透徹,面試前一定要對項目瞭解非常清楚,如果是多人合作的項目,最好也要了解別人編寫的功能部分。

還問了一些API業務的架構問題,負載均衡、CDN、DNS等問題。以及也問到了HTTP相關問題,要求描述HTTP的版本之間的區別,主要是1.0/1.1/2.0三個版本的區別。詳細說了1.0與1.1之間是連接模型的區別(短連接、長連接、管線化),1.1與2.0之間的區別是I/O多路複用的單一長連接、服務器推送、二進制分楨、首部壓縮等。

裸寫算法

回行矩陣遍歷

第三面:

項目經驗

第三面也是考察項目經驗,但是著重系統設計,會抽一段之前的項目經驗(跟第二面的經驗肯定不同),要求你描述目前的方案,以及缺點。溫馨提示,一定要簡歷上的項目經驗非常熟悉,會抽上一段工作經驗的項目。

要求說出缺點,這個一個坑,說出來後要求提出改進方案,所以回答要謹慎,最好面試前對目前的項目假設附加條件,提出2-3種備選方案。

要求模塊化,會要求對目前系統如果做微服務架構,如何進行服務的拆分,拆分的規則是什麼,考察微服務架構相關知識,服務治理(限流、降級、熔斷)。

舉例: 之前項目中由涉及到社交場景中熱度池的設計,要求講出現有方案和缺點,然後說出優化方案,還會將目前的量級擴大很多倍,要求重新架構出方案。還有講到粉絲關係,推拉組合,也就是讀擴散和寫擴散二者的區別,以及二者如何結合。

裸寫算法

二叉樹多個節點的最近公共祖先

總結

三面技術面之後,就是HR,這個就不多說了。整體字節跳動的面試感受,面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。手寫算法留的時間不多,3-10分鐘,如果3分鐘還沒寫,就要求講出解題思路。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。


"
面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

1.字節跳動

頭條技術面共三面,之後是HR面,面試形式是 視頻。時間均控制在1個小時。

第一面:

第一面主要考察基礎,先簡單自我介紹,以及介紹一下項目,然後開始考察基礎。

TCP相關基礎知識

問題1:請詳細描述三次握手和四次揮手的過程

要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。

問題2:四次揮手中TIME_WAIT狀態存在的目的是什麼?

這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。

問題3:TCP是通過什麼機制保障可靠性的?

從四個方面進行回答,ACK確認機制、超時重傳、滑動窗口以及流量控制,深入的話要求詳細講出流量控制的機制。

語言的相關基礎知識

字節跳動的技術棧是Go和Python,會問一下相關語言的基礎。

問題1:描述線程、進程以及協程的區別?

描述線程、進程以及協程的定義和區別,順便描述Python語言中三者的使用。

問題2:GO語言中的協程與Python中的協程的區別?

主要講解Go中GMP機制。

網絡編程相關基礎

問題1:網絡IO模型有哪些?

5種網絡I/O模型,阻塞、非阻塞、I/O多路複用、信號驅動IO、異步I/O。從數據從I/O設備到內核態,內核態到進程用戶態分別描述這5種的區別。

問題2:I/O多路複用中select/poll/epoll的區別?

從select的機制,以及select的三個缺點,講解epoll機制,以及epoll是如何解決select的三個缺點的。還會講到epoll中水平觸發和邊沿觸發的區別。

HTTP相關基礎

問題1:客戶端訪問url到服務器,整個過程會經歷哪些?

從七層網絡模型,HTTP->TCP->IP->鏈路整個過程講解報文的產生以及傳遞的過程

問題2:描述HTTPS和HTTP的區別

從端口的區別,以及HTTPS是在SSL的基礎上以及加密等方面說明

問題3:HTTP協議的請求報文和響應報文格式

要非常清楚請求報文和響應報文的組成部分,要求在寫具體案例。

問題4:HTTP的狀態碼有哪些?

從2xx,3xx,4xx,5xx分別舉例出常見的code,面試官會問301和302的區別,以及500/503/504分別在哪些場景出現。

緩存和數據庫的基礎知識

問題1:描述一下redis有哪些數據結構。

基礎的數據結構有5種,String/List/Hash/Set/Zset,還答了高級數據結構HyperLogLog/BitMap/BloomFilter/GeoHash。面試官還問了BloomFilter的原理以及Zset的實現原理,主要講解跳躍表。

問題2:MySQL場景題目

面試官提供場景,要求寫出查詢SQL,考察聯合語句,如何分頁以及複雜語句的優化。

裸寫算法

樹的非遞歸先序遍歷。

第二面:

項目經驗

第二面跟個人項目經驗很大,面試官會要求先詳細介紹最近的項目,介紹項目的同時會打斷你,延伸項目的難度和架構,要求提出更優的解決方案。

之前項目經驗裡寫了一個分佈式的項目,面試官著重討論了這個項目的實現方案,引申出分佈式事務以及分佈式一致性等問題,同時會要求在當前項目的基礎上附加條件,要求你提供解決方案,這部分比較難,要求對項目的深度理解很透徹,面試前一定要對項目瞭解非常清楚,如果是多人合作的項目,最好也要了解別人編寫的功能部分。

還問了一些API業務的架構問題,負載均衡、CDN、DNS等問題。以及也問到了HTTP相關問題,要求描述HTTP的版本之間的區別,主要是1.0/1.1/2.0三個版本的區別。詳細說了1.0與1.1之間是連接模型的區別(短連接、長連接、管線化),1.1與2.0之間的區別是I/O多路複用的單一長連接、服務器推送、二進制分楨、首部壓縮等。

裸寫算法

回行矩陣遍歷

第三面:

項目經驗

第三面也是考察項目經驗,但是著重系統設計,會抽一段之前的項目經驗(跟第二面的經驗肯定不同),要求你描述目前的方案,以及缺點。溫馨提示,一定要簡歷上的項目經驗非常熟悉,會抽上一段工作經驗的項目。

要求說出缺點,這個一個坑,說出來後要求提出改進方案,所以回答要謹慎,最好面試前對目前的項目假設附加條件,提出2-3種備選方案。

要求模塊化,會要求對目前系統如果做微服務架構,如何進行服務的拆分,拆分的規則是什麼,考察微服務架構相關知識,服務治理(限流、降級、熔斷)。

舉例: 之前項目中由涉及到社交場景中熱度池的設計,要求講出現有方案和缺點,然後說出優化方案,還會將目前的量級擴大很多倍,要求重新架構出方案。還有講到粉絲關係,推拉組合,也就是讀擴散和寫擴散二者的區別,以及二者如何結合。

裸寫算法

二叉樹多個節點的最近公共祖先

總結

三面技術面之後,就是HR,這個就不多說了。整體字節跳動的面試感受,面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。手寫算法留的時間不多,3-10分鐘,如果3分鐘還沒寫,就要求講出解題思路。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。


面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

2.騰訊

騰訊面試流程較多,加上筆試一共有8輪,6輪技術+1輪HR+1輪筆試

第一面:

第一面是電話面試,主要考察項目,通過項目提出基礎問題。時間30分鐘。

之前有微服務經驗,面試官就詳細問到微服務的架構、框架的實現、服務治理、分佈式一致性等問題。

之前有玩過日誌監控系統,首先還是考察架構,ELK的相關知識,重點描述Elasticsearch的一些架構原理,比如倒排索引的原理。

問消息隊列的相關知識,接觸過Kafka,問了Kafka中消息可以被多個消費者消費嗎?;以及選舉機制和HW機制。

開放性問題,講一個之前遇到的問題,並如何解決的。這個描述生產過程中運行的問題,並描述排查問題。

數據庫和Redis相關問題,數據庫考察索引的原理以及幾種事務的區別。Redis問數據結構,延時隊列如何實現,分佈式鎖原理。

第二面 :

筆試,現場面試,考察具體崗位的技術棧語言的基礎知識,題目不難,要求基礎紮實和廣度。

第三面、第四面

第三面和第四面是組長和總監面試,聊解題思路和項目,這二面的特點是根據項目經驗問相關的問題,要求廣度,尤其考察架構廣度,會將目前的項目量級擴大幾十倍,重新設計架構,同時涉及到一些壓力面試。

感覺如果不緊張,熟悉項目的話,問題不大。

會有很多開放性題目,包括平時遇到問題的解題思路、同事之間的協作等。

被問到的知識點有負載均衡算法,ngnix如何做限流,四層LVS和七層Ngnix的區別,以及微服務架構的設計思路。

面試時間均在20-30分鐘。

第五面、第六面 技術委員會面試

第五面和第六面是面委,技術面試,難度非常大。

  • 考察系統設計和架構設計。要求知識的深度理解

主要是系統設計,問了秒殺系統的如何設計,分接入層、接口層、消息隊列層、邏輯層四個方面講解,接入層可以做服務治理相關事情,接口層做搶購開關、黑白名單、隨機拒絕等處理,邏輯層具體搶購邏輯實現,涉及到redis分佈式鎖以及DB和Redis的一致性問題。

從秒殺系統還引申出分佈式事務的幾種實現,二段式、三段式、補償型(TCC)、基於可靠消息服務的消息隊列實現。重點討論了這幾種的實現和區別,要求畫出基於可靠消息服務的消息隊列實現分佈式事務的架構圖,以及上游服務和下游服務如何保證消息可靠性和一致性。

  • 考察微服務架構,服務拆分的原則、RPC框架原理、配置管理(etcd)的一致性協議raft選舉原理。
  • 考察服務治理,服務限流算法,服務降級的指標和恢復指標,服務熔斷。

開放性問題,遇到印象最深的問題,以及如何解決的。

總結

騰訊很少有算法題,主要考察知識的廣度和深度,如果沒有實踐過,靠背書是很難混過去的。架構理解要求比較有深度,注重原理的考察。

又是一年求職季,在這裡,我為各位準備了一套Java程序員精選高頻面試筆試真題,來幫助大家攻下BAT的offer,感興趣的可以“轉發+轉發+轉發+私信”【資料】二字,即可免費獲取,以下是部分資料截圖

"
面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

1.字節跳動

頭條技術面共三面,之後是HR面,面試形式是 視頻。時間均控制在1個小時。

第一面:

第一面主要考察基礎,先簡單自我介紹,以及介紹一下項目,然後開始考察基礎。

TCP相關基礎知識

問題1:請詳細描述三次握手和四次揮手的過程

要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。

問題2:四次揮手中TIME_WAIT狀態存在的目的是什麼?

這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。

問題3:TCP是通過什麼機制保障可靠性的?

從四個方面進行回答,ACK確認機制、超時重傳、滑動窗口以及流量控制,深入的話要求詳細講出流量控制的機制。

語言的相關基礎知識

字節跳動的技術棧是Go和Python,會問一下相關語言的基礎。

問題1:描述線程、進程以及協程的區別?

描述線程、進程以及協程的定義和區別,順便描述Python語言中三者的使用。

問題2:GO語言中的協程與Python中的協程的區別?

主要講解Go中GMP機制。

網絡編程相關基礎

問題1:網絡IO模型有哪些?

5種網絡I/O模型,阻塞、非阻塞、I/O多路複用、信號驅動IO、異步I/O。從數據從I/O設備到內核態,內核態到進程用戶態分別描述這5種的區別。

問題2:I/O多路複用中select/poll/epoll的區別?

從select的機制,以及select的三個缺點,講解epoll機制,以及epoll是如何解決select的三個缺點的。還會講到epoll中水平觸發和邊沿觸發的區別。

HTTP相關基礎

問題1:客戶端訪問url到服務器,整個過程會經歷哪些?

從七層網絡模型,HTTP->TCP->IP->鏈路整個過程講解報文的產生以及傳遞的過程

問題2:描述HTTPS和HTTP的區別

從端口的區別,以及HTTPS是在SSL的基礎上以及加密等方面說明

問題3:HTTP協議的請求報文和響應報文格式

要非常清楚請求報文和響應報文的組成部分,要求在寫具體案例。

問題4:HTTP的狀態碼有哪些?

從2xx,3xx,4xx,5xx分別舉例出常見的code,面試官會問301和302的區別,以及500/503/504分別在哪些場景出現。

緩存和數據庫的基礎知識

問題1:描述一下redis有哪些數據結構。

基礎的數據結構有5種,String/List/Hash/Set/Zset,還答了高級數據結構HyperLogLog/BitMap/BloomFilter/GeoHash。面試官還問了BloomFilter的原理以及Zset的實現原理,主要講解跳躍表。

問題2:MySQL場景題目

面試官提供場景,要求寫出查詢SQL,考察聯合語句,如何分頁以及複雜語句的優化。

裸寫算法

樹的非遞歸先序遍歷。

第二面:

項目經驗

第二面跟個人項目經驗很大,面試官會要求先詳細介紹最近的項目,介紹項目的同時會打斷你,延伸項目的難度和架構,要求提出更優的解決方案。

之前項目經驗裡寫了一個分佈式的項目,面試官著重討論了這個項目的實現方案,引申出分佈式事務以及分佈式一致性等問題,同時會要求在當前項目的基礎上附加條件,要求你提供解決方案,這部分比較難,要求對項目的深度理解很透徹,面試前一定要對項目瞭解非常清楚,如果是多人合作的項目,最好也要了解別人編寫的功能部分。

還問了一些API業務的架構問題,負載均衡、CDN、DNS等問題。以及也問到了HTTP相關問題,要求描述HTTP的版本之間的區別,主要是1.0/1.1/2.0三個版本的區別。詳細說了1.0與1.1之間是連接模型的區別(短連接、長連接、管線化),1.1與2.0之間的區別是I/O多路複用的單一長連接、服務器推送、二進制分楨、首部壓縮等。

裸寫算法

回行矩陣遍歷

第三面:

項目經驗

第三面也是考察項目經驗,但是著重系統設計,會抽一段之前的項目經驗(跟第二面的經驗肯定不同),要求你描述目前的方案,以及缺點。溫馨提示,一定要簡歷上的項目經驗非常熟悉,會抽上一段工作經驗的項目。

要求說出缺點,這個一個坑,說出來後要求提出改進方案,所以回答要謹慎,最好面試前對目前的項目假設附加條件,提出2-3種備選方案。

要求模塊化,會要求對目前系統如果做微服務架構,如何進行服務的拆分,拆分的規則是什麼,考察微服務架構相關知識,服務治理(限流、降級、熔斷)。

舉例: 之前項目中由涉及到社交場景中熱度池的設計,要求講出現有方案和缺點,然後說出優化方案,還會將目前的量級擴大很多倍,要求重新架構出方案。還有講到粉絲關係,推拉組合,也就是讀擴散和寫擴散二者的區別,以及二者如何結合。

裸寫算法

二叉樹多個節點的最近公共祖先

總結

三面技術面之後,就是HR,這個就不多說了。整體字節跳動的面試感受,面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。手寫算法留的時間不多,3-10分鐘,如果3分鐘還沒寫,就要求講出解題思路。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。


面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

2.騰訊

騰訊面試流程較多,加上筆試一共有8輪,6輪技術+1輪HR+1輪筆試

第一面:

第一面是電話面試,主要考察項目,通過項目提出基礎問題。時間30分鐘。

之前有微服務經驗,面試官就詳細問到微服務的架構、框架的實現、服務治理、分佈式一致性等問題。

之前有玩過日誌監控系統,首先還是考察架構,ELK的相關知識,重點描述Elasticsearch的一些架構原理,比如倒排索引的原理。

問消息隊列的相關知識,接觸過Kafka,問了Kafka中消息可以被多個消費者消費嗎?;以及選舉機制和HW機制。

開放性問題,講一個之前遇到的問題,並如何解決的。這個描述生產過程中運行的問題,並描述排查問題。

數據庫和Redis相關問題,數據庫考察索引的原理以及幾種事務的區別。Redis問數據結構,延時隊列如何實現,分佈式鎖原理。

第二面 :

筆試,現場面試,考察具體崗位的技術棧語言的基礎知識,題目不難,要求基礎紮實和廣度。

第三面、第四面

第三面和第四面是組長和總監面試,聊解題思路和項目,這二面的特點是根據項目經驗問相關的問題,要求廣度,尤其考察架構廣度,會將目前的項目量級擴大幾十倍,重新設計架構,同時涉及到一些壓力面試。

感覺如果不緊張,熟悉項目的話,問題不大。

會有很多開放性題目,包括平時遇到問題的解題思路、同事之間的協作等。

被問到的知識點有負載均衡算法,ngnix如何做限流,四層LVS和七層Ngnix的區別,以及微服務架構的設計思路。

面試時間均在20-30分鐘。

第五面、第六面 技術委員會面試

第五面和第六面是面委,技術面試,難度非常大。

  • 考察系統設計和架構設計。要求知識的深度理解

主要是系統設計,問了秒殺系統的如何設計,分接入層、接口層、消息隊列層、邏輯層四個方面講解,接入層可以做服務治理相關事情,接口層做搶購開關、黑白名單、隨機拒絕等處理,邏輯層具體搶購邏輯實現,涉及到redis分佈式鎖以及DB和Redis的一致性問題。

從秒殺系統還引申出分佈式事務的幾種實現,二段式、三段式、補償型(TCC)、基於可靠消息服務的消息隊列實現。重點討論了這幾種的實現和區別,要求畫出基於可靠消息服務的消息隊列實現分佈式事務的架構圖,以及上游服務和下游服務如何保證消息可靠性和一致性。

  • 考察微服務架構,服務拆分的原則、RPC框架原理、配置管理(etcd)的一致性協議raft選舉原理。
  • 考察服務治理,服務限流算法,服務降級的指標和恢復指標,服務熔斷。

開放性問題,遇到印象最深的問題,以及如何解決的。

總結

騰訊很少有算法題,主要考察知識的廣度和深度,如果沒有實踐過,靠背書是很難混過去的。架構理解要求比較有深度,注重原理的考察。

又是一年求職季,在這裡,我為各位準備了一套Java程序員精選高頻面試筆試真題,來幫助大家攻下BAT的offer,感興趣的可以“轉發+轉發+轉發+私信”【資料】二字,即可免費獲取,以下是部分資料截圖

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

"
面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

1.字節跳動

頭條技術面共三面,之後是HR面,面試形式是 視頻。時間均控制在1個小時。

第一面:

第一面主要考察基礎,先簡單自我介紹,以及介紹一下項目,然後開始考察基礎。

TCP相關基礎知識

問題1:請詳細描述三次握手和四次揮手的過程

要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。

問題2:四次揮手中TIME_WAIT狀態存在的目的是什麼?

這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。

問題3:TCP是通過什麼機制保障可靠性的?

從四個方面進行回答,ACK確認機制、超時重傳、滑動窗口以及流量控制,深入的話要求詳細講出流量控制的機制。

語言的相關基礎知識

字節跳動的技術棧是Go和Python,會問一下相關語言的基礎。

問題1:描述線程、進程以及協程的區別?

描述線程、進程以及協程的定義和區別,順便描述Python語言中三者的使用。

問題2:GO語言中的協程與Python中的協程的區別?

主要講解Go中GMP機制。

網絡編程相關基礎

問題1:網絡IO模型有哪些?

5種網絡I/O模型,阻塞、非阻塞、I/O多路複用、信號驅動IO、異步I/O。從數據從I/O設備到內核態,內核態到進程用戶態分別描述這5種的區別。

問題2:I/O多路複用中select/poll/epoll的區別?

從select的機制,以及select的三個缺點,講解epoll機制,以及epoll是如何解決select的三個缺點的。還會講到epoll中水平觸發和邊沿觸發的區別。

HTTP相關基礎

問題1:客戶端訪問url到服務器,整個過程會經歷哪些?

從七層網絡模型,HTTP->TCP->IP->鏈路整個過程講解報文的產生以及傳遞的過程

問題2:描述HTTPS和HTTP的區別

從端口的區別,以及HTTPS是在SSL的基礎上以及加密等方面說明

問題3:HTTP協議的請求報文和響應報文格式

要非常清楚請求報文和響應報文的組成部分,要求在寫具體案例。

問題4:HTTP的狀態碼有哪些?

從2xx,3xx,4xx,5xx分別舉例出常見的code,面試官會問301和302的區別,以及500/503/504分別在哪些場景出現。

緩存和數據庫的基礎知識

問題1:描述一下redis有哪些數據結構。

基礎的數據結構有5種,String/List/Hash/Set/Zset,還答了高級數據結構HyperLogLog/BitMap/BloomFilter/GeoHash。面試官還問了BloomFilter的原理以及Zset的實現原理,主要講解跳躍表。

問題2:MySQL場景題目

面試官提供場景,要求寫出查詢SQL,考察聯合語句,如何分頁以及複雜語句的優化。

裸寫算法

樹的非遞歸先序遍歷。

第二面:

項目經驗

第二面跟個人項目經驗很大,面試官會要求先詳細介紹最近的項目,介紹項目的同時會打斷你,延伸項目的難度和架構,要求提出更優的解決方案。

之前項目經驗裡寫了一個分佈式的項目,面試官著重討論了這個項目的實現方案,引申出分佈式事務以及分佈式一致性等問題,同時會要求在當前項目的基礎上附加條件,要求你提供解決方案,這部分比較難,要求對項目的深度理解很透徹,面試前一定要對項目瞭解非常清楚,如果是多人合作的項目,最好也要了解別人編寫的功能部分。

還問了一些API業務的架構問題,負載均衡、CDN、DNS等問題。以及也問到了HTTP相關問題,要求描述HTTP的版本之間的區別,主要是1.0/1.1/2.0三個版本的區別。詳細說了1.0與1.1之間是連接模型的區別(短連接、長連接、管線化),1.1與2.0之間的區別是I/O多路複用的單一長連接、服務器推送、二進制分楨、首部壓縮等。

裸寫算法

回行矩陣遍歷

第三面:

項目經驗

第三面也是考察項目經驗,但是著重系統設計,會抽一段之前的項目經驗(跟第二面的經驗肯定不同),要求你描述目前的方案,以及缺點。溫馨提示,一定要簡歷上的項目經驗非常熟悉,會抽上一段工作經驗的項目。

要求說出缺點,這個一個坑,說出來後要求提出改進方案,所以回答要謹慎,最好面試前對目前的項目假設附加條件,提出2-3種備選方案。

要求模塊化,會要求對目前系統如果做微服務架構,如何進行服務的拆分,拆分的規則是什麼,考察微服務架構相關知識,服務治理(限流、降級、熔斷)。

舉例: 之前項目中由涉及到社交場景中熱度池的設計,要求講出現有方案和缺點,然後說出優化方案,還會將目前的量級擴大很多倍,要求重新架構出方案。還有講到粉絲關係,推拉組合,也就是讀擴散和寫擴散二者的區別,以及二者如何結合。

裸寫算法

二叉樹多個節點的最近公共祖先

總結

三面技術面之後,就是HR,這個就不多說了。整體字節跳動的面試感受,面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。手寫算法留的時間不多,3-10分鐘,如果3分鐘還沒寫,就要求講出解題思路。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。


面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

2.騰訊

騰訊面試流程較多,加上筆試一共有8輪,6輪技術+1輪HR+1輪筆試

第一面:

第一面是電話面試,主要考察項目,通過項目提出基礎問題。時間30分鐘。

之前有微服務經驗,面試官就詳細問到微服務的架構、框架的實現、服務治理、分佈式一致性等問題。

之前有玩過日誌監控系統,首先還是考察架構,ELK的相關知識,重點描述Elasticsearch的一些架構原理,比如倒排索引的原理。

問消息隊列的相關知識,接觸過Kafka,問了Kafka中消息可以被多個消費者消費嗎?;以及選舉機制和HW機制。

開放性問題,講一個之前遇到的問題,並如何解決的。這個描述生產過程中運行的問題,並描述排查問題。

數據庫和Redis相關問題,數據庫考察索引的原理以及幾種事務的區別。Redis問數據結構,延時隊列如何實現,分佈式鎖原理。

第二面 :

筆試,現場面試,考察具體崗位的技術棧語言的基礎知識,題目不難,要求基礎紮實和廣度。

第三面、第四面

第三面和第四面是組長和總監面試,聊解題思路和項目,這二面的特點是根據項目經驗問相關的問題,要求廣度,尤其考察架構廣度,會將目前的項目量級擴大幾十倍,重新設計架構,同時涉及到一些壓力面試。

感覺如果不緊張,熟悉項目的話,問題不大。

會有很多開放性題目,包括平時遇到問題的解題思路、同事之間的協作等。

被問到的知識點有負載均衡算法,ngnix如何做限流,四層LVS和七層Ngnix的區別,以及微服務架構的設計思路。

面試時間均在20-30分鐘。

第五面、第六面 技術委員會面試

第五面和第六面是面委,技術面試,難度非常大。

  • 考察系統設計和架構設計。要求知識的深度理解

主要是系統設計,問了秒殺系統的如何設計,分接入層、接口層、消息隊列層、邏輯層四個方面講解,接入層可以做服務治理相關事情,接口層做搶購開關、黑白名單、隨機拒絕等處理,邏輯層具體搶購邏輯實現,涉及到redis分佈式鎖以及DB和Redis的一致性問題。

從秒殺系統還引申出分佈式事務的幾種實現,二段式、三段式、補償型(TCC)、基於可靠消息服務的消息隊列實現。重點討論了這幾種的實現和區別,要求畫出基於可靠消息服務的消息隊列實現分佈式事務的架構圖,以及上游服務和下游服務如何保證消息可靠性和一致性。

  • 考察微服務架構,服務拆分的原則、RPC框架原理、配置管理(etcd)的一致性協議raft選舉原理。
  • 考察服務治理,服務限流算法,服務降級的指標和恢復指標,服務熔斷。

開放性問題,遇到印象最深的問題,以及如何解決的。

總結

騰訊很少有算法題,主要考察知識的廣度和深度,如果沒有實踐過,靠背書是很難混過去的。架構理解要求比較有深度,注重原理的考察。

又是一年求職季,在這裡,我為各位準備了一套Java程序員精選高頻面試筆試真題,來幫助大家攻下BAT的offer,感興趣的可以“轉發+轉發+轉發+私信”【資料】二字,即可免費獲取,以下是部分資料截圖

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

"
面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

1.字節跳動

頭條技術面共三面,之後是HR面,面試形式是 視頻。時間均控制在1個小時。

第一面:

第一面主要考察基礎,先簡單自我介紹,以及介紹一下項目,然後開始考察基礎。

TCP相關基礎知識

問題1:請詳細描述三次握手和四次揮手的過程

要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。

問題2:四次揮手中TIME_WAIT狀態存在的目的是什麼?

這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。

問題3:TCP是通過什麼機制保障可靠性的?

從四個方面進行回答,ACK確認機制、超時重傳、滑動窗口以及流量控制,深入的話要求詳細講出流量控制的機制。

語言的相關基礎知識

字節跳動的技術棧是Go和Python,會問一下相關語言的基礎。

問題1:描述線程、進程以及協程的區別?

描述線程、進程以及協程的定義和區別,順便描述Python語言中三者的使用。

問題2:GO語言中的協程與Python中的協程的區別?

主要講解Go中GMP機制。

網絡編程相關基礎

問題1:網絡IO模型有哪些?

5種網絡I/O模型,阻塞、非阻塞、I/O多路複用、信號驅動IO、異步I/O。從數據從I/O設備到內核態,內核態到進程用戶態分別描述這5種的區別。

問題2:I/O多路複用中select/poll/epoll的區別?

從select的機制,以及select的三個缺點,講解epoll機制,以及epoll是如何解決select的三個缺點的。還會講到epoll中水平觸發和邊沿觸發的區別。

HTTP相關基礎

問題1:客戶端訪問url到服務器,整個過程會經歷哪些?

從七層網絡模型,HTTP->TCP->IP->鏈路整個過程講解報文的產生以及傳遞的過程

問題2:描述HTTPS和HTTP的區別

從端口的區別,以及HTTPS是在SSL的基礎上以及加密等方面說明

問題3:HTTP協議的請求報文和響應報文格式

要非常清楚請求報文和響應報文的組成部分,要求在寫具體案例。

問題4:HTTP的狀態碼有哪些?

從2xx,3xx,4xx,5xx分別舉例出常見的code,面試官會問301和302的區別,以及500/503/504分別在哪些場景出現。

緩存和數據庫的基礎知識

問題1:描述一下redis有哪些數據結構。

基礎的數據結構有5種,String/List/Hash/Set/Zset,還答了高級數據結構HyperLogLog/BitMap/BloomFilter/GeoHash。面試官還問了BloomFilter的原理以及Zset的實現原理,主要講解跳躍表。

問題2:MySQL場景題目

面試官提供場景,要求寫出查詢SQL,考察聯合語句,如何分頁以及複雜語句的優化。

裸寫算法

樹的非遞歸先序遍歷。

第二面:

項目經驗

第二面跟個人項目經驗很大,面試官會要求先詳細介紹最近的項目,介紹項目的同時會打斷你,延伸項目的難度和架構,要求提出更優的解決方案。

之前項目經驗裡寫了一個分佈式的項目,面試官著重討論了這個項目的實現方案,引申出分佈式事務以及分佈式一致性等問題,同時會要求在當前項目的基礎上附加條件,要求你提供解決方案,這部分比較難,要求對項目的深度理解很透徹,面試前一定要對項目瞭解非常清楚,如果是多人合作的項目,最好也要了解別人編寫的功能部分。

還問了一些API業務的架構問題,負載均衡、CDN、DNS等問題。以及也問到了HTTP相關問題,要求描述HTTP的版本之間的區別,主要是1.0/1.1/2.0三個版本的區別。詳細說了1.0與1.1之間是連接模型的區別(短連接、長連接、管線化),1.1與2.0之間的區別是I/O多路複用的單一長連接、服務器推送、二進制分楨、首部壓縮等。

裸寫算法

回行矩陣遍歷

第三面:

項目經驗

第三面也是考察項目經驗,但是著重系統設計,會抽一段之前的項目經驗(跟第二面的經驗肯定不同),要求你描述目前的方案,以及缺點。溫馨提示,一定要簡歷上的項目經驗非常熟悉,會抽上一段工作經驗的項目。

要求說出缺點,這個一個坑,說出來後要求提出改進方案,所以回答要謹慎,最好面試前對目前的項目假設附加條件,提出2-3種備選方案。

要求模塊化,會要求對目前系統如果做微服務架構,如何進行服務的拆分,拆分的規則是什麼,考察微服務架構相關知識,服務治理(限流、降級、熔斷)。

舉例: 之前項目中由涉及到社交場景中熱度池的設計,要求講出現有方案和缺點,然後說出優化方案,還會將目前的量級擴大很多倍,要求重新架構出方案。還有講到粉絲關係,推拉組合,也就是讀擴散和寫擴散二者的區別,以及二者如何結合。

裸寫算法

二叉樹多個節點的最近公共祖先

總結

三面技術面之後,就是HR,這個就不多說了。整體字節跳動的面試感受,面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。手寫算法留的時間不多,3-10分鐘,如果3分鐘還沒寫,就要求講出解題思路。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。


面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

2.騰訊

騰訊面試流程較多,加上筆試一共有8輪,6輪技術+1輪HR+1輪筆試

第一面:

第一面是電話面試,主要考察項目,通過項目提出基礎問題。時間30分鐘。

之前有微服務經驗,面試官就詳細問到微服務的架構、框架的實現、服務治理、分佈式一致性等問題。

之前有玩過日誌監控系統,首先還是考察架構,ELK的相關知識,重點描述Elasticsearch的一些架構原理,比如倒排索引的原理。

問消息隊列的相關知識,接觸過Kafka,問了Kafka中消息可以被多個消費者消費嗎?;以及選舉機制和HW機制。

開放性問題,講一個之前遇到的問題,並如何解決的。這個描述生產過程中運行的問題,並描述排查問題。

數據庫和Redis相關問題,數據庫考察索引的原理以及幾種事務的區別。Redis問數據結構,延時隊列如何實現,分佈式鎖原理。

第二面 :

筆試,現場面試,考察具體崗位的技術棧語言的基礎知識,題目不難,要求基礎紮實和廣度。

第三面、第四面

第三面和第四面是組長和總監面試,聊解題思路和項目,這二面的特點是根據項目經驗問相關的問題,要求廣度,尤其考察架構廣度,會將目前的項目量級擴大幾十倍,重新設計架構,同時涉及到一些壓力面試。

感覺如果不緊張,熟悉項目的話,問題不大。

會有很多開放性題目,包括平時遇到問題的解題思路、同事之間的協作等。

被問到的知識點有負載均衡算法,ngnix如何做限流,四層LVS和七層Ngnix的區別,以及微服務架構的設計思路。

面試時間均在20-30分鐘。

第五面、第六面 技術委員會面試

第五面和第六面是面委,技術面試,難度非常大。

  • 考察系統設計和架構設計。要求知識的深度理解

主要是系統設計,問了秒殺系統的如何設計,分接入層、接口層、消息隊列層、邏輯層四個方面講解,接入層可以做服務治理相關事情,接口層做搶購開關、黑白名單、隨機拒絕等處理,邏輯層具體搶購邏輯實現,涉及到redis分佈式鎖以及DB和Redis的一致性問題。

從秒殺系統還引申出分佈式事務的幾種實現,二段式、三段式、補償型(TCC)、基於可靠消息服務的消息隊列實現。重點討論了這幾種的實現和區別,要求畫出基於可靠消息服務的消息隊列實現分佈式事務的架構圖,以及上游服務和下游服務如何保證消息可靠性和一致性。

  • 考察微服務架構,服務拆分的原則、RPC框架原理、配置管理(etcd)的一致性協議raft選舉原理。
  • 考察服務治理,服務限流算法,服務降級的指標和恢復指標,服務熔斷。

開放性問題,遇到印象最深的問題,以及如何解決的。

總結

騰訊很少有算法題,主要考察知識的廣度和深度,如果沒有實踐過,靠背書是很難混過去的。架構理解要求比較有深度,注重原理的考察。

又是一年求職季,在這裡,我為各位準備了一套Java程序員精選高頻面試筆試真題,來幫助大家攻下BAT的offer,感興趣的可以“轉發+轉發+轉發+私信”【資料】二字,即可免費獲取,以下是部分資料截圖

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

面經感悟:四面字節跳動、八面騰訊(附贈面試複習資料)

"

相關推薦

推薦中...