4月份的時候是已經通過了螞蟻金服的四面,最近又得知已經順利的拿到了阿里的Offer,非常感到高興。還順便總結了一下自己面試經歷,介紹了一下自己是如何準備的,也希望能夠給大家帶來一些幫助。
前言
前兩天,我收到了螞蟻金服的offer,從朋友的內推開始面試到拿到最後offer經歷了4面技術、一面交叉面和一面HR面。經過了漫長的等待和幾次幾乎折磨的面試之後,終於拿到了offer。
螞蟻花唄第一次技術面(60min):
- Java容器有哪些?哪些是同步容器,哪些是併發容器?
- ArrayList和LinkedList的插入和訪問的時間複雜度?
- java反射原理, 註解原理?
- 說說一致性 Hash 原理
- 新生代分爲幾個區?使用什麼算法進行垃圾回收?爲什麼使用這個算法?
- HashMap在什麼情況下會擴容,或者有哪些操作會導致擴容?
- HashMap push方法的執行過程?
- HashMap檢測到hash衝突後,將元素插入在鏈表的末尾還是開頭?
- 1.8還採用了紅黑樹,講講紅黑樹的特性,爲什麼人家一定要用紅黑樹而不是AVL、B樹之類的?
- https和http區別,有沒有用過其他安全傳輸手段?
- 線程池的工作原理,幾個重要參數,然後給了具體幾個參數分析線程池會怎麼做,最後問阻塞隊列的作用是什麼?
- linux怎麼查看系統負載情況?
- 請詳細描述springmvc處理請求全流程?
- spring 一個bean裝配的過程?
- 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
一面一共問了15個問題,信息量還是很大的,但是可以看到這些問題都不算難,主要是考察基礎知識的掌握情況,這一輪面試的難度數據一面的正常難度,持續的時長也算是正常範圍。
螞蟻花唄二次技術面(30min)
- 查詢中哪些情況不會使用索引?
- 數據庫索引,底層是怎樣實現的,爲什麼要用B樹索引?
- Mysql主從同步的實現原理?
- MySQL是怎麼用B+樹?
- 談談數據庫樂觀鎖與悲觀鎖?
- 有使用過哪些NoSQL數據庫?MongoDB和Redis適用哪些場景?
- 描述分佈式事務之TCC服務設計?
- Redis和memcache有什麼區別?Redis爲什麼比memcache有優勢?
- Redis 的數據結構
- 海量數據過濾,黑名單過濾一個 url。
- 講一講AtomicInteger,爲什麼要用CAS而不是synchronized?
螞蟻花唄三次技術面(25min)
- 考慮redis的時候,有沒有考慮容量?大概數據量會有多少?
- Redis 的 list zset 的底層實現
- solr和mongodb的區別,存數據爲什麼不用solr?
- 分佈式 session 的共享方案有哪些,有什麼優劣勢
- 談談分佈式鎖、以及分佈式全局唯一ID的實現比較?
- 集羣監控的時候,重點需要關注哪些技術指標?這些指標如何優化?
- 從千萬的數據到億級的數據,會面臨哪些技術挑戰?你的技術解決思路?
- 數據庫分庫分表需要怎樣來實現?
- 排序算法的複雜度,快速排序非遞歸實現。
- 消息中間件有哪些?他們之間的優劣勢?
螞蟻花唄四次技術面(15min)
- 分佈式架構設計哪方面比較熟悉
- 介紹你實踐的性能優化案例,以及你的優化思路
- 介紹項目
- 談一個你覺得你學到最多的項目,使用了什麼技術,挑戰在哪裏
- 各種聊項目,從項目的架構設計到部署流程。
- 最近有沒有學習過新技術?
- 有什麼想問我的?
- 最近兩年遇到的最大的挫折,從挫折中學到了什麼?
- 三年到五年的職業規劃?
HR面
1.工作中遇到的最大挑戰是什麼,你如何克服的?
2.你最大的優點和最大的缺點,各自說一個?
3.未來的職業發展,短期和長期的規劃是什麼?
最後,你懂的,主要就是HR走流程了,主要問了未來的職業規劃。
總結:
每一次面試都感覺是煎熬,雖然之前看過很多阿里的面經,都說阿里面試官會抓住某一點一直問下去,直到問到你不會爲止,但是當第一次親身體會的時候,還是感覺很煎熬。
不過最終的結果還是好的,至少收到了心儀的offer,能在這個疫情期間,大環境不好的情況下找到工作。
以下主要分享面經和個人學習方法,會包括很多PDF文檔,如面試題庫(含答案+解析)、學習筆記、實戰文檔和腦圖等等
Java核心知識點:
在收到螞蟻金服的Offer後,匆匆趕到了面試現場,已經離約定的面試時間不遠了,和小夥伴們交流,他們二面都已經完成了,掃碼簽到遇到了一點困難,選擇了人工簽到!按照人工簽到給定的時間進入會場,前面的同學還沒有面完,這就有了一個暗中觀察的機會,可以判斷一下面試官是怎樣的人
京東一面
- JVM 內存分哪幾個區,每個區的作用是什麼?JVM有哪些回收算法,對應的收集器有哪些?
- GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
- hashmap源碼問題
- HashMap、HashMap如何保證線程安全、ConcurrentHashMap
- HashMap底層結構 put操作講一下
- GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。
- java線程同步都有哪幾種方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
- cas的原理,變量要用哪個關鍵字修飾,volatile實現的原理。
- 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
- MYSQL 數據庫服務器性能分析的方法命令有哪些?
- 什麼是通用 SQL 函數?
- 手撕代碼:按層次遍歷二叉樹?
- Java 配置的方式配置 Spring
- spring中用到了什麼, 簡述 AOP 和 IOC 概念,aop是怎麼實現的?
京東二面
- 自我介紹&項目
- 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
- 分佈式鎖原理
- CAS 算法,CAS 與 synchronized 的使用情景
- 簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 分別解決什麼問題?
- dubbo有哪些模塊,底層通信的原理?Dubbo 集羣的負載均衡有哪些策略?
- 如果讓你實現一個https,你會怎麼實現?
- 常用的負載均衡,該怎麼用,你能說下嗎?
- 常見的分佈式事務方案有哪些?
- Dubbo 的核心功能?如何從0到1設計一個類似Dubbo的RPC框架?
京東三面
- 再談談一致hash算法(redis)?
- 數據庫索引,B+樹的特性和建樹過程。
- mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
- 分佈式鎖的方案,redis和zookeeper哪個個好,如果是集羣部署,高併發情況下哪個性能更好。
- activeMQ 發送消息的方式有哪些?activeMQ 如何調優
- 設計模式與重構,談談你對重構的理解
- Collections.sort底層排序方式
- 說說 Redis 哈希槽的概念?Redis 集羣如何選擇數據庫?
- spring cloud的服務註冊與發現是怎麼設計的?
京東四面
- 自己參與的項目,技術難度高的有哪些?
- 線上有實際的性能優化經驗?
- 從SQL、JVM、架構、數據庫四個方面講講優化思路,以及如何優先排序?
- redis的持久化方式,redis3.0原生集羣和redis讀寫分離+哨兵機制區別
- 如果讓你實現一個mq,怎麼樣保證消息不丟失
- 你熟悉哪些中間件,談談你對他們的理解,以及對應的使用場景區別?
- 最後,你有什麼想問我的?
HR面
- 自我介紹
- 項目介紹
- 如何學習新技術?
- 遇到的最大挑戰以及如何解決?
- 大學最大的收穫?
- 如何團隊合作的?
- 職業規劃
寫在最後
很多人感嘆“學習無用”,實際上之所以產生無用論,是因爲自己想要的與自己所學的匹配不上,這也就意味着自己學得遠遠不夠。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。