噢耶!位元組後端Offer,拿到了!

發表於2023-09-26

很多同學反饋多搞點面經,說來就來!

今天分享一位拿到位元組跳動實習Offer的面經,沒錯,Java轉Go

別問我選Java還是選Go,成年人不做選擇題。先搞定一個語言,再學第二語言從來不是難事。

無論學哪個,你要做的事情是先學起來:想都是問題,學才有答案!

面經分享

本文沒有按照一面、二面、三面流水賬的形式整理。

而是把面試中碰到的問題,按種類劃分彙總:演演算法題、資料結構、作業系統、資料庫、快取、計網、場景題等等,這樣對大家應該更有幫助!

一、演演算法題:

  1. 給定一個字串abcdabgh,給個字元a,隨機返回a下標,比如這個是0 4。要求返回的機率必須一樣,空間複雜度要求O1即不能開任何空間儲存下標,並且只能遍歷一次。
  2. 給定n個骰子,和為k的機率,不能用回溯。
  3. 給一個數字比如234,給個陣列比如{2,3,7},找出第一個不大於234的數,比如這個是233,有幾種情況我記得是,這裡用到了有序表我寫的時候。

二、八股文

不全,比較簡單的我就沒整理了...

資料結構:

  1. 堆和樹的區別?應用場景?
  2. 二叉搜尋樹是什麼?

作業系統:

  1. 程式之間的通訊方式?寫個死鎖?怎麼解決?
  2. 作業系統記憶體滿了怎麼辦?如何回收?有什麼影響?
  3. 什麼是殭屍程式?應該怎麼去操作?
  4. 為什麼會有執行緒安全的問題,如何解決?
  5. 說一下樂觀鎖和悲觀鎖?說一下CAS?aba問題是什麼?如何解決?

MySQL:

  1. 索引構成?(B+樹)索引最佳化?給個sql讓判斷走索引的情況?
  2. 什麼是慢sql,如何查詢,如何最佳化?
  3. 三大日誌,我記得好像有個問題是redolog寫進去了,但是有個bin log沒寫進去該怎麼辦?(具體的我忘了,我沒回答好)講write還有flush區別?redo log刷盤時機?三大日誌的執行順序?
  4. mysql的事務隔離級別?各自解決了什麼問題?mvcc的流程

Redis:

  1. 問了zset的底層?為什麼不用紅黑樹?(這是我自己引得,我傻了自己說了一句沒用紅黑樹,用的是跳錶)
  2. redis裡面的命令列比如setnx和setex 還有zset裡面的
  3. redis的key有大小的限制嗎?有什麼影響?怎麼辦?
  4. redis的記憶體淘汰策略?(面試的時候一直想不起來 一直背了半天旁路快取那些東西 我以為涼了的)
  5. 根據score查member的時間複雜度?反過來根據member查score時間複雜度?

計算機網路:

  1. http常見的方法和狀態碼有哪些?
  2. 502是什麼錯誤?如何排查問題?
  3. 講一下反向代理?

場景設計:

  1. 敏感詞庫的設計,要求增刪改查敏感詞。敏感詞文字匹配,敏感詞一萬個,文字長度20-10000這樣子。
  2. trie樹什麼的都回答了,開什麼幾個執行緒這樣子,我也是各種瞎說,後面問我在這裡面怎麼儲存持久化,給出方法,redis裡面儲存如果當機了怎麼辦有個節點?這一塊真的虛,我也不知道怎麼辦,感覺面試官很厲害,我給的方案他好像都否定了,說我的方案一天當機幾分鐘怎麼可能行?

三、專案和實習

也有一些閒聊沒有寫進來...

  1. 微信掃碼登入流程?後面的原理你瞭解嗎?(準備了很久的Oauth2總算碰到了開心)csrf是什麼?怎麼解決的?
  2. 專案難點(之前登入日誌是同步寫入庫的 後來為了提升效率加入了佇列 先寫佇列後消費入庫 做解耦 但是佇列用了同步操作 有一次mq掛了 導致登入服務不可用 這種是不可接受的 記日誌不能影響登入 所以將其改為了非同步方式)
  3. 訂單30分鐘取消,延時訊息這裡(這個是我自己引申的,我包裝了一下,我把mq的18個佇列講了一下,也講了一下kafka的時間輪)
  4. 你實習用的什麼語言?go的協程裡面出現panic怎麼辦?defer講一下?gmp模型瞭解嗎?

一起進步

獨行難,眾行易,如果你想和我們一起組隊學Go,歡迎加入我們的小圈子一起刻意練習,結伴成長!

微訊號:wangzhongyang1993

公眾號:程式設計師升職加薪之旅

也歡迎大家關注我的賬號,點贊、留言、轉發。你的支援,是我更文的最大動力!

相關文章