前言
本篇題材來自我朋友的朋友,他在最近的社招中拿到美團的Offer,整體思路和面試題目由面試本人提供
由于作者面試過程中高度緊張,本文中只列出了自己還記得的部分題目。
一面:
- 自我介紹
- HashMap,ConcurrentHashMap與LinkedHashMap的區(qū)別
- 如何在多線程環(huán)境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加鎖。
- 多線程并發(fā)的同步實現(xiàn),有兩個方法,每個方法里有a部分代碼和b部分代碼,我要讓兩個線程分別執(zhí)行兩個方法,并且讓他們運行完a部分代碼再一起向下執(zhí)行,如何實現(xiàn)。
- TCP連接中的三次握手和四次揮手,四次揮手的最后一個ack的作用是什么,為什么要time wait,為什么是2msl。
- ReetrantLock和synchronized的區(qū)別。
- Java有哪些悲觀鎖的實現(xiàn)?
- Java有哪些類實現(xiàn)了樂觀鎖?
- java里面的同步鎖了解嗎?Countdownlauch和Cylicbarrior的區(qū)別,分別在什么應用場景下使用
- JVM的內(nèi)存結(jié)構?哪些是共享的,哪些是線程私有的?Java虛擬機棧里面存放的是什么?
- 如何自己實現(xiàn)一個線程池讓別人使用?
- 哪些情況會觸發(fā)Java的類加載?
- 手寫代碼:快速排序、單例模式,化一個工廠和裝飾者模式的UML類圖
- AOP的實現(xiàn)原理?
- Java鎖有哪幾種?可重入鎖和不可重入鎖的區(qū)別?
- Lock和synchronized的區(qū)別?它們都是可重入鎖嗎?哪個效率更高?
二面:
- 線程池有哪些參數(shù)?分別有什么用?如果任務數(shù)超過的核心線程數(shù),會發(fā)生什么?阻塞隊列大小是多少?
- 數(shù)據(jù)庫連接池介紹下,底層實現(xiàn)說下
- hashset底層實現(xiàn),hashmap的put操作過程
- 說說HaspMap底層原理?再說說它跟HaspTable和ConcurrentHashMap他們之間的相同點和不同點?
- 說說B+樹和B樹的區(qū)別,優(yōu)缺點等?
- 算法題,對一個鏈表進行歸并排序,鏈表可能有環(huán)
- 怎么實現(xiàn)一個線程安全的計數(shù)器?
- 原子類AtomicInteger實現(xiàn)原理是什么?和你設計的計數(shù)器優(yōu)劣比較?CAS怎么實現(xiàn)原子操作的?
- Java中的鎖有什么?synchronized與Lock的區(qū)別?公平鎖和非公平底層怎么實現(xiàn)的?AQS原理詳細介紹一下?
- JVM中的內(nèi)存區(qū)域劃分,堆的分代,為什么分代, 垃圾回收算法,垃圾回收器
- 如何實現(xiàn)進程間特定場景下的高效通信, 問了存儲相關的問題。
- MySQL索引類型, 底層的數(shù)據(jù)結(jié)構
- 你了解哪些收集器?CMS和G1。詳細談談G1的優(yōu)點
三面:
- 自己項目中的總結(jié)的并發(fā)經(jīng)驗
- 說說MySQL的鎖并發(fā)?加鎖的機制是什么?
- 高并發(fā)場景下如何防止死鎖,保證數(shù)據(jù)的一致性?
- 集群和負載均衡的算法與實現(xiàn)?
- 說說分庫與分表設計?
- 分庫分表帶來的分布式困境與對應之策有哪些?
- Redis和Setnx命令是如何實現(xiàn)分布式鎖的?使用Redis怎么進行異步隊列?會有什么缺點?
- 緩存擊穿的概念和解決方案?
- Redis的數(shù)據(jù)結(jié)構? 線程模型? Redis的數(shù)據(jù)淘汰機制?
- Redis的數(shù)據(jù)一致性問題
- MQ底層原理的實現(xiàn)?
- 阻塞隊列不用Java提供的該怎么實現(xiàn)?
- 講講負載均衡的原理?
- 如何實現(xiàn)高并發(fā)環(huán)境下的削峰、限流?
HR面(略)
總結(jié)
面試建議是,一定要自信,敢于表達,面試的時候我們對知識的掌握有時候很難面面俱到,把自己的思路說出來,而不是直接告訴面試官自己不懂,這也是可以加分的。
備戰(zhàn)面試,刷題是必不可少的。小編這里也是拿到這位朋友備戰(zhàn)面試的資料,其中包括一些面試題和視頻 可以提供給需要的朋友參考。有需要的朋友幫忙轉(zhuǎn)發(fā)一下文章,后臺私信【面試資料】就可以了
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。