最新騰訊、攜程、美團(tuán)面筋-(尾部附帶答案)

騰訊 CGIG
3.16 一面 30min
正常八股,難度簡單。
redis 基本的數(shù)據(jù)結(jié)構(gòu);
redis 持久化策略;
JAVA AQS 基本介紹以及 jdk 中的應(yīng)用;
數(shù)據(jù)庫索引結(jié)構(gòu);
常見的排序算法,jdk Arrays.sort() 是怎么做的選型;
手寫單例、手寫鏈表翻轉(zhuǎn);
3.21 二面 60min
進(jìn)階八股,難度中等。
項(xiàng)目中 Jmeter 壓測是怎么做的;
壓測的時(shí)候前幾次值一般偏低,知道是什么原因嗎(懶加載);
數(shù)據(jù)庫索引底層結(jié)構(gòu);
最左前綴原則原理,如何利用好這個(gè)原則;
進(jìn)程間通信,線程間通信,基本原理和應(yīng)用,JAVA 中的對應(yīng)實(shí)現(xiàn);
UDP 和 TCP 的區(qū)別;
TCP 面向流,那怎么解決粘包問題;
手寫二分查找;
3.25 三面 40min
變數(shù)來了,面試官竟然給我的項(xiàng)目提前做了 Code Review,受寵若驚的同時(shí)也暗自感到不妙...
這個(gè)在緩存中找到用戶的日志設(shè)置成 INFO 級別,有什么問題(啊這,應(yīng)該是和日志級別有關(guān)吧,以為他要很底層的答案,只說自己木看過源碼);
這個(gè)異常種類為啥是 RuntimeException(阿sir,這個(gè)類是我為了試試 Spring 異常處理注解寫的測試類啊...);
你這個(gè)項(xiàng)目中緩存數(shù)據(jù)庫雙寫一致怎么保證的,為什么不先更新數(shù)據(jù)庫再更新緩存而是直接讓緩存失效?從性能方面考慮下(這時(shí)候有點(diǎn)暈,其實(shí)能答出來的...);
全程腦子里都是 ???,可能是也沒想到大廠的一線開發(fā)人員會(huì)這么仔細(xì)地看我一個(gè)輪子項(xiàng)目的代碼吧 w(?Д?)w...
美團(tuán) 點(diǎn)評
筆試 3.13 120min
一道 100%,一道 45%,一道 81%;
一面 3.19 30min
面相和藹的面試官,語氣沉穩(wěn),相當(dāng)好的一次面試體驗(yàn)。
項(xiàng)目中數(shù)據(jù)庫、緩存雙寫一致是用的什么方案,有沒有想過如果 redis 操作失敗了怎么解決;
volatile 關(guān)鍵字原理,印象中 jdk 哪里有用到這個(gè)關(guān)鍵字,寫時(shí)復(fù)制?能不能再延伸下;
熟悉的設(shè)計(jì)模式,從看過的源碼里挑幾個(gè)應(yīng)用講一下;
redis 底層數(shù)據(jù)結(jié)構(gòu),SDS 相較于 C 語言傳統(tǒng)字符串的優(yōu)劣;
二面 3.25 40min
這一面狀態(tài)有點(diǎn)不好
假設(shè) QPS 翻了 100 倍,你這個(gè)微服務(wù)項(xiàng)目有哪些需要注意的(就說了個(gè)網(wǎng)關(guān)限流,mysql 分庫 redis 分片哨兵,hystrix 熔斷降級都暫時(shí)被我忘了。。。);
JAVA 類加載過程說一下,假如兩個(gè)類完全限定名相同但是類加載器不同,他們是重復(fù)類嗎(平時(shí)張口就來的八股這時(shí)也背不利索了。。。后一個(gè)是確實(shí)不知道);
mysql 事務(wù)隔離級別;
常見的索引結(jié)構(gòu)有哪些,哈希表相較于其他結(jié)構(gòu)有什么優(yōu)劣(答案也沒有說全。。。);
kafka 怎么保證消息不會(huì)丟失(同樣沒說全。。。);
算法,最長有效括號(hào)子串(leet 32,寫了 n^2 的暴力枚舉,動(dòng)態(tài)規(guī)劃大概說了下思路);
反問環(huán)節(jié)看面試官回答好像對我并不是太滿意。
攜程
3.23 一面 30min
面試官相當(dāng)和藹,不過全程沒問八股。
你的這個(gè)秒殺場景里,使用了漏斗思想逐層過濾請求是怎么做的;
項(xiàng)目從單架構(gòu)變?yōu)槲⒎?wù),有什么變化嗎;
網(wǎng)關(guān)限流方案呢(令牌桶);
怎么防止商品超賣問題,怎么保證緩存數(shù)據(jù)庫雙寫一致;
新建場景:多機(jī)環(huán)境下如何保證無重復(fù)記錄插入(我的方案可能有點(diǎn)平庸:分布式鎖,拿鎖后再檢查重復(fù),沒有再插入然后放鎖);
要是操作數(shù)據(jù)庫過程出錯(cuò)了呢(大部分分布式鎖都有的超時(shí)機(jī)制);
3.26 二面 35min
問題有些進(jìn)階,也沒咋問八股。
AQS 原理,jdk 里的對應(yīng)應(yīng)用舉例;
Redis 底層數(shù)據(jù)結(jié)構(gòu),比較下 Redis 的字典和 jdk1.8 的 ConcurrentHashMap(主要是擴(kuò)容行為,漸進(jìn)式 rehash VS 多線程擴(kuò)容);
微服務(wù)項(xiàng)目用的哪個(gè)注冊中心,怎么做到傳入服務(wù)名得到對應(yīng)的實(shí)例地址(Robbin 客戶端負(fù)載均衡,講了下大概實(shí)現(xiàn));
看過部分 Spring 源碼是吧,說說里面用到的設(shè)計(jì)模式(答了 Robbin 負(fù)載均衡的策略模式,以及 Eureka Server 里用到的裝飾器模式,事務(wù)注解的代理模式,只說了個(gè)大概);
集合怎么做到一邊遍歷一邊刪除;
手寫一個(gè)生產(chǎn)者消費(fèi)者隊(duì)列(一個(gè)普通鏈表,一把主鎖綁定兩個(gè)條件隊(duì)列);
反問環(huán)節(jié)
我表現(xiàn)怎么樣?
A:總體還行,看過源碼還可以。另外感覺你很活躍啊,建議回答的時(shí)候手的動(dòng)作少點(diǎn),我的注意力差點(diǎn)被你手勢吸引過去了(我:???( ̄(OO) ̄))。
小結(jié)
除少數(shù)kpi面和hc滿了隨意面,大廠的面試質(zhì)量一般都非常高,他們問的很多問題都相當(dāng)有區(qū)分度(也可能是看似很基礎(chǔ)的問題,不同的答案也會(huì)得到不一樣的評價(jià)),所以平時(shí)的歸納總結(jié)真的很重要,試著把一些個(gè)人見解融入自己的答案。

獲取往期更多最新面試題資料,直接轉(zhuǎn)發(fā)一下這篇文章+關(guān)注公眾號(hào)【Java爛豬皮】關(guān)注后回復(fù)【666】即可獲取哦~

騰訊、阿里、滴滴后臺(tái)面試題匯總總結(jié) — (含答案)
面試:史上最全多線程面試題 !
最新阿里內(nèi)推Java后端面試題
JVM難學(xué)?那是因?yàn)槟銢]認(rèn)真看完這篇文章

關(guān)注作者微信公眾號(hào) —《JAVA爛豬皮》
了解更多java后端架構(gòu)知識(shí)以及最新面試寶典


看完本文記得給作者點(diǎn)贊+在看哦~~~大家的支持,是作者源源不斷出文的動(dòng)力
