1. 程式人生 > >今日頭條(位元組跳動)後臺開發崗(應屆生)三輪技術面試

今日頭條(位元組跳動)後臺開發崗(應屆生)三輪技術面試

今日頭條(位元組跳動)後臺開發崗(應屆生)三輪技術面試

位元組跳動特重視演算法,不怎麼關注程式語言啊,開發框架啊什麼的,比較注重考察思維能力,也會問一些基礎的作業系統網路通訊什麼的
感覺頭條的面試思路跟微軟谷歌差不多 就靠演算法題看程式設計能力

總體感覺真是 難哭了嗚嗚

第一輪視訊面試

視訊面試是通過牛客網,雙方寫的程式碼都可以實時反饋給對方

1.(專案經歷)面試官特別關注專案裡用到了哪些機器學習演算法,儘管我報的是開發崗,依然詳細詢問我模型中用到的測試集。反倒是我寫的系統用了哪些框架,哪些些技術,這些都沒有被細問
2.(手寫演算法題)第一道題是leetcode原題:Minimum Window Substring。不是特別難,但是面試官會不斷和麵試者交流 有什麼想法之類的。
3.(手寫演算法題)第二道題,調整一棵二叉樹,調整後,要求所有節點的右子樹的最大值大於左子樹的最大值。
第二題也不算太難嘛,二叉樹的題都不算太難,仔細想一下就成了,開心開心
4.(手寫演算法題)第三道題變態難:
用兩種積木,2X1型,1X1型,擺滿n行m列,有多少種擺法。

提示就是先 考慮2行m列有多少種擺法,再算n行m列,有了這個提示好做多啦幸福

第二輪視訊面試

1.(專案)繼續問自己的專案,有啥困難啊,怎麼解決啊。
2. request 到 response 發生了啥,從應用層一直往物理層描述一遍
3. (程式設計題)
3.1 實現一個類TestLimited, 類通過構造方法初始化int limitedTimes成員變數。
實現類的非靜態成員方法qdsAllowed(),要求每秒鐘qdsAllowed至多隻能被呼叫limitedTimes次

	class TestLimited{
		int limitedTimes;
		TestLimited
(int limitedTimes){ this.limitedTimes=limitedTimes; } public void qdsAllowed(){ doSomething(); } }

3.2 (繼續3.1)當有多個執行緒來呼叫qdsAllowed,上述程式如何改進
我開始都沒聽懂啥意思,第一次做這麼神奇的題想了好久心塞塞

第三輪視訊面試

第三輪竟然沒有演算法題

1.(系統設計)
設計一個微博系統,使用者之間可以互相關注,
如果 A關注了B,B關注了C
那麼 A間接關注了C且 A與C之間的度為1

如何設計系統 包括資料庫,最短路演算法都陳述一遍即可

也不算特別開放,畢竟只有一種方法是最優的

然後HR又聊了20分鐘

問問人生理想啊為啥加入位元組跳動巴拉巴拉