字節跳動一面面試題:
- 自我介紹
- 聊聊項目,時間大概15種左右,面試官會根據項目的一些設計點來提問,提前做好準備,別自己坑了自己
- 分佈式鎖是鎖住一部分還是整個系統,既然是鎖住整個,爲什麼不用消息隊列?
- 詳細講下怎麼用 mq 實現的最終一致性,還有怎麼利用的消息事務?
- tcp 於 http 的關係,如何基於 tcp 實現 http
- Java 打開一個 http 流不關閉的後果
- io 流是基於抽象類還是接口實現的
- 數據庫的樂觀鎖和悲觀鎖是什麼
- 樂觀鎖實現原理,講到一半,來寫一個樂觀鎖吧
- java 的類中有什麼方法
- 線程安全是什麼?
- volatile 和 synchorized 的區別
- 假如有一個類 A 和一個 類 B,這兩個類都有一個變量和一個自增操作,A 類的變量用 volatile 修飾,B 類沒有用,B 類的自增操作用 synchorized 修飾,他們都是線程安全的嗎,如果都是,那爲什麼要用 synchorized ,volatile 不是更輕量嗎,synchorized 有什麼作用。
- 智力題:島上有羣人,各自戴着紅帽子或者白帽子,但都不知道自己帽子顏色,只有知道自己帽子顏色,第二天才能出島,這時候有個人進來說了句“你們之中至少有一個人戴了頂紅帽子”,問島上的人最後的離開情況
- 算法:矩陣中的最長上升序列
字節跳動二面面試題:
- 自我介紹
- 項目介紹
- java集合框架全部介紹,從list set queue到map
- hashmap底層擴容線程安全問題
- 如果一個對象 要作爲hashmap的key需要做什麼?
- Threadlocal類以及內存泄漏
- 線程同步方式,具體每一個怎麼做的
- jvm類加載雙親委派模式,有沒有能破壞這個模式的方法?類加載整個過程解釋
- 垃圾回收算法,垃圾回收器有什麼?
- synchronized用在靜態和非靜態方法的區別
- 你做項目的思路是什麼,看過什麼源碼,什麼開源網站經常訪間,看是什麼學的的書不?
字節跳動三面面試題:
- 問項目相關的技術棧
- 懟問:爲什麼要用MongoDB?爲什麼不用MySQL?MongoDB有哪些特性,能說一下嗎?
- 文檔型數據庫有哪些?ES與MongoDB有什麼區別?爲什麼ES搜索更快?
- 數據庫都有哪些類型,關係型數據庫和NoSQL有什麼區別?
- NoSQL有哪些?他們的使用場景都說一下
- 問JVM,類加載到卸載的過程都說一下
- UML都有哪些圖?如何從這些UML的圖中來實現你的需求設計?
- 設計模式說一下,Spring源碼看過吧?那說一下設計模式是如何在Spring中體現的?
- Spring爲什麼要用簡單工廠模式?
- 微服務瞭解過吧(瞭解過一點),微服務都有什麼好處?
- 微服務都有哪些框架或中間件?
- SpringCloud都有哪些組件啊?和阿里開源的這些有什麼不同呢?如果要你用你該如何選擇?
- SOA瞭解過吧?那什麼是SOA?SOA與微服務相比有什麼優缺點?
- 如果讓你提高一個系統,你該怎麼做?如果讓你設計一個系統,你要考慮哪些方面?
- 對什麼技術比較熟悉(回答的Java多線程),JDK提供了什麼來實現線程安全啊?
- 超線程是什麼?知道嗎?
- 對未來的技術有什麼規劃?你爲什麼要學這些技術?