天天看點

JAVA程式員面試系列(三)

注意,這裡所有的面經都是已第一人稱書寫,但并不表述全部都是我個人的經曆,有來自我個人的,也有來自其他小夥伴和我之間的交流)

沒看過系列前面幾篇的小夥伴,可以直接傳送去看一下。一是網易的面經。

哈羅單車

  一共三面,2面技術。電話面試+現場。

  

一面:電話面試。基本的自我介紹+基礎面試。

  • HashMap,CurrentHashMap。
  • 線程池的建立,ThreadPoolExecutor相關内容。
  • 還問了GC,JVM相關的一些簡單概念問題。
  • 布式鎖,分布式事務,限流
  • 算法:時間複雜度為O(1)的LRU實作;一個是判斷連結清單是否成環。

主要是履歷上的一些知識點和基礎,問了一下項目上的亮點以及如何實作的。比如分布式鎖,分布式事務,限流等。最後問了2個算法,由于是電話面試,是以隻說了思路,一個是時間複雜度為O(1)的LRU實作;一個是判斷連結清單是否成環。都是簡單的算法,刷刷LeetCode基本都會。

二面:現場面試。

  • JVM基礎,new 一個對象,在JVM中的具體流程是怎麼樣的。類的加載。
  • GC算法,CMS的實作細節。
  • mysql的索引原理,設計出發點,MVCC的機制以及實作原理,作用是什麼。
  • rocketmq的架構,消息的生産,消費的原理,負載均衡
  • 做過的項目畫架構圖,項目的技術點。
  • 分布式事務實作,分布式鎖,限流

JVM相關的内容,這個相對問的比較綜合,問了new 一個對象,在JVM中的具體流程是怎麼樣的。主要還是類的加載,這一塊具體問了各個類加載器的作用以及String對象是由哪個類加載器加載的,以及對象在JVM中的配置設定。細節部分問了對象在配置設定過程中涉及到的常量池部分,以及TLCB的作用。還問了GC算法,各個算法間 差異,CMS算法的細節。後面又問了mysql,問了索引的原理,為什麼這麼設計,以及MVCC的機制以及實作原理,作用是什麼。之後問了中間件,rocketmq的架構,消息的生産,消費的原理,負載均衡在哪裡做的,不得不說rocketmq真的是每次必問。問完基礎,開始問項目,先畫一下架構圖,這裡為什麼這麼設計,怎麼保證資料安全(項目涉及到對外接口),項目中的分布式事務實作,分布式鎖,限流等。總體感覺,細節沒把握好,面試的時候你覺得小東西不管重要不重要,還是要說一下的。不要着急,先理一下思路,

滴滴出行

三面技術

一面:

  • Mysql,寫的執行流程。連接配接池的實作原理。
  • Mysql,undolog,redolog,binlog。log的commit機制,異常恢複,事務的隔離級别,mvcc。
  • Spring,事務機制的底層實作,源碼實作。
  • mybatis,攔截器的實作原理,有哪些攔截器。

視訊面試,上來先自我介紹,然後問了一下項目的業務邏輯,主要負責了什麼,做了什麼内容。然後開始問基礎,顯示Mysql,一個綜合性問題,一條update或者insert語句的執行流程,越詳細越好,還問了資料庫連接配接池的實作。這裡主要涉及到mysql的語句分析優化以及undolog,redolog,binlog,以及log的commit機制,以及異常恢複,事務的隔離級别,mvcc點了一下。然後問spring的事務機制的底層實作原理,從源碼層面講一下,這裡其實要展開的話就比較多了,從事務的實作,可以擴充到aop,bean的初始化等,不過個人感覺隻要點出事務的底層三個事務接口就好了,也就是 plateforamxxx接口的後續實作,還問了mybatis的攔截器。最後也沒問算法。

二面:視訊面

  • JVM,GC算法概念,CMS的具體過程,GC的過程描述。
  • rocketMQ的底層實作,消息的收發流程,推拉機制的實作原理。
  • redis叢集,緩存雪崩,擊穿,如果解決。
  • ES,ES的基本概念,項目中沒涉及就沒繼續問

這一面主要還是 圍繞自己做過的項目中用到的知識點的基礎問答以及一些技術點的實作,如何解決問題的。印象最深刻的技術點是什麼,對現在的項目有沒有什麼優化的想法。

如果大家覺得我寫的還可以,對你有幫助,還希望點個贊。這樣我也有更大的動力去回顧自己這一路的磨煉,整理出更高品質的面經,給你們更好的參考資料。