開篇:說清緣由首先介紹一下我的個人背景,,鄙人小康家庭,,父母都是普通職業(yè),供我讀書長大不容易,,好在我也算爭氣,,高考發(fā)揮正常,考了個還算不錯的大學,,華南地區(qū)某211,。今年的金三銀四本是想好好拼一把,奈何受到疫情影響,,只能將自己的計劃縮減又縮減,,所以第一家選擇去面試的字節(jié)跳動,奈何三面被虐得“體無完膚”,,好在自己并未氣餒,,復習15天后去面試了美團,最終4面拿下了offer,。 文章以下內(nèi)容主要是分享面經(jīng)和個人的學習建議,,內(nèi)容涉及到很多PDF文檔(面試題庫、學習筆記,、實戰(zhàn)文檔,、腦圖等),由于文章有限,需要這些文檔的,,直接(點擊我)免費領(lǐng)取
字節(jié)跳動三面面經(jīng)字節(jié)跳動一面面試題: 自我介紹 聊聊項目,,時間大概15種左右,面試官會根據(jù)項目的一些設(shè)計點來提問,,提前做好準備,,別自己坑了自己 分布式鎖是鎖住一部分還是整個系統(tǒng),既然是鎖住整個,,為什么不用消息隊列,? 詳細講下怎么用 mq 實現(xiàn)的最終一致性,還有怎么利用的消息事務(wù),? tcp 于 http 的關(guān)系,,如何基于 tcp 實現(xiàn) http Java 打開一個 http 流不關(guān)閉的后果 io 流是基于抽象類還是接口實現(xiàn)的 數(shù)據(jù)庫的樂觀鎖和悲觀鎖是什么 樂觀鎖實現(xiàn)原理,講到一半,,來寫一個樂觀鎖吧 java 的類中有什么方法 線程安全是什么? volatile 和 synchorized 的區(qū)別 假如有一個類 A 和一個 類 B,,這兩個類都有一個變量和一個自增操作,A 類的變量用 volatile 修飾,,B 類沒有用,,B 類的自增操作用 synchorized 修飾,他們都是線程安全的嗎,,如果都是,,那為什么要用 synchorized ,volatile 不是更輕量嗎,,synchorized 有什么作用,。 智力題:島上有群人,各自戴著紅帽子或者白帽子,,但都不知道自己帽子顏色,,只有知道自己帽子顏色,第二天才能出島,,這時候有個人進來說了句“你們之中至少有一個人戴了頂紅帽子”,,問島上的人最后的離開情況 算法:矩陣中的最長上升序列
字節(jié)跳動二面面試題: 自我介紹 項目介紹 java集合框架全部介紹,從list set queue到map hashmap底層擴容線程安全問題 如果一個對象 要作為hashmap的key需要做什么,? Threadlocal類以及內(nèi)存泄漏 線程同步方式,具體每一個怎么做的 jvm類加載雙親委派模式,,有沒有能破壞這個模式的方法,?類加載整個過程解釋 垃圾回收算法,垃圾回收器有什么,? synchronized用在靜態(tài)和非靜態(tài)方法的區(qū)別 你做項目的思路是什么,看過什么源碼,,什么開源網(wǎng)站經(jīng)常訪間,看是什么學的的書不?
字節(jié)跳動三面面試題: 問項目相關(guān)的技術(shù)棧(我回答的是MongoDB) 懟問:為什么要用MongoDB?為什么不用MySQL,?MongoDB有哪些特性,,能說一下嗎? 文檔型數(shù)據(jù)庫有哪些,?ES與MongoDB有什么區(qū)別,?為什么ES搜索更快? 數(shù)據(jù)庫都有哪些類型,,關(guān)系型數(shù)據(jù)庫和NoSQL有什么區(qū)別,? NoSQL有哪些?他們的使用場景都說一下 問JVM,,類加載到卸載的過程都說一下 UML都有哪些圖,?如何從這些UML的圖中來實現(xiàn)你的需求設(shè)計? 設(shè)計模式說一下,,Spring源碼看過吧,?那說一下設(shè)計模式是如何在Spring中體現(xiàn)的? Spring為什么要用簡單工廠模式,? 微服務(wù)了解過吧(了解過一點),,微服務(wù)都有什么好處? 微服務(wù)都有哪些框架或中間件,? SpringCloud都有哪些組件?。亢桶⒗镩_源的這些有什么不同呢,?如果要你用你該如何選擇,? SOA了解過吧?那什么是SOA,?SOA與微服務(wù)相比有什么優(yōu)缺點,? 如果讓你提高一個系統(tǒng),你該怎么做,?如果讓你設(shè)計一個系統(tǒng),,你要考慮哪些方面? 對什么技術(shù)比較熟悉(回答的Java多線程),,JDK提供了什么來實現(xiàn)線程安全?。?/p> 超線程是什么,?知道嗎,?(頓時懵了,啥啊,,沒聽過) 對未來的技術(shù)有什么規(guī)劃,?你為什么要學這些技術(shù)?
字節(jié)跳動面試題答案+解析: 美團點評四面面經(jīng)美團點評一面面試題: 介紹項目(我說了用了分布式鎖,然后就開始針對分布式進行提問了) 分布式鎖的實現(xiàn) 分布式鎖過期解決 前綴樹是什么,?前綴樹的使用場景,? 分布式數(shù)據(jù)庫主從復制(我說我不會分布式的,我會主從復制,,然后面試官叫我講講) MySQL 死鎖發(fā)生的原因和解決 MySQL 分別建立索引 a,b,c ,,語句 select ...where b=x,c=x,a=x 能不能用到索引,建立聯(lián)合索引能不能用到,,a=x,b>x,,能不能用到,用到幾個索引,? B 樹和 b+ 樹的區(qū)別 b+ 樹的優(yōu)點 Linux cpu 滿了怎么排查,? 怎么查看占 cpu 最多的線程? Linux怎么搜索文件中的字符串,,寫到另一個文件中 liunx 網(wǎng)絡(luò)相關(guān)命令 如何判斷鏈表是否有環(huán) Java = 和 equals的區(qū)別 Java contentMap 和 HashMap 什么區(qū)別,,線程安全怎么實現(xiàn) HashMap 怎么解決哈希沖突,哈希沖突還有什么解決方法 Java 運行時異常和檢查性異常 Java 類加載 什么是泛型 泛型的使用場景 面向過程和面向?qū)ο螅ㄒ痪o張差點三大特性的多態(tài)想了十秒才說出來) 多態(tài)是什么,?父類如何調(diào)用子類的方法 問我看了啥書(設(shè)計模式,,圖解HTTP,Modern PHP...被打斷然后開始問設(shè)計模式)
美團點評二面面試題: 自我介紹 進程調(diào)度,、虛擬內(nèi)存,、進程與線程的區(qū)別、如何判斷進程是否發(fā)生了內(nèi)存泄漏 常見的設(shè)計模式 tcp與udp區(qū)別,、tcp三次握手和四次揮手,、流量控制、擁塞控制(四個算法,,問得很細) 分布式事務(wù)(并說一下2PC),、redis底層數(shù)據(jù)結(jié)構(gòu)有哪些、持久化方式 B+樹索引和hash索引的區(qū)別 redis分布式鎖,,其他實現(xiàn)方式,,zookeeper如何實現(xiàn)的? 分布式的一致性,,強一致性和最終一致性 Linux如何查看IO讀寫很高 集群腦裂 Linux中異步IO是如何實現(xiàn)的,,消息隊列如何實現(xiàn)的? Redis持久化,,“并發(fā)高,,數(shù)據(jù)量小”和“并發(fā)低,數(shù)據(jù)量大”,,redis怎么選擇存儲模式 Mysql主從復制原理,mysql中如何做故障轉(zhuǎn)移(容災) Nginx生命周期 疫情期間,如果讓你去調(diào)研所在城市口罩的可用量,,有哪些方案,?
美團點評三面面試題: Java數(shù)據(jù)類型,同步機制 hashmap correnthashmap,? Threadlocal原理,? 講講貪心算法 并發(fā)量很大,服務(wù)器宕機,。你會怎么做,? 如果線上用戶出現(xiàn)502錯誤你怎么排查? 說一下你平時的學習方法,? 能告訴我你的博客地址嗎,?(當然可以啊,難道我要說不告訴你嗎) syn和lock的區(qū)別,,哪個更好,? 怎選擇 三次握手,第三次失敗了,,失敗怎么辦,?為什么四次揮手? hashmap源碼,,為什么8個節(jié)點變成紅黑樹 又為什么到了6個節(jié)點才恢復為鏈表,?(泊松分布) 緩存穿透,怎解決,? 負載均衡算法的實現(xiàn) 輪詢和隨機的缺點,? 分布式服務(wù)治理 dns迭代和遞歸的區(qū)別 算法:最大回文串
美團點評HR面: 美團4面面試題完整答案+解析: 被字節(jié)慘虐后,我是如何拿下美團offer,?(1)第一步是關(guān)鍵:調(diào)整心態(tài) 由于字節(jié)跳動面試沒有通過,,所以多少都受到了一些影響,所以接下來的面試中,,最關(guān)鍵的一步就是要調(diào)整自己的心態(tài),,以防被自己的消極心態(tài)所影響,,因為一旦從心底否定了自己,面試過程中就容易出現(xiàn)語言不流暢,、說話沒邏輯,、條理不清晰、回答不全面,,這都是面試中很多面試者容易出現(xiàn)的“致命傷”,,所以調(diào)整心態(tài),沉著冷靜地面對是非常重要的,。 (2)第二步要梳理:Java核心知識點(15天時間,,讀完這本pdf) 關(guān)于第二步要梳理,實際上就是面試過程中,,發(fā)現(xiàn)自己的知識儲量是比較雜亂的,,不知道面試官下一個會問什么,所以對于Java 的知識點有一個清晰的梳理是很有必要的,。關(guān)于Java核心知識點,,手上也有一本整理好的pdf文檔,需要這份文檔的可以直接我私信獲得~ 這份文檔涵蓋了很多知識技術(shù)點,,包括Java部分(基礎(chǔ),,并發(fā),多線程,,JVM等),、數(shù)據(jù)結(jié)構(gòu)與算法、開源框架(Spring,,Mybatis,,MVC,Netty,,Tomcat),、分布式(Redis,Zookeeper,,kafka,,RabbitMQ,負載均衡等),、微服務(wù)(SpringBoot,,SpringCloud,Dubbo,,Docker),。 (3)第三步要飛躍:惡補+刷題 關(guān)于第三步,就是要做到讓自己有一個質(zhì)的飛躍,。對于惡補和刷題這兩個方面,,我自己也整理了我個人的一些資料,,也是我自己的一些做法,希望具有參考性: 大廠面試題題庫:BAT,、字節(jié)跳動,、美團,、網(wǎng)易,、拼多多、滴滴等
結(jié)尾:錦上添花代碼改變世界,,要早日成為明日大牛,,程序員肩上的擔子可是很重啊。趁現(xiàn)在開始,,還不晚,! 最后祝愿你也能順利拿下大廠offer,共勉,!
|