1.5年Java開發經驗面試位元組跳動總結

2020-10-18 11:01:04

寫在前面

位元組的面試官都比較好,社招面試位元組的話儘量走內推,然後HR會跟你定面試時間,現在面試大都是視訊面試,位元組一般是在牛客網上,會有一兩道演演算法題,不過不會太難,一般都是LeetCode上簡單到中等難度的題,所以大家不要把位元組的演演算法想的太難,要把資料結構的基礎足夠重視,然後靈活利用這些基本的資料結構去解決問題,然後面試官會直接從你的專案中開始聊,所以專案一定要寫自己負責的模組,以及遇到的困難怎麼去解決的等等。

經典問題回顧

  1. 在涉及支付的介面是如何保證介面的高可用,以及在遇到弱網條件下,發出的請求沒有回覆怎麼辦?
  2. 訊息佇列問題,如何保證訊息的可靠性,不被重複消費,多個相同的訊息,如何保證只消費一次?
  3. 你負責的功能模組的UV怎麼去做的?對於某些某段時間內求情次數非常大的使用者如何去處理呢?
  4. Redis基本資料型別底層是怎麼去實現的?有了解過嗎?
  5. 在瀏覽器輸入網址敲下回車後發生了什麼?從網址DNS解析到HTTP三次握手等過程
  6. 在服務的多節點情況下,如何保證請求不會被分配到壞的節點上去的?
  7. Redis分散式鎖是怎麼做到的?鎖的過期時間怎麼去設計的?如何保證當前鎖不會釋放掉其他鎖?
  8. HTTPS和HTTP的區別,HTTPS是如何防止訊息被篡改的呢?HTTPS有用到對稱加密嗎?哪些地方用到了?
  9. 寫一個演演算法題吧,給一個有序的int陣列和陣列當中元素k,輸出元素k在陣列當中出現的次數。
    例如:[2,3,4,5,5,5,6,8] k=5 output:3 要去演演算法的時間複雜度不超過O(n),也就是說不能去遍歷陣列了
  10. 好,這道寫不出來再來一道,用兩個棧實現一個佇列
    其實發現演演算法題確實不難,然後大廠都比較關注專案當中的一些極端特殊情況下怎麼去解決問題,基本都是分散式高並行的情況下去提問題。