位元組跳動 騰訊後台開發分享面試經歷 整理

2021-10-07 22:51:55 字數 3507 閱讀 9677

1. 位元組跳動

1.1 第一面:

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

1.1.1 tcp相關基礎知識

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

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

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

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

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

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

1.1.2 語言的相關基礎知識

位元組跳動的技術棧是go和python,會問一下相關語言的基礎。

1.問題1: 描述執行緒、程序以及協程的區別?

描述執行緒、程序以及協程的定義和區別,順便描述python語言中三者的使用。

2.問題2: go語言中的協程與python中的協程的區別?

主要講解go中gmp機制。

1.1.3 網路程式設計相關基礎

1.問題1: 網路io模型有哪些?

5種網路i/o模型,阻塞、非阻塞、i/o多路復用、訊號驅動io、非同步i/o。從資料從i/o裝置到核心態,核心態到程序使用者態分別描述這5種的區別。

2.問題2: i/o多路復用中select/poll/epoll的區別?

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

1.1.4 http相關基礎

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

從七層網路模型,http->tcp->ip->鏈路整個過程講解報文的產生以及傳遞的過程

2.問題2: 描述https和http的區別

從埠的區別,以及https是在ssl的基礎上以及加密等方面說明

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

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

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

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

1.1.5 快取和資料庫的基礎知識

1.問題1: 描述一下redis有哪些資料結構。

基礎的資料結構有5種,string/list/hash/set/zset,還答了高階資料結構hyperloglog/bitmap/bloomfilter/geohash。面試官還問了bloomfilter的原理以及zset的實現原理,主要講解跳躍表。

2.問題2: mysql場景題目

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

1.1.6 裸寫演算法

樹的非遞迴先序遍歷。

1.2. 第二面

1.2.1 專案經驗

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

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

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

1.2.2 裸寫演算法

回行矩陣遍歷

1.3. 第三面:

1.3.1 專案經驗

1.3.2 裸寫演算法

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

1.4. 總結

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

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

2.1 第一面

第一面是**面試,主要考察專案,通過專案提出基礎問題。時間30分鐘。

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

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

3.問訊息佇列的相關知識,接觸過kafka,問了kafka中訊息可以被多個消費者消費嗎?;以及選舉機制和hw機制。

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

5.資料庫和redis相關問題,資料庫考察索引的原理以及幾種事務的區別。redis問資料結構,延時佇列如何實現,分布式鎖原理。

2.2 第二面 筆試

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

2.3 第三面、第四面

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

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

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

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

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

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

第五面和第六面是面委,技術面試,難度非常大。考察系統設計和架構設計。要求知識的深度理解

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

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

3.考察微服務架構,服務拆分的原則、rpc框架原理、配置管理(etcd)的一致性協議raft選舉原理。

4.考察服務治理,服務限流演算法,服務降級的指標和恢復指標,服務熔斷。

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

2.5 總結

位元組跳動 騰訊後台開發面經分享 2019 5

問題1 請詳細描述三次握手和四次揮手的過程 要求熟悉三次握手和四次揮手的機制,要求畫出狀態圖。問題2 四次揮手中time wait狀態存在的目的是什麼?這個問題是畫出四次揮手狀態圖,會引申問你。不排除還會問為什麼四次揮手是四次不是二次等問題。最好是把相關問題均掌握。問題3 tcp是通過什麼機制保障可...

位元組跳動後台開發實習面試經驗

位元組跳動一面 arraylist和linkedlist的區別 物件導向的三個特性,重寫和過載各是什麼意思 建索引的語法 mysql的4種連線 mysql索引有哪幾類,有什麼優缺點 手寫sql,現在有個使用者活躍表t,這個表的作用是用來計算使用者留存率的。裡面有兩個欄位uid 使用者id 和date...

位元組跳動 AI lab後端開發 面試 涼經)

3.7號投的簡歷,3.8hr 談面試 約3.14 5點 一面 50min 1.首先你的簡歷上面寫了兩個小專案,來說一下你認為最貼近後端開發這個的那個專案。複習了,詳細講了,也沒有問問題 2.你是乙個 acmer,談一談acm,然後談到工作室負責人,負責做什麼 我是topcoder總負責人 3.開始進...