[面經]字節跳動 後端 offer√

上海字節跳動提前批

這輩子第一次工作面試,沒想到就順利拿到offer了。

字節租了一整棟樓,面試體驗是真的好,專門的面試場地,裝修就特別科創公司的那種,一個個小隔間,靠牆一側有落地窗,能看到外面花圃及街景,每個隔間都配置了個空氣淨化器,反正面的很舒服。

面試官人手一個Mac直接在上面看電子簡歷,當然我也自己帶了紙質簡歷。

一面
1.自我介紹 blabla還沒講到項目就打斷了然後狂拋問題
2.兩個程序中函數的地址一樣,同時運行時會出問題麼?答到linux虛擬內存管理方式
3.可重入概念
怎麼保證線程安全
怎麼保證一個函數是線程安全的
多進程與數據庫通信怎麼保證線程安全、事務
4.進程間通訊方式
答了那幾種IPC
可以用文件來實現通信麼?可。如何通知通信結束還什麼的?定義一個通訊協議,比如某某字符代表什麼意思。說了一個技術名詞但我沒聽懂,但其實原理和我說的這個一樣。
然後說回去可以瞭解下EBS
5.登錄驗證方面是否懂。答到https基於ssl層非對稱加密去了。。。
然後又準備深入考數據庫方面的。趕緊制止,說我其實是搞嵌入式的,對桌面端做的不多,數據庫只會CRUD,然後開始介紹自己研究生研究課題的架構什麼的,總之是IOT通信方面的。面試官說他明白了,我學的很底層,考這些偏上層的對我不太公平。然後說那我考你個算法題吧。
6. 定義一個二叉樹的長度爲一個葉節點到另一個葉節點的最大長度。怎麼求一個樹的長度。
7. 智力題:每個球上標有一個數字,2N個球平均放到N個筐中,怎麼樣放才能使得:每個筐取最小數字的那個球,然後求和;這個和最大。
說會告訴2面的面試官我主要偏底層,不要再考上層的知識了。

剛剛出門沒兩小時就來通知安排二面

二面
1.自我介紹
主動出擊,講了下我目前的科研項目的架構,用到的技術。然後開始閒聊,字節的後端用到的語言呀(Go)什麼的
2. 問:如果你入職的話知道要補哪些方面的知識麼?
3. 項目中有用到什麼數據結構。答:通信中用了隊列。
4. 怎麼實現線程安全的環形緩衝區;現寫一個。然後就開始手擼面向對象的代碼了。基本就是enqueue和dequeue前加鎖。然後邊寫邊讓面試官看我博客上寫的多態的環形緩衝區。然後面試官說我寫的超出預期,本來就想看我寫個單例的就好了。(其實代碼中居然2B忘記迴環這回事了,還好代碼寫的很工整,面試官也沒細看)。
5.然後就閒聊有什麼想問的。blabla

N天后三面
按照2面的經驗,主動出擊,自我介紹時結合帶的資料條理清晰的講了自己的技能樹,重點介紹了自己研究生研究方向設計的架構的整體思路,用到的技術等,邊講邊給看準備好的論文、專利、架構圖什麼的。

然後問到的問題和後端面經要準備的差別不大。含:
線程安全和可重入、線程和進程(主動擴展到內存管理相關知識、與uCOS2的對比)
同步機制、IPC(主動擴展到中斷等中的現場安全)
文件緩存機制(主動擴展到CPU多級緩存乃至網絡上緩存、反向代理的概念)
然後說我這反向代理的知識體系是十年前的,給我聊了下動態頁面什麼的。
問對UNIX的文件IO接口的某某機制有了解沒,沒聽過的詞,說沒有。
問有UNIX、Windows下多線程編程經驗沒、讀過APUE沒,沒有,然後就不問操作系統相關了。
沒問啥TCPIP相關的,可能是覺得從我對自己研究方向的介紹中已經大概知道了我網絡方面的水平,偶爾在前面中穿插着聊了點。

問有學過數據結構和算法麼,答《數據結構與算法分析 C語言描述》學了90%。然後出算法題:
1.n個有序數組中取最小的k個元素,包括複雜度分析
先答了n個指針通過比較每次取最小的那個O(nk)的算法;然後思考後又答了使用最小堆的O(n+klogn)的,然後讓在白板上畫出算法過程,要求證明n個元素的二叉堆的構建的複雜度是O(n),忘了怎麼證。。。
2.手寫合併兩個有序數組的代碼
雙指針,沒難度。

然後就是反問問題環節了。

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