当前位置:网站首页>字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!

字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!

2021-09-15 08:12:56 隔壁的老郭

一面

一面就做了一道算法題,要求兩小時內完成,給了長度為N的有重複元素的數組,要求輸出第10大的數。典型的TopK問題,快排算法搞定。

算法題要注意的是合法性校驗、邊界條件以及异常的處理。另外,如果要寫測試用例,一定要保證測試覆蓋場景盡可能全。加上平時刷刷算法題,這種考核應該沒問題的。

二面

  1. 自我介紹下唄
  2. 開源項目貢獻過代碼麼?(Dubbo提過一個打印accesslog的bug算麼)
  3. 目前在部門做什麼,業務簡單介紹下,內部有哪些系統,作用和交互過程說下
  4. Dubbo踩過哪些坑,分別是怎麼解决的?(說了异常處理時業務异常捕獲的問題,自定義了一個异常攔截器)
  5. 開始進入正題,說下你對線程安全的理解(多線程訪問同一個對象,如果不需要考慮額外的同步,調用對象的行為就可以獲得正確的結果就是線程安全)
  6. 事務有哪些特性?(ACID)
  7. 怎麼理解原子性?(同一個事務下,多個操作要麼成功要麼失敗,不存在部分成功或者部分失敗的情况)
  8. 樂觀鎖和悲觀鎖的區別?(悲觀鎖假定會發生沖突,訪問的時候都要先獲得鎖,保證同一個時刻只有線程獲得鎖,讀讀也會阻塞;樂觀鎖假設不會發生沖突,只有在提交操作的時候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎麼實現的?(Java樂觀鎖通過CAS實現,悲觀鎖通過synchronize實現。mysql樂觀鎖通過MVCC,也就是版本實現,悲觀鎖可以通過select… for update加上排它鎖)
  9. HashMap為什麼不是線程安全的?(多線程操作無並發控制,順便說了在擴容的時候多線程訪問時會造成死鎖,會形成一個環,不過擴容時多線程操作形成環的問題再JDK1.8已經解决,但多線程下使用HashMap還會有一些其他問題比如數據丟失,所以多線程下不應該使用HashMap,而應該使用ConcurrentHashMap)怎麼讓HashMap變得線程安全?(Collections的synchronize方法包裝一個線程安全的Map,或者直接用ConcurrentHashMap)兩者的區別是什麼?(前者直接在put和get方法加了synchronize同步,後者采用了分段鎖以及CAS支持更高的並發)
  10. jdk1.8對ConcurrentHashMap做了哪些優化?(插入的時候如果數組元素使用了紅黑樹,取消了分段鎖設計,synchronize替代了Lock鎖)為什麼這樣優化?(避免沖突嚴重時鏈錶多長,提高查詢效率,時間複雜度從O(N)提高到O(logN))
  11. redis主從機制了解麼?怎麼實現的?
  12. 有過GC調優的經曆麼?(有點虛,答得不是很好)
  13. 有什麼想問的麼?

三面

  1. 簡單自我介紹下
  2. 監控系統怎麼做的,分為哪些模塊,模塊之間怎麼交互的?用的什麼數據庫?(MySQL)使用什麼存儲引擎,為什麼使用InnnoDB?(支持事務、聚簇索引、MVCC)
  3. 訂單錶有做拆分麼,怎麼拆的?(垂直拆分和水平拆分)
  4. 水平拆分後查詢過程描述下
  5. 如果落到某個分片的數據很大怎麼辦?(按照某種規則,比如哈希取模、range,將單張錶拆分為多張錶)
  6. 哈希取模會有什麼問題麼?(有的,數據分布不均,擴容縮容相對複雜 )
  7. 分庫分錶後怎麼解决讀寫壓力?(一主多從、多主多從)
  8. 拆分後主鍵怎麼保證惟一?(UUID、Snowflake算法)
  9. Snowflake生成的ID是全局遞增唯一麼?(不是,只是全局唯一,單機遞增)
  10. 怎麼實現全局遞增的唯一ID?(講了TDDL的一次取一批ID,然後再本地慢慢分配的做法)
  11. Mysql的索引結構說下(說了B+樹,B+樹可以對葉子結點順序查找,因為葉子結點存放了數據結點且有序)
  12. 主鍵索引和普通索引的區別(主鍵索引的葉子結點存放了整行記錄,普通索引的葉子結點存放了主鍵ID,查詢的時候需要做一次回錶查詢)一定要回錶查詢麼?(不一定,當查詢的字段剛好是索引的字段或者索引的一部分,就可以不用回錶,這也是索引覆蓋的原理)
  13. 你們系統目前的瓶頸在哪裏?
  14. 你打算怎麼優化?簡要說下你的優化思路
  15. 有什麼想問我麼?

四面

  1. 介紹下自己
  2. 為什麼要做逆向?
  3. 怎麼理解微服務?
  4. 服務治理怎麼實現的?(說了限流、壓測、監控等模塊的實現)
  5. 這個不是中間件做的事麼,為什麼你們部門做?(當時沒有單獨的中間件團隊,微服務剛搞不久,需要進行監控和性能優化)
  6. 說說Spring的生命周期吧
  7. 說說GC的過程(說了young gc和full gc的觸發條件和回收過程以及對象創建的過程)
  8. CMS GC有什麼問題?(並發清除算法,浮動垃圾,短暫停頓)
  9. 怎麼避免產生浮動垃圾?(記得有個VM參數設置可以讓掃描新生代之前進行一次young gc,但是因為gc是虛擬機自動調度的,所以不保證一定執行。但是還有參數可以讓虛擬機强制執行一次young gc)
  10. 强制young gc會有什麼問題?(STW停頓時間變長)
  11. 知道G1麼?(了解一點 )
  12. 回收過程是怎麼樣的?(young gc、並發階段、混合階段、full gc,說了Remember Set)
  13. 你提到的Remember Set底層是怎麼實現的?
  14. 有什麼想問的麼?

五面

五面是HRBP面的,和我提前預約了時間,主要聊了之前在螞蟻的實習經曆、部門在做的事情、職業發展、福利待遇等。阿裏面試官確實是具有一票否决權的,很看重你的價值觀是否match,一般都比較喜歡皮實的候選人。HR面一定要誠實,不要說謊,只要你說謊HR都會去證實,直接cut了。

  1. 之前螞蟻實習三個月怎麼不留下來?
  2. 實習的時候主管是誰?
  3. 實習做了哪些事情?(尼瑪這種也問?)
  4. 你對技術怎麼看?平時使用什麼技術棧?(阿裏HR真的是既當爹又當媽,)
  5. 最近有在研究什麼東西麼
  6. 你對SRE怎麼看
  7. 對待遇有什麼預期麼

最後

權威指南-第一本Docker書

引領完成Docker的安裝、部署、管理和擴展,讓其經曆從測試到生產的整個開發生命周期,深入了解Docker適用於什麼場景。並且這本Docker的學習權威指南介紹了其組件的基礎知識,然後用Docker構建容器和服務來完成各種任務:利用Docker為新項目建立測試環境,演示如何使用持續集成的工作流集成Docker,如何構建應用程序服務和平臺,如何使用Docker的API,如何擴展Docker。

總共包含了:簡介、安裝Docker、Docker入門、使用Docker鏡像和倉庫、在測試中使用Docker、使用Docker構建服務、使用Fig編配Docke、使用Docker API、獲得幫助和對Docker進行改進等9個章節的知識。

字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!_Java

字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!_Java_02

字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!_後端_03

字節跳動算法工程師面試經驗,2個月面試騰訊、B站、網易等11家公司的面經總結!_Java_04

關於阿裏內部都在强烈推薦使用的“K8S+Docker學習指南”—《深入淺出Kubernetes:理論+實戰》、《權威指南-第一本Docker書》,看完之後兩個字形容,愛了愛了!

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

版权声明
本文为[隔壁的老郭]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/09/20210915081033581P.html

随机推荐