2年經驗+2本學歷+CRUD背景,憑啥面試螞蟻金服拿到30K 寫在前面 螞蟻金服面試經歷(還原最真實的4面) 越努力,越幸運(如何高效學習?) 總結

本文素材由一位粉絲分享 ,感謝你的回饋

寫在前面

本人Java開發經驗2年半,學歷也很普通,非一線城市二本畢業,畢業後就一直在青島Crud,對於在公司每天重複的工作,我覺得對我的技術提升也並沒有什麼幫助。但從小鎮出來的我,也深知自我努力的重要性,所以想要改變“命運”,沒有背景沒有資本的人,只能通過自我奮鬥獲得。

而幸運女神往往會眷顧努力的人,而我也準備好了迎接這份幸運。所以當這份幸運降臨到我頭上,我並不詫異,只覺得終於到我大展拳腳了。目前拿到了螞蟻金服30K的offer,下面就主要分享我這次“螞蟻面試經歷”和“個人學習方法”,希望能幫助到大家更好的學習。

請注意,因本文內容過多,除了面經外,還有很多學習資料,不適合在文章中全部闡述,下文的面試題以及學習資料都有整理在pdf裏,需要完整pdf版的,私信回覆【學習】即可。

螞蟻金服面試經歷(還原最真實的4面)

螞蟻一面:

1、自我介紹

2、聊項目相關

介紹項目

怎麼保證redis與Mysql的數據一致性

見你寫了個加隨機數預防緩存雪崩,解釋一下

未改進和改進後的Jmter測試性能對比

3、Redis

redis 和 memcached 什麼區別?爲什麼高併發下有時單線程的 redis 比多線程的memcached 效率要高?

redis 主從複製如何實現的?redis 的集羣模式如何實現?redis 的 key 是如何尋址的?

使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?

知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?

redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?

緩存穿透、緩存擊穿、緩存雪崩解決方案?

在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached

緩存與數據庫不一致怎麼辦?

主從數據庫不一致如何解決?

4、Mysql

解釋一下什麼是事務

講一講事務隔離級別

爲什麼使用B+樹作爲索引

聚簇索引和非聚簇索引的區別

5、Java

Java是如何保證其安全性的

剛見你說了Java 內存泄漏問題,解釋一下什麼情況下會出現

說一下BIO、NIO、AIO

6、其它

平時怎麼學習的

有什麼需要問的嗎?

螞蟻二面:

1、手撕算法

10個多線程保證 i從0加到10 (差點翻車,主線程忙等另外10個線程完結

反轉鏈表

上臺階(n=80)

2、操作系統

常用的linux命令說一下

操作系統中的信號 和 信號量有什麼關係

epoll 和 Selector 有什麼區別?

3、計算機網絡

說一下擁塞控制

4、數據結構

說一下紅黑樹,你平時用的技術哪裏用到了它?

哈希表怎麼處理衝突?

5、項目相關

把項目放到服務器上運行的時候有沒有遇到什麼問題?查看項目運行的狀態怎麼做?

spring 和 springboot的關係你是怎麼理解的?

Spring IOC和AOP說一下你的理解

爲什麼用消息隊列?

對於消息的重複消費你有什麼設計方案嗎?

螞蟻三面:

你是怎麼學習Java的?

設計模式瞭解嗎?單例講一下,懶漢餓漢double-check,怎麼實現。策略模式,外觀模式,適配器模式,裝飾器模式,分別講一下

聯合索引什麼時候不會觸發索引?

AOP瞭解麼,有什麼好處,如何使用,怎麼實現的?

支付寶到銀行的轉賬業務怎麼實現?

redis實現分佈式鎖

三臺機器集羣,按不同權重訪問,怎麼做?

螞蟻四面(hr面):

先介紹一下你自己吧

平時怎麼去學習的?

爲什麼你說學習了要去實踐?

說一下的最大的優點和缺點

舉一下你缺點的例子

想象一下你幾十年後是怎樣的生活?

你覺得最痛苦的一段時間

對你影響最大的一件事情

在安排活動的過程中有沒有發生什麼衝突?

你有什麼崇拜的人嗎?

你有什麼想問的?

怎麼樣,看到這裏覺得你跟大廠的距離是不是也沒那麼遙遠?是的,只要你也勤加學習,積極提升自己,你的未來也一定十分耀眼。

越努力,越幸運(如何高效學習?)

1、看視頻進行系統學習

這幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠系統,所以重新進行系統學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時。

以下奉上我的系統學習路線和視頻學習資源:

2、讀源碼,看實戰筆記,學習大神思路

“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。

Spring源碼深度解析:

本書完全從開發者的角度去剖析源碼,每一章 都會提供具有代表性的實例,並以此爲基礎進行功能實現的分析,而不是採取開篇就講解容器怎麼實現、AOP怎麼實現之類的寫法。在描述的過程中,本書儘可能地把問題分解,使用剝洋蔥的方式一層一層地將邏輯描述清楚,幫助讀者由淺入深地進行學習,並把其中的難點和問題各個擊破,而不是企圖一下讓讀者理解一個複雜的邏輯。

Kafka源碼解析與實戰:

由淺入深,循序漸進:本書從LinkedIn (領英)公司內部大數據架構講起,引出消息隊列Kafka,接着講解Kafka的基本架構,然後着重分析Kafka內部的各模塊實現細節。從誕生背景至架構組成,再到內部實現細節,由淺入深,循序漸進,讓讀者在閱讀時能夠逐步瞭解Kafka。

由裏到外,層層剖析:本書不僅講解Kafka內部的實現原理,而且還詳細描述Kafka外部的維護工具,對外的客戶端編程原理以及和第三方集成的方式。由裏到外,層層剖析,讓讀者在閱讀時能夠更加全面地掌握Kafka。

JVM G1 源碼分析和調優:

本書嘗試從G1的原理出發,系統地介紹新生代回收、混合回收、Full GC、併發標記、Refine 線程等內容;同時依託於jdk8u的源代碼介紹Hotspot如何實現G1,通過對源代碼的分析來了解G1提供了哪些參數、這些參數的具體意義;最後本書還設計了一些示例代碼,給出了G1在運行這些示例代碼時的日誌,通過日誌分析來嘗試調整參數並達到性能優化,還分析了參數調整可能帶來的負面影響。

Spring Boot2精髓:

本書系統介紹了Spring Boot 2.0的主要技術,側重於兩個方面,一方面是極速開發一 個Web應用系統(第1~6章,包含Spring介紹、MVC、視圖技術、數據庫訪問技術),隨後介紹了Spring Boot的高級特性(第7~9 章),包括多環境部署、自動裝配、單元測試等技術。另外一方面,當系統模塊增加,性能和吞吐量要求增加時,如何平滑地用Spring Boot來實現分佈式架構,會在本書的第10~17章介紹。

3、面試前夕,衝刺刷題

面試的前一週時間內,就可以開始刷題衝刺了。在這裏爲大家推薦左神的《程序員代碼面試指南》,由簡入繁的爲你的算法面試保駕護航。

總結

由學習路線,到實戰文檔,再到視頻解析,小編在這裏都已經爲大家整理好了,有需要深度學習瞭解的朋友,請轉發文章並關注小編,私信回覆【學習】即可。

最後希望大家在金九銀十里都能夠拿到想要的大廠offer!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章