首先介紹一下我可個人背景,鄙人小康家庭,父母都是普通職業,供我讀書長大不容易,好在我也算爭氣,高考發揮正常,考了個還算不錯的大學,華南地區某211。今年的金三銀四本是想好好拼一把,奈何受到疫情影響,只能將自己的計劃縮減又縮減,所以第一家選擇去面試的百度,奈何三面被虐得「體無完膚」,好在自己並未氣餒,複習30天后去面試了位元組,最終4面拿下了offer。
百度三面面經
百度一面面試題:
- 自我介紹
- 聊聊專案,時間大概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)
- 懟問:為什麼要用MongoDB?為什麼不用MySQL?MongoDB有哪些特性,能說一下嗎?
- 檔案型資料庫有哪些?ES與MongoDB有什麼區別?為什麼ES搜尋更快?
- 資料庫都有哪些型別,關係型資料庫和NoSQL有什麼區別?
- NoSQL有哪些?他們的使用場景都說一下
- 問JVM,從載入到解除安裝的過程都說一下
- UML都有哪些圖?如何從這些UML的圖中來實現你的需求設計?
- 設計模式說一下,Spring原始碼看過吧?那說一下設計模式是如何在Spring中體現的?
- Spring為什麼要用簡單工廠模式?
- 微服務瞭解過吧(瞭解過一點),微服務都有什麼好處?
- 微服務都有哪些框架或中介軟體?
- SpringCloud都有哪些元件啊?和阿里開源的這些有什麼不同呢?如果要你用你該如何選擇?
- SOA瞭解過吧?那什麼是SOA?SOA與微服務相比有什麼優缺點?
- 如果讓你提高一個系統,你該怎麼做?如果讓你設計一個系統,你要考慮哪些方面?
- 對什麼技術比較熟悉(回答的Java多執行緒),JDK提供了什麼來實現執行緒安全啊?
- 超執行緒是什麼?知道嗎?(頓時懵了,啥啊,沒聽過)
- 對未來的技術有什麼規劃?你為什麼要學這些技術?
百度面試題答案+解析:
位元組跳動點評四面面經
位元組跳動點評一面面試題:
- 介紹專案(我說了用了分散式鎖,然後就開始針對分散式進行提問了)
- 分散式鎖的實現
- 分散式鎖過期解決
- 字首樹是什麼?字首樹的使用場景?
- 分散式資料庫主從複製(我說我不會分散式的,我會主從複製,然後面試官叫我講講)
- MySQL 死鎖發生的原因和解決
- MySQL 分別建立索引 a,b,c ,語句 select ...where b=x,c=x,a=x 能不能用到索引,建立聯合索引能不能用到,a=x,b>x,能不能用到,用到幾個索引?
- B 樹和 b+ 樹的區別 b+ 樹的優點
- Linux cpu 滿了怎麼排查?
- 怎麼檢視佔 cpu 最多的執行緒?
- Linux怎麼搜尋檔案中的字串,寫到另一個檔案中
- liunx 網路相關命令
- 如何判斷連結串列是否有環
- Java = 和 equals的區別
- Java contentMap 和 HashMap 什麼區別,執行緒安全怎麼實現
- HashMap 怎麼解決雜湊衝突,雜湊衝突還有什麼解決方法
- Java 執行時異常和檢查性異常
- Java 類載入
- 什麼是泛型 泛型的使用場景
- 程式導向和物件導向(一緊張差點三大特性的多型想了十秒才說出來)
- 多型是什麼?父類別如何呼叫子類的方法
- 問我看了啥書(設計模式,圖解HTTP,Modern PHP...被打斷然後開始問設計模式)
位元組跳動點評二面面試題:
- 自我介紹
- 程序排程、虛擬記憶體、程序與執行緒的區別、如何判斷程序是否發生了記憶體漏失
- 常見的設計模式
- tcp與udp區別、tcp三次握手和四次揮手、流量控制、擁塞控制(四個演演算法,問得很細)
- 分散式事務(並說一下2PC)、redis底層資料結構有哪些、持久化方式
- B+樹索引和hash索引的區別
- redis分散式鎖,其他實現方式,zookeeper如何實現的?
- 分散式的一致性,強一致性和最終一致性
- Linux如何檢視IO讀寫很高
- 叢集腦裂
- Linux中非同步IO是如何實現的,訊息佇列如何實現的?
- Redis持久化,「並行高,資料量小」和「並行低,資料量大」,redis怎麼選擇儲存模式
- Mysql主從複製原理,mysql中如何做故障轉移(容災)
- Nginx生命週期
- 疫情期間,如果讓你去調研所在城市口罩的可用量,有哪些方案?
位元組跳動點評三面面試題:
- Java資料型別,同步機制
- hashmap correnthashmap?
- Threadlocal原理?
- 講講貪婪演演算法
- 並行量很大,伺服器宕機。你會怎麼做?
- 如果線上使用者出現502錯誤你怎麼排查?
- 說一下你平時的學習方法?
- 能告訴我你的部落格地址嗎?(當然可以啊,難道我要說不告訴你嗎)
- syn和lock的區別,哪個更好?
- 怎選擇 三次握手,第三次失敗了,失敗怎麼辦?為什麼四次揮手?
- hashmap原始碼,為什麼8個節點變成紅黑樹 又為什麼到了6個節點才恢復為連結串列?(泊松分佈)
- 快取穿透,怎解決?
- 負載均衡演演算法的實現
- 輪詢和隨機的缺點?
- 分散式服務治理
- dns迭代和遞迴的區別
- 演演算法:最大回文串
位元組跳動點評HR面:
- 自我介紹,抓住介紹的點讓你詳細說說?
- 為什麼實習經歷只有一個月?
- 為什麼不去找其他的實習?
- 其他的面試流程?
- 考慮去哪裡工作,北京是唯一選擇嗎?
- 為什麼來美團?你對美團技術團隊的瞭解有多少?
位元組跳動4面面試題完整答案+解析:
被百度慘虐後,我是如何拿下位元組跳動offer?
(1)第一步是關鍵:調整心態
由於百度面試沒有通過,所以多少都受到了一些影響,所以接下來的面試中,最關鍵的一步就是要調整自己的心態,以防被自己的消極心態所影響,因為一旦從心底否定了自己,面試過程中就容易出現語言不流暢、說話沒邏輯、條理不清晰、回答不全面,這都是面試中很多面試者容易出現的「致命傷」,所以調整心態,沉著冷靜地面對是非常重要的。
(2)第二步要梳理:Java核心知識點(15天時間,讀完這本pdf)
關於第二步要梳理,實際上就是面試過程中,發現自己的知識儲量是比較雜亂的,不知道面試官下一個會問什麼,所以對於Java 的知識點有一個清晰的梳理是很有必要的。關於Java核心知識點,手上也有一本整理好的pdf檔案,需要這份檔案的可以直接我私信(學習)獲得~
這份檔案涵蓋了很多知識技術點,包括Java部分(基礎,並行,多執行緒,JVM等)、資料結構與演演算法、開源框架(Spring,Mybatis,MVC,Netty,Tomcat)、分散式(Redis,Zookeeper,kafka,RabbitMQ,負載均衡等)、微服務(SpringBoot,SpringCloud,Dubbo,Docker)。
(3)第三步要飛躍:惡補+刷題
關於第三步,就是要做到讓自己有一個質的飛躍。對於惡補和刷題這兩個方面,我自己也整理了我個人的一些資料,也是我自己的一些做法,希望具有參考性:
- 大廠面試題題庫:BAT、位元組跳動、美團、網易、拼多多、滴滴等
結尾:錦上添花
程式碼改變世界,要早日成為明日大牛,程式設計師肩上的擔子可是很重啊。趁現在開始,還不晚!
最後祝願你也能順利拿下大廠offer,共勉!
以上文章內容中所談及到的面試資料、學習資料、學習筆記等等,均可以免費分享,需要這些PDF的小夥伴,一鍵三連後;