五面螞蟻金服Java研發崗:數據結構+Redis+分佈式+微服務

五面螞蟻金服Java研發崗:數據結構+Redis+分佈式+微服務

面試問題如下:

一面(主要看基礎):

  1. 先自我介紹,講講自己基礎掌握情況,以及項目經歷平時會用到哪些數據結構?鏈表和數組的優缺點?解決hash衝突的方法有哪些?講講自己對HashMap的理解,以及和Weakhashmap的區別?剛才講的是JDK1.7版本的實現,知道JDK1.8做了哪些改動麼?在微服務中用RPC通信還是REST?RPC和HTTP的關係是什麼?談談什麼是HTTP的長連接和短連接?TCP的三次握手和四次揮手,以及為什麼要三次握手,而不是二次?TCP 有哪些狀態,相應狀態的含義?併發包中鎖的實現底層(對AQS的理解)?樂觀鎖和悲觀鎖的理解及如何實現,有哪些實現方式?SynchronizedMap和ConcurrentHashMap有什麼區別?如何使用阻塞隊列實現一個生產者和消費者模型?簡述一下Java 垃圾回收機制?如何判斷一個對象是否存活?什麼是tomcat類加載機制?類加載器雙親委派模型機制?讓你評價一下你自己?
五面螞蟻金服Java研發崗:數據結構+Redis+分佈式+微服務

二面(主要問了底層和算法):

  1. 扯了下項目、講一下項目經歷redis的底層數據結構瞭解多少?知道動態字符串sds的優缺點麼(redis底層數據結構之一)?redis的單線程特性有什麼優缺點?用過 Redis 的哪些數據結構, 分別用在什麼場景?怎麼解決緩存擊穿問題的?Hytrix的隔離機制有哪些?Hytrix常見配置是哪些?做過哪些調優?JVM調優、數據庫調優都行!給了個場景,問你怎麼調?

三面(數據庫):

  1. 依然是介紹自己數據庫的高可用架構是怎麼樣的?如何保證數據庫主從一致性?知道mysql的索引算法嗎?為什麼mongodb的索引用了B樹,而mysql用B+樹?用mysql過程中,有遇到什麼問題麼?生產用的是哪種事務隔離級別,為什麼?談一談你對微服務架構的理解?用過哪些RPC框架,講講他們優缺點?用過docker嗎,對容器瞭解多少?
五面螞蟻金服Java研發崗:數據結構+Redis+分佈式+微服務

四面(偏架構方面):

  1. 介紹一下自己,講講項目經歷項目中微服務是怎麼劃分的,劃分粒度怎麼確定?在實踐微服務架構中,有遇到什麼問題?在關於微服務間數據一致性問題,是如何解決的?為什麼不用其他的MQ,最終選擇了RokcetMQ?為什麼RocketMQ沒有選擇ZooKeeper,而是自己實現了一個NameServer集群?Zookeeper在選舉的過程中,還能對外提供服務麼?對Paxos算法瞭解多少?如果讓你來設計一個春晚搶紅包架構,你會怎麼設計?有什麼想問我的?

五面(HR面):

聊人生談理想,HR很ncie,主要交流為什麼選擇來阿里,未來的打算職業規劃以及待遇等,交流挺愉快。

面試經驗總結:

  1. 技術基礎必須紮實:算法、數據結構、操作系統等,螞蟻金服面試對技術的基礎非常重視,基礎紮實的同學有利於在前兩輪突出重圍。技術寬度:主要集中在高併發、多線程、分佈式架構,大以及常用中間件(緩存等)的選型和比較。技術原理深入:重點還是提前準備好JVM、多線程高併發這塊。參與的項目總結:你需要清楚你所做項目的關鍵細節、優化、特點、原理。很多所用第三方庫&中間件等的原理,即使你不知道,也要有自己的想法能夠說出如何代替實現,比如單點登錄的替代方案。最後,千萬不要倒在HR面試環節,避重就輕是重點,特別是優點和缺點,如果問到你的規劃是什麼,請記得一定告訴HR你想成為一名優秀的技術專家!

最後

針對上面面試題我總結出了互聯網公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構視頻資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習,也希望有需要的朋友能在金三銀四找到一個好工作!

五面螞蟻金服Java研發崗:數據結構+Redis+分佈式+微服務

資料領取方式:轉發+私信【面試】領取!


分享到:


相關文章: