字節跳動提前批後臺,一面面經

今天下午面了字節跳動飛書後臺的一面,一共面了差不多一個半小時,面試官很耐心,問的有深度有廣度。

首先是一段自我介紹

然後問的操作系統和組成原理相關的:

1、線程和進程的區別             答:進程有獨立資源,線程是進程的子結構,共享一個進程的資源

2、設計線程和進程的目的      答:線程主要是爲了充分利用CPU資源,在耗時操作的時候掛起I/O線程,CPU可以計算其他線程

3、在什麼情景下使用多線程什麼情景下使用多進程 (I/O密集型場景和計算密集型場景)答:想了半天,I/O密集型場景用多線程,不知道對不對

4、你知道哪些進程調度算法            答:FIFO、短作業優先、優先級調度、多隊列優先級調度

5、死鎖瞭解嗎,是怎麼產生的,如果發生了死鎖,操作系統會怎麼做    答:線程互相爭搶資源,系統有死鎖檢測,根據資源需求矩陣,成環意味着發生死鎖,通過釋放資源來解鎖,搶佔式。

6、堆和棧的區別瞭解嗎  答:不太瞭解,棧空間主要儲存運行時申請的變量和函數調用,堆放一些固定量和全局量(不知道對不對)

7、堆在內存空間中和棧的位置關係    答:好像堆在下面

8、棧分配空間是從低地址向高地址還是高地址向低地址   答:棧應該是向高地址分配(大小端問題,確實沒複習到,盲點)

9、併發控制   (講了一下鎖機制,結合自己的項目講了一下讀寫鎖)

這一段有些問題問的很籠統,在你回答完後面試官會就細節繼續問下去,很考驗知識廣度和理解

接下來問了一些網絡相關的

1、5層和7層網絡模型說一下 答:OSI五層和七層

2、TCP是哪一層的   答:傳輸層

3、TCP數據包有哪些字段 答:記得有端口號、序列號其他不記得了

4、講一下TCP建立連接和釋放連接的過程  答:三次握手、四次揮手

5、TCP擁塞控制算法瞭解嗎    答:慢啓動、擁塞避免

6、TCP是怎麼知道網絡擁塞了的  答:應該是根據超時重傳來檢測,底層可能是ICMP

問完網絡接下來就是問編程語言相關了,飛書團隊好像技術棧是python和goland,而我說自己碩士期間主要用的python就主要問我python相關

上來先問了幾個python2.7的問題,一下子就蒙了,趕緊說我用的都是3.5之後

然後問了一個ASCII和Unicode的區別,Unicode和UTF8什麼關係   答:ASCII是一個字節的編碼表,0-255對應字符,另外兩個不太瞭解

3、迭代器和生成器瞭解嗎  答:不太瞭解

4、GIL瞭解嗎      答:全局鎖,不能充分發揮多核算力,需要多開CPython解釋器解決問題,等於多進程

5、dict的底層是怎麼實現的    答:hashtable實現,2/3裝填因子會拉長大小,衝突後採用一個僞隨機探查法(記不清了)

6、有沒有處理過併發    答:簡單結合項目說了一下

7、你用python的時候有進行過性能優化嗎  答:吹了兩個點,一個是for改矩陣運算 還有一個是做實驗的時候用多線程讀取訓練數據。

最後手撕代碼,說實話面到這裏緊張的很,也很疲憊,導致後面發揮失常

問題是leetcode原題 543 二叉樹最長路徑,我正好沒刷過

一開始講了一下思路,計算葉子節點間的最長路徑即可,想當然認爲最長路徑必然經過根,快寫完了面試官說你這裏好像有問題,我才反應過來,後面一下子就蒙了。

幾分鐘後面試官給提示,其實已經是明示了,問我一棵樹和它左右子樹的最長路徑之間有什麼關係,我才反應過來,寫完之後。

面試官給了一個例子,然後構建一下這個樹,並跑一下寫好的代碼,用中序+前序的方法構建了,最後跑出來結果還差1,邊界條件差了一個地方。

整個手撕代碼過程磕磕絆絆的,非常差,對二面不報太大期望了,最後面試官問我有啥想問他的,然後就說有結果會7天內通知。

總結一下,基礎知識要牢固,特別是很多細節,不能浮於表面,算法也要多刷,前面面試50多分鐘再來考算法真的壓力很大,再來一道陌生題可能當場就炸了,可能也是面試經驗不足吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章