生活随笔
收集整理的這篇文章主要介紹了
【大牛系列教学】靠着这份面试题跟答案
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
開篇閑扯
打工人,打工魂,我們生而人上人。當(dāng)“資本主義”逐漸禁錮我們?nèi)?#xff08;大)上(韭)人(菜)肉體的時(shí)候,那一刻我才明白那個(gè)日不落帝國(guó)·資本主義收割機(jī)·瑞民族之光幸·瑞幸咖啡是多么的了不起,盡管我不懂咖啡,但還是要說一聲謝謝!說到咖啡,喝完就想上廁所,對(duì)寫bug的我來說太不友好了,畢竟我不(很)喜歡帶薪上廁所。
回歸本次的不正經(jīng)Java文章。上篇文章末尾處已經(jīng)提到了,主要會(huì)把我對(duì)Synchronized的理解進(jìn)行一次全方位的梳理,如果能幫助到大家吊打面試官,萬分榮幸。
一面
一面就做了一道算法題,要求兩小時(shí)內(nèi)完成,給了長(zhǎng)度為N的有重復(fù)元素的數(shù)組,要求輸出第10大的數(shù)。典型的TopK問題,快排算法搞定。
算法題要注意的是合法性校驗(yàn)、邊界條件以及異常的處理。另外,如果要寫測(cè)試用例,一定要保證測(cè)試覆蓋場(chǎng)景盡可能全。加上平時(shí)刷刷算法題,這種考核應(yīng)該沒問題的。
二面
自我介紹下唄 開源項(xiàng)目貢獻(xiàn)過代碼么?(Dubbo提過一個(gè)打印accesslog的bug算么) 目前在部門做什么,業(yè)務(wù)簡(jiǎn)單介紹下,內(nèi)部有哪些系統(tǒng),作用和交互過程說下 Dubbo踩過哪些坑,分別是怎么解決的?(說了異常處理時(shí)業(yè)務(wù)異常捕獲的問題,自定義了一個(gè)異常攔截器) 開始進(jìn)入正題,說下你對(duì)線程安全的理解(多線程訪問同一個(gè)對(duì)象,如果不需要考慮額外的同步,調(diào)用對(duì)象的行為就可以獲得正確的結(jié)果就是線程安全) 事務(wù)有哪些特性?(ACID) 怎么理解原子性?(同一個(gè)事務(wù)下,多個(gè)操作要么成功要么失敗,不存在部分成功或者部分失敗的情況) 樂觀鎖和悲觀鎖的區(qū)別?(悲觀鎖假定會(huì)發(fā)生沖突,訪問的時(shí)候都要先獲得鎖,保證同一個(gè)時(shí)刻只有線程獲得鎖,讀讀也會(huì)阻塞;樂觀鎖假設(shè)不會(huì)發(fā)生沖突,只有在提交操作的時(shí)候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎么實(shí)現(xiàn)的?(Java樂觀鎖通過CAS實(shí)現(xiàn),悲觀鎖通過synchronize實(shí)現(xiàn)。mysql樂觀鎖通過MVCC,也就是版本實(shí)現(xiàn),悲觀鎖可以通過select… for update加上排它鎖) HashMap為什么不是線程安全的?(多線程操作無并發(fā)控制,順便說了在擴(kuò)容的時(shí)候多線程訪問時(shí)會(huì)造成死鎖,會(huì)形成一個(gè)環(huán),不過擴(kuò)容時(shí)多線程操作形成環(huán)的問題再JDK1.8已經(jīng)解決,但多線程下使用HashMap還會(huì)有一些其他問題比如數(shù)據(jù)丟失,所以多線程下不應(yīng)該使用HashMap,而應(yīng)該使用ConcurrentHashMap)怎么讓HashMap變得線程安全?(Collections的synchronize方法包裝一個(gè)線程安全的Map,或者直接用ConcurrentHashMap)兩者的區(qū)別是什么?(前者直接在put和get方法加了synchronize同步,后者采用了分段鎖以及CAS支持更高的并發(fā)) jdk1.8對(duì)ConcurrentHashMap做了哪些優(yōu)化?(插入的時(shí)候如果數(shù)組元素使用了紅黑樹,取消了分段鎖設(shè)計(jì),synchronize替代了Lock鎖)為什么這樣優(yōu)化?(避免沖突嚴(yán)重時(shí)鏈表多長(zhǎng),提高查詢效率,時(shí)間復(fù)雜度從O(N)提高到O(logN)) redis主從機(jī)制了解么?怎么實(shí)現(xiàn)的? 有過GC調(diào)優(yōu)的經(jīng)歷么?(有點(diǎn)虛,答得不是很好) 有什么想問的么?
三面
簡(jiǎn)單自我介紹下 監(jiān)控系統(tǒng)怎么做的,分為哪些模塊,模塊之間怎么交互的?用的什么數(shù)據(jù)庫?(MySQL)使用什么存儲(chǔ)引擎,為什么使用InnnoDB?(支持事務(wù)、聚簇索引、MVCC) 訂單表有做拆分么,怎么拆的?(垂直拆分和水平拆分) 水平拆分后查詢過程描述下 如果落到某個(gè)分片的數(shù)據(jù)很大怎么辦?(按照某種規(guī)則,比如哈希取模、range,將單張表拆分為多張表) 哈希取模會(huì)有什么問題么?(有的,數(shù)據(jù)分布不均,擴(kuò)容縮容相對(duì)復(fù)雜 ) 分庫分表后怎么解決讀寫壓力?(一主多從、多主多從) 拆分后主鍵怎么保證惟一?(UUID、Snowflake算法) Snowflake生成的ID是全局遞增唯一么?(不是,只是全局唯一,單機(jī)遞增) 怎么實(shí)現(xiàn)全局遞增的唯一ID?(講了TDDL的一次取一批ID,然后再本地慢慢分配的做法) Mysql的索引結(jié)構(gòu)說下(說了B+樹,B+樹可以對(duì)葉子結(jié)點(diǎn)順序查找,因?yàn)槿~子結(jié)點(diǎn)存放了數(shù)據(jù)結(jié)點(diǎn)且有序) 主鍵索引和普通索引的區(qū)別(主鍵索引的葉子結(jié)點(diǎn)存放了整行記錄,普通索引的葉子結(jié)點(diǎn)存放了主鍵ID,查詢的時(shí)候需要做一次回表查詢)一定要回表查詢么?(不一定,當(dāng)查詢的字段剛好是索引的字段或者索引的一部分,就可以不用回表,這也是索引覆蓋的原理) 你們系統(tǒng)目前的瓶頸在哪里? 你打算怎么優(yōu)化?簡(jiǎn)要說下你的優(yōu)化思路 有什么想問我么?
四面
介紹下自己 為什么要做逆向? 怎么理解微服務(wù)? 服務(wù)治理怎么實(shí)現(xiàn)的?(說了限流、壓測(cè)、監(jiān)控等模塊的實(shí)現(xiàn)) 這個(gè)不是中間件做的事么,為什么你們部門做?(當(dāng)時(shí)沒有單獨(dú)的中間件團(tuán)隊(duì),微服務(wù)剛搞不久,需要進(jìn)行監(jiān)控和性能優(yōu)化) 說說Spring的生命周期吧 說說GC的過程(說了young gc和full gc的觸發(fā)條件和回收過程以及對(duì)象創(chuàng)建的過程) CMS GC有什么問題?(并發(fā)清除算法,浮動(dòng)垃圾,短暫停頓) 怎么避免產(chǎn)生浮動(dòng)垃圾?(記得有個(gè)VM參數(shù)設(shè)置可以讓掃描新生代之前進(jìn)行一次young gc,但是因?yàn)間c是虛擬機(jī)自動(dòng)調(diào)度的,所以不保證一定執(zhí)行。但是還有參數(shù)可以讓虛擬機(jī)強(qiáng)制執(zhí)行一次young gc) 強(qiáng)制young gc會(huì)有什么問題?(STW停頓時(shí)間變長(zhǎng)) 知道G1么?(了解一點(diǎn) ) 回收過程是怎么樣的?(young gc、并發(fā)階段、混合階段、full gc,說了Remember Set) 你提到的Remember Set底層是怎么實(shí)現(xiàn)的? 有什么想問的么?
五面
五面是HRBP面的,和我提前預(yù)約了時(shí)間,主要聊了之前在螞蟻的實(shí)習(xí)經(jīng)歷、部門在做的事情、職業(yè)發(fā)展、福利待遇等。阿里面試官確實(shí)是具有一票否決權(quán)的,很看重你的價(jià)值觀是否match,一般都比較喜歡皮實(shí)的候選人。HR面一定要誠(chéng)實(shí),不要說謊,只要你說謊HR都會(huì)去證實(shí),直接cut了。
之前螞蟻實(shí)習(xí)三個(gè)月怎么不留下來? 實(shí)習(xí)的時(shí)候主管是誰? 實(shí)習(xí)做了哪些事情?(尼瑪這種也問?) 你對(duì)技術(shù)怎么看?平時(shí)使用什么技術(shù)棧?(阿里HR真的是既當(dāng)?shù)之?dāng)媽,) 最近有在研究什么東西么 你對(duì)SRE怎么看 對(duì)待遇有什么預(yù)期么
總結(jié)
談到面試,其實(shí)說白了就是刷題刷題刷題,天天作死的刷。。。。。
為了準(zhǔn)備這個(gè)“金三銀四”的春招,狂刷一個(gè)月的題,狂補(bǔ)超多的漏洞知識(shí),像這次美團(tuán)面試問的算法、數(shù)據(jù)庫、Redis、設(shè)計(jì)模式等這些題目都是我刷到過的
并且我也將自己刷的題全部整理成了PDF或者Word文檔(含詳細(xì)答案解析),有需要的朋友可以戳這里即可免費(fèi)領(lǐng)取
66個(gè)Java面試知識(shí)點(diǎn)
架構(gòu)專題(MySQL,Java,Redis,線程,并發(fā),設(shè)計(jì)模式,Nginx,Linux,框架,微服務(wù)等)+大廠面試題詳解(百度,阿里,騰訊,華為,迅雷,網(wǎng)易,中興,北京中軟等)
算法刷題(PDF)
面試題詳解(百度,阿里,騰訊,華為,迅雷,網(wǎng)易,中興,北京中軟等)**
[外鏈圖片轉(zhuǎn)存中…(img-5JAR76gP-1623850583781)]
算法刷題(PDF)
總結(jié)
以上是生活随笔 為你收集整理的【大牛系列教学】靠着这份面试题跟答案 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。