螞蟻金服、京東Java技術4面:原理+索引+底層+分布式+GC+優化等

java領域佼佼者 發佈 2020-06-14T08:25:14+00:00

4月份的時候是已經通過了螞蟻金服的四面,最近又得知已經順利的拿到了阿里的Offer,非常感到高興。還順便總結了一下自己面試經歷,介紹了一下自己是如何準備的,也希望能夠給大家帶來一些幫助。

4月份的時候是已經通過了螞蟻金服的四面,最近又得知已經順利的拿到了阿里的Offer,非常感到高興。還順便總結了一下自己面試經歷,介紹了一下自己是如何準備的,也希望能夠給大家帶來一些幫助。

前言

前兩天,我收到了螞蟻金服的offer,從朋友的內推開始面試到拿到最後offer經歷了4面技術、一面交叉面和一面HR面。經過了漫長的等待和幾次幾乎折磨的面試之後,終於拿到了offer。

螞蟻花唄第一次技術面(60min):

  1. Java容器有哪些?哪些是同步容器,哪些是並發容器?
  2. ArrayList和LinkedList的插入和訪問的時間複雜度?
  3. java反射原理, 註解原理?
  4. 說說一致性 Hash 原理
  5. 新生代分為幾個區?使用什麼算法進行垃圾回收?為什麼使用這個算法?
  6. HashMap在什麼情況下會擴容,或者有哪些操作會導致擴容?
  7. HashMap push方法的執行過程?
  8. HashMap檢測到hash衝突後,將元素插入在鍊表的末尾還是開頭?
  9. 1.8還採用了紅黑樹,講講紅黑樹的特性,為什麼人家一定要用紅黑樹而不是AVL、B樹之類的?
  10. https和http區別,有沒有用過其他安全傳輸手段?
  11. 線程池的工作原理,幾個重要參數,然後給了具體幾個參數分析線程池會怎麼做,最後問阻塞隊列的作用是什麼?
  12. linux怎麼查看系統負載情況?
  13. 請詳細描述springmvc處理請求全流程?
  14. spring 一個bean裝配的過程?
  15. 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理

一面一共問了15個問題,信息量還是很大的,但是可以看到這些問題都不算難,主要是考察基礎知識的掌握情況,這一輪面試的難度數據一面的正常難度,持續的時長也算是正常範圍。


螞蟻花唄二次技術面(30min)

  1. 查詢中哪些情況不會使用索引?
  2. 資料庫索引,底層是怎樣實現的,為什麼要用B樹索引?
  3. Mysql主從同步的實現原理?
  4. MySQL是怎麼用B+樹?
  5. 談談資料庫樂觀鎖與悲觀鎖?
  6. 有使用過哪些NoSQL資料庫?MongoDB和Redis適用哪些場景?
  7. 描述分布式事務之TCC服務設計?
  8. Redis和memcache有什麼區別?Redis為什麼比memcache有優勢?
  9. Redis 的數據結構
  10. 海量數據過濾,黑名單過濾一個 url。
  11. 講一講AtomicInteger,為什麼要用CAS而不是synchronized?

螞蟻花唄三次技術面(25min)

  1. 考慮redis的時候,有沒有考慮容量?大概數據量會有多少?
  2. Redis 的 list zset 的底層實現
  3. solr和mongodb的區別,存數據為什麼不用solr?
  4. 分布式 session 的共享方案有哪些,有什麼優劣勢
  5. 談談分布式鎖、以及分布式全局唯一ID的實現比較?
  6. 集群監控的時候,重點需要關注哪些技術指標?這些指標如何優化?
  7. 從千萬的數據到億級的數據,會面臨哪些技術挑戰?你的技術解決思路?
  8. 資料庫分庫分表需要怎樣來實現?
  9. 排序算法的複雜度,快速排序非遞歸實現。
  10. 消息中間件有哪些?他們之間的優劣勢?

螞蟻花唄四次技術面(15min)

  1. 分布式架構設計哪方面比較熟悉
  2. 介紹你實踐的性能優化案例,以及你的優化思路
  3. 介紹項目
  4. 談一個你覺得你學到最多的項目,使用了什麼技術,挑戰在哪裡
  5. 各種聊項目,從項目的架構設計到部署流程。
  6. 最近有沒有學習過新技術?
  7. 有什麼想問我的?
  8. 最近兩年遇到的最大的挫折,從挫折中學到了什麼?
  9. 三年到五年的職業規劃?

HR面

1.工作中遇到的最大挑戰是什麼,你如何克服的?

2.你最大的優點和最大的缺點,各自說一個?

3.未來的職業發展,短期和長期的規劃是什麼?

最後,你懂的,主要就是HR走流程了,主要問了未來的職業規劃。


總結:

每一次面試都感覺是煎熬,雖然之前看過很多阿里的面經,都說阿里面試官會抓住某一點一直問下去,直到問到你不會為止,但是當第一次親身體會的時候,還是感覺很煎熬。

不過最終的結果還是好的,至少收到了心儀的offer,能在這個疫情期間,大環境不好的情況下找到工作。

以下主要分享面經和個人學習方法,會包括很多PDF文檔,如面試題庫(含答案+解析)、學習筆記、實戰文檔和腦圖等等,均可以免費分享,自行選擇,需要面試的夥伴們轉發+私信我【面經】即可領取~

Java核心知識點:

在收到螞蟻金服的Offer後,匆匆趕到了面試現場,已經離約定的面試時間不遠了,和小夥伴們交流,他們二面都已經完成了,掃碼簽到遇到了一點困難,選擇了人工簽到!按照人工簽到給定的時間進入會場,前面的同學還沒有面完,這就有了一個暗中觀察的機會,可以判斷一下面試官是怎樣的人

京東一面

  1. JVM 內存分哪幾個區,每個區的作用是什麼?JVM有哪些回收算法,對應的收集器有哪些?
  2. GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
  3. hashmap源碼問題
  4. HashMap、HashMap如何保證線程安全、ConcurrentHashMap
  5. HashMap底層結構 put操作講一下
  6. GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
  7. java線程同步都有哪幾種方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
  8. cas的原理,變量要用哪個關鍵字修飾,volatile實現的原理。
  9. 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
  10. MYSQL 資料庫伺服器性能分析的方法命令有哪些?
  11. 什麼是通用 SQL 函數?
  12. 手撕代碼:按層次遍歷二叉樹?
  13. Java 配置的方式配置 Spring
  14. spring中用到了什麼, 簡述 AOP 和 IOC 概念,aop是怎麼實現的?


京東二面

  1. 自我介紹&項目
  2. 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
  3. 分布式鎖原理
  4. CAS 算法,CAS 與 synchronized 的使用情景
  5. 簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
  6. 分別解決什麼問題?
  7. dubbo有哪些模塊,底層通信的原理?Dubbo 集群的負載均衡有哪些策略? 
  8. 如果讓你實現一個https,你會怎麼實現?
  9. 常用的負載均衡,該怎麼用,你能說下嗎?
  10. 常見的分布式事務方案有哪些?
  11. Dubbo 的核心功能?如何從0到1設計一個類似Dubbo的RPC框架?

京東三面

  1. 再談談一致hash算法(redis)?
  2. 資料庫索引,B+樹的特性和建樹過程。
  3. mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
  4. 分布式鎖的方案,redis和zookeeper哪個個好,如果是集群部署,高並發情況下哪個性能更好。
  5. activeMQ 發送消息的方式有哪些?activeMQ 如何調優
  6. 設計模式與重構,談談你對重構的理解
  7. Collections.sort底層排序方式
  8. 說說 Redis 哈希槽的概念?Redis 集群如何選擇資料庫?
  9. spring cloud的服務註冊與發現是怎麼設計的?


京東四面

  1. 自己參與的項目,技術難度高的有哪些?
  2. 線上有實際的性能優化經驗?
  3. 從SQL、JVM、架構、資料庫四個方面講講優化思路,以及如何優先排序?
  4. redis的持久化方式,redis3.0原生集群和redis讀寫分離+哨兵機制區別
  5. 如果讓你實現一個mq,怎麼樣保證消息不丟失
  6. 你熟悉哪些中間件,談談你對他們的理解,以及對應的使用場景區別?
  7. 最後,你有什麼想問我的?

HR面

  • 自我介紹
  • 項目介紹
  • 如何學習新技術?
  • 遇到的最大挑戰以及如何解決?
  • 大學最大的收穫?
  • 如何團隊合作的?
  • 職業規劃

寫在最後

很多人感嘆「學習無用」,實際上之所以產生無用論,是因為自己想要的與自己所學的匹配不上,這也就意味著自己學得遠遠不夠。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。

以上學習資料均免費放送,最後祝願各位身體健康,順利拿到心儀的offer!

由於文章的篇幅有限,所以這次的螞蟻金服和京東面試題答案整理在了PDF文檔里

資料獲取方式:轉發+評論我的文章,關注我,然後私信【面經】即可免費領取~

關鍵字: