位元組跳動視訊編解碼面經

ljh_shuai發表於2019-11-20

引言

本文主要是記錄一下面試位元組跳動的經歷。

三四月份投了位元組跳動的實習(圖形影像崗位),然後hr打電話過來問了一下會不會opengl,c++,shador,當時只會一點c++,其他兩個都不會,也就直接被拒了。

七月初內推了位元組跳動的提前批,因為內推沒有具體的崗位,hr又打電話問要不要考慮一下圖形影像崗,我說實習投過這個崗位不合適,不會opengl和shador,然後hr就說秋招更看重基礎。我當時想著能進去就不錯了,管他哪個崗呢,就同意了面試。

後來面試也就是問了C++的一些東西和影像濾波的一些東西,最後讓我用陣列實現一下佇列的資料結構。回答的不是很好,所以就掛了。具體的面試問題我也沒記錄。

接下來就是正式批面試音視訊編解碼崗位了。

一面

面試是視訊面試,上來就有三個面試官進入房間,還好都沒開攝像頭。面試過程中主要是一個面試官在問。

首先是自我介紹。。。

然後討論了一下專案的細節。。。

問:說一下SPS和PPS的區別,
答:sps是序列的引數集,pps是影像的引數集,每一幀都有自己的pps。(感覺跟沒說差不多)

問:sizeof(只有虛擬函式的類) 是多少
答:是4,因為要有虛擬函式表指標,本來sizeof一個什麼都沒有的類是1嘛(自己挖坑)

問:為什麼sizeof空類是1
答:(難道我要說面試之前剛看過?)額,總得有個標誌啥的吧(面試官表示嗯嗯,也差不多,又給我詳細解釋了一下)

問:說一下C++的虛擬函式
答:(背了一下面經裡面的答案)

問:說一下四種cast
答:(按照面經背了一下,但是回答的很混亂,因為自己也不是很理解)

問:我看你簡歷裡面有寫會C++和Python,那說一下Python裡的垃圾回收機制
答:我就知道一種垃圾回收機制,就是引用計數(然後說了一下引用計數,扯到了迴圈引用的問題上)

問:那迴圈引用怎麼解決呢
答:(想了一會,自己瞎說了一下)假如一個物件引用另一個物件,我就去檢測一下另一個物件是否引用了這個物件(然後在面試官的提示下說出了智慧指標)

問:Tcp三次握手
答:就這一方傳送個資料包請求通訊,另一方同意通訊返回一個資料包,這一方再返回一個ack(後來想想這個回答跟沒說差不多,主要是我複習的時候覺得這個崗位應該不會問網路方面的東西,面經裡面有我還特意沒看)

問:tcp的滑動視窗有了解嗎
答:(說了兩句就說不下去了,就只好說不清楚)

問:tcp和udp的區別
答:(為什麼還問網路啊,好後悔看面經的時候沒背)tcp是有連線的,udp是無連線的,tcp是可靠的,udp是不可靠的(就答出來這兩點)

問:dts pts的區別
答:什麼dts pts?(主要因為說的是英文簡稱,要是說中文顯示時間戳和解碼時間戳我還能扯一點)

問:從C++原始檔到可執行程式有幾步
答:首先是預處理,然後編譯,(少答了一步彙編),然後連結。

問:最後來做個題吧:最長遞增子序列,用自己的ide編寫程式碼
答:之前沒做過這個,做了有二十分鐘吧沒做出來,也就說了一種思路,然後面試官舉了個反例,然後我就很失落。面試官還跟我說,沒事的同學(面試官人真好)。

整個面試大概面了五十分鐘吧。結束面試,我靠在椅子上陷入了深深的思考,滿腦子就是涼涼。過了會電話就響了,說準備等會二面,真是太驚喜了,等了會又打電話說二面面試官太忙了明天再面。就這樣結束了一面。

後面想了一下,能通過一面,主要還是專案經歷還可以,展現了自己的視訊編碼專業能力,而且C++的基礎問題還行。最後的演算法題雖然沒做出了但是也說出了自己的思路(雖然是錯的)本來演算法題沒思路都準備放棄了,還好自己沒放棄,所以大家在面試的時候一定要堅持住,不要覺得自己沒希望了就放棄。當然主要還是運氣好,面試官很nice。

二面

第二天二面,面試大概持續了半個多小時,面試官全程微笑,很親切。

上來還是自我介紹

然後問了一下Hevc相比H264的改進,這個問題我回答的還可以,主要就說了一下塊劃分已經幀內預測的區別,畢竟幀間和濾波的話也不是很瞭解。

如果給你offer,現在能來實習嗎?這個我需要跟導師商量一下。

然後讓我看了兩段程式碼,找出程式碼中的錯誤,第一段是一個函式,在函式內部改變了引數的值,但是實參值不會改變,與函式的目標不符。第二段也是在函式內部取變數的地址,然後返回指標,這樣離開函式後變數就被銷燬了,指標就是空懸指標了。但是第二段程式碼我當時是沒看出來有什麼錯誤,面試官直接說了答案。

寫一個執行緒安全的單例模式,(這個題面經上也有,但是我沒有看)寫了半天寫的也不對。

寫一個記憶體移動函式。我在面經上看過記憶體copy函式,就問了一下跟記憶體拷貝有什麼不一樣嗎,讓我思考了一會告訴我要考慮重疊的情況,然後就順利地寫出來了(畢竟看過)。

虛基類的作用?菱形繼承的時候巴拉巴拉。。。(不得不說運氣不錯,面試前才看過)

建構函式、解構函式能是虛擬函式嗎?不能,巴拉巴拉。。。

有什麼想問的嗎?問了一下主要業務,然後又問了一下公司的地址。

最後面試官說了一句希望不久的將來能見到你(聽了很興奮,面試官真的太nice了)。

三面

二面結束兩天後三面,剛開始以為是hr面,問了一下還是技術面。總共面了大概二十分鐘吧,還比較輕鬆。

依舊是自我介紹。。。

問:前兩面感覺如何,回答好的地方,不好的地方
答:編碼方面答的比較好,網路方面答的不太好。

問:職業規劃
答:先學習公司文化,跟同事處好關係,然後提升自己的技術,努力承擔更多的業務。。。(反正大概就是這意思)

問:專案中遇到的難點,一直無法解決的問題
答:。。。

問:寫道程式碼題吧:判斷連結串列是否有環。你要定義連結串列的資料結構,並寫一個函式返回bool型別表示連結串列是否有環。
答:(這真的是很簡單的題了,之前看過,很輕鬆寫出來了)

問:有什麼想問我的
答:您的職位?主要業務?我進去主要做什麼?

三面的面試官也很親切,全程微笑,面試體驗很好。三面結束是星期四,過了週末,週二就發了意向書,位元組跳動的面試效率是真的高。

總結

這個崗位的話主要有三個能力要求吧:視訊編碼,c++以及網路。能通過面試感覺還是運氣比較好,畢竟剛開始面試很多知識還都沒複習完。希望大家也都能有個好運氣,面試加油!

相關文章