螞蟻一面
??就做了?道算法題,要求兩?時內完成,給了?度為N的有重復元素的數組,要求輸出第10?的數。典型的TopK問題,快排算法搞定。算法題要注意的是合法性校驗、邊界條件以及異常的處理。另外,如果要寫測試?例,?定要保證測試覆蓋場景盡可能全。加上平時刷刷算法題,這種考核應該沒問題的。
螞蟻二面
- ?我介紹下唄
- 開源項?貢獻過代碼么?(Dubbo提過?個打印accesslog的bug算么)
- ?前在部?做什么,業務簡單介紹下,內部有哪些系統,作?和交互過程說下
- Dubbo踩過哪些坑,分別是怎么解決的?(說了異常處理時業務異常捕獲的問題,?定義了?個異常攔截器)
- 開始進?正題,說下你對線程安全的理解(多線程訪問同?個對象,如果不需要考慮額外的同步,調?對象的?為就可以獲得正確的結果就是線程安全)
- 事務有哪些特性?(ACID)
- 怎么理解原?性?(同?個事務下,多個操作要么成功要么失敗,不存在部分成功或者部分失敗的情況)
- 樂觀鎖和悲觀鎖的區別?(悲觀鎖假定會發?沖突,訪問的時候都要先獲得鎖,保證同?個時刻只有線程獲得鎖,讀讀也會阻塞;樂觀鎖假設不會發?沖突,只有在提交操作的時候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎么實現的?(Java樂觀鎖通過CAS實現,悲觀鎖通過synchronize實現。mysql樂觀鎖通過MVCC,也就是版本實現,悲觀鎖可以通過select… forupdate加上排它鎖)
- HashMap為什么不是線程安全的?(多線程操作?并發控制,順便說了在擴容的時候多線程訪問時會造成死鎖,會形成?個環,不過擴容時多線程操作形成環的問題再JDK1.8已經解決,但多線程下使?HashMap還會有?些其他問題?如數據丟失,所以多線程下不應該使?HashMap,?應該使?ConcurrentHashMap)怎么讓HashMap變得線程安全?(Collections的synchronize?法包裝?個線程安全的Map,或者直接?ConcurrentHashMap)兩者的區別是什么?(前者直接在put和get?法加了synchronize同步,后者采?了分段鎖以及CAS?持更?的并發)
- jdk1.8對ConcurrentHashMap做了哪些優化?(插?的時候如果數組元素使?了紅?樹,取消了分段鎖設計,synchronize替代了Lock鎖)為什么這樣優化?(避免沖突嚴重時鏈表多?,提?查詢效率,時間復雜度從O(N)提?到O(logN))
- redis主從機制了解么?怎么實現的?
- 有過GC調優的經歷么?(有點虛,答得不是很好)
- 有什么想問的么?
螞蟻三面
- 簡單?我介紹下
- 監控系統怎么做的,分為哪些模塊,模塊之間怎么交互的??的什么數據庫?(MySQL)使?什么存儲引擎,為什么使?InnnoDB?(?持事務、聚簇索引、MVCC)
- 訂單表有做拆分么,怎么拆的?(垂直拆分和?平拆分)
- ?平拆分后查詢過程描述下
- 如果落到某個分?的數據很?怎么辦?(按照某種規則,?如哈希取模、range,將單張表拆分為多張表)
- 哈希取模會有什么問題么?(有的,數據分布不均,擴容縮容相對復雜 )
- 分庫分表后怎么解決讀寫壓??(?主多從、多主多從)
- 拆分后主鍵怎么保證位置?(UUID、Snowflake算法)
- Snowflake?成的ID是全局遞增唯?么?(不是,只是全局唯?,單機遞增)
- 怎么實現全局遞增的唯?ID?(講了TDDL的?次取?批ID,然后再本地慢慢分配的做法)
- Mysql的索引結構說下(說了B+樹,B+樹可以對葉?結點順序查找,因為葉?結點存放了數據結點且有序)
- 主鍵索引和普通索引的區別(主鍵索引的葉?結點存放了整?記錄,普通索引的葉?結點存放了主鍵ID,查詢的時候需要做?次回表查詢)?定要回表查詢么?(不?定,當查詢的字段剛好是索引的字段或者索引的?部分,就可以不?回表,這也是索引覆蓋的原理)
- 你們系統?前的瓶頸在哪??
- 你打算怎么優化?簡要說下你的優化思路
- 有什么想問我么?
螞蟻四面
- 介紹下??
- 為什么要做逆向?
- 怎么理解微服務?
- 服務治理怎么實現的?(說了限流、壓測、監控等模塊的實現)
- 這個不是中間件做的事么,為什么你們部?做?(當時沒有單獨的中間件團隊,微服務剛搞不久,需要進?監控和性能優化)
- 說說Spring的?命周期吧
- 說說GC的過程(說了young gc和full gc的觸發條件和回收過程以及對象創建的過程)
- CMS GC有什么問題?(并發清除算法,浮動垃圾,短暫停頓)
- 怎么避免產?浮動垃圾?(記得有個VM參數設置可以讓掃描新?代之前進??次young gc,但是因為gc是虛擬機?動調度的,所以不保證?定執?。但是還有參數可以讓虛擬機強制執??次young gc)
- 強制young gc會有什么問題?(STW停頓時間變?)
- 知道G1么?(了解?點 )
- 回收過程是怎么樣的?(young gc、并發階段、混合階段、full gc,說了Remember Set)
- 你提到的Remember Set底層是怎么實現的?
- 有什么想問的么?
?結
螞蟻?試?較重視基礎,所以Java那些基本功?定要扎實。螞蟻的?作環境還是挺贊的,因為我?的是穩定性保障部?,還有許多單獨的?組,什么三年1班,很有?春的感覺。?試官基本?平都?較?,基本都P7以上,除了基礎還問了不少架構設計??的問題,收獲還是挺?的。
拼多多
- ?試前
- ??
- ??
- 三?
- ?結
?試前
?完螞蟻后,早就聽聞拼多多這個獨?獸,決定也去??把。?先我在脈脈找了?個拼多多的HR,加了微信聊了下,發了簡歷便開始我的拼多多?試之旅。這?要?常感謝拼多多HR?姐姐,從?試內推到offer確認?直都在幫我,?真的很nice。
拼多多一面:
- Java中的HashMap、TreeMap解釋下?(TreeMap紅?樹,有序,HashMap?序,數組+鏈表)
- TreeMap查詢寫?的時間復雜度多少?(O(logN))
- HashMap多線程有什么問題?(線程安全,死鎖)怎么解決?( jdk1.8?了synchronize + CAS,擴容的時候通過CAS檢查是否有修改,是則重試)重試會有什么問題么?(CAS(Compare And Swap)是??和交換,不會導致線程阻塞,但是因為重試是通過?旋實現的,所以仍然會占?CPU時間,還有ABA的問題)怎么解決?(超時,限定?旋的次數,ABA可以通過原理變量AtomicStampedReference解決,原理利?版本號進???)超過重試次數如果仍然失敗怎么辦?(synchronize互斥鎖)
- CAS和synchronize有什么區別?都?synchronize不?么?(CAS是樂觀鎖,不需要阻塞,硬件級別實現的原?性;synchronize會阻塞,JVM級別實現的原?性。使?場景不同,線程沖突嚴重時CAS會造成CPU壓?過?,導致吞吐量下降,synchronize的原理是先?旋然后阻塞,線程沖突嚴重仍然有向滔的吞吐量,因為線程都被阻塞了,不會占有CPU )
- 如果要保證線程安全怎么辦?(ConcurrentHashMap)
- ConcurrentHashMap怎么實現線程安全的?(分段鎖)
- get需要加鎖么,為什么?(不?,volatile關鍵字)
- volatile的作?是什么?(保證內存可?性)
- 底層怎么實現的?(說了主內存和?作內存,讀寫內存屏障,happen-before,并在紙上畫了線程交互圖)
- 在多核CPU下,可?性怎么保證?(思考了?會,總線嗅探技術)
- 聊想聊,系統之間是怎么交互的?
- 系統并發多少,怎么優化?
- 給我?張紙,畫了?個九?格,都填了數字,給?個MN矩陣,從1開始逆時針打印這MN個數,要求時間復雜度盡可能低(內?OS:之前貌似碰到過這題,最優解是怎么實現來著)思考中。。。
- 可以先說下你的思路(想起來了,說了什么時候要變換?向的條件,向右、向下、向左、向上,依此循環)
- 有什么想問我的?
拼多多二面:
- ?我介紹下
- ?上還有其他offer么?(拿了螞蟻的offer)
- 部?組織結構是怎樣的?(這輪不是技術?么,不過還是??實實說了)
- 系統有哪些模塊,每個模塊?了哪些技術,數據怎么流轉的?(?試官有點禿頂,?看級別就很?)給了我?張紙,我在上?簡單畫了下系統之間的流轉情況
- 鏈路追蹤的信息是怎么傳遞的?(RpcContext的attachment,說了Span的結構:parentSpanId +curSpanId)
- SpanId怎么保證唯?性?(UUID,說了下內部的定制改動)
- RpcContext是在什么維度傳遞的?(線程)
- Dubbo的遠程調?怎么實現的?(講了讀取配置、拼裝url、創建Invoker、服務導出、服務注冊以
- 及消費者通過動態代理、filter、獲取Invoker列表、負載均衡等過程(嘩啦啦講了10多分鐘),我可以喝??么
- Spring的單例是怎么實現的?(單例注冊表)
- 為什么要單獨實現?個服務治理框架?(說了下內部剛搞微服務不久,主要對服務進??些監控和性能優化)
- 誰主導的?內部還在使?么?
- 你向有想過怎么做成通航么?
- 有什么想問的么?
拼多多三面:
?????完后就直接HR?了,主要問了些職業發展、是否有其他offer、以及?職意向等問題,順便說了下公司的福利待遇等,都?較常規啦。不過要說的是?上有其他offer或者??經歷會有?定加分
拼多多的?試流程就簡單許多,畢竟是?個成?四年多的公司。?試難度中規中矩,只要基礎扎實應該不是問題。但不得不說?作強度很?,開始?試前HR就提前和我確認能否接受這樣強度的?作,想來的?鐵還是要做好準備
最后
即使是面試跳槽,那也是一個學習的過程。只有全面的復習,才能讓我們更好的充實自己,武裝自己,為自己的面試之路不再坎坷!今天就給大家分享一個Github上全面的Java面試題大全,就是這份面試大全助我拿下大廠Offer,月薪提至30K!
資料領取方式:藍色傳送門
我也是第一時間分享出來給大家,希望可以幫助大家都能去往自己心儀的大廠!為金三銀四做準備!
一共有20個知識點專題,分別是:
Dubbo面試專題
JVM面試專題
Java并發面試專題
Kafka面試專題
MongDB面試專題
MyBatis面試專題
MySQL面試專題
Netty面試專題
RabbitMQ面試專題
Redis面試專題
Spring Cloud面試專題
SpringBoot面試專題
zookeeper面試專題
常見面試算法題匯總專題
計算機網絡基礎專題
設計模式專題
68)]
常見面試算法題匯總專題
[外鏈圖片轉存中…(img-tbBLpD4f-1625134919868)]
計算機網絡基礎專題
[外鏈圖片轉存中…(img-YpGYsgOZ-1625134919869)]
設計模式專題
[外鏈圖片轉存中…(img-Wo5uwlzU-1625134919870)]