深度揭祕阿里(螞蟻金服)技術面試流程!附前期準備,學習方向

上半年公司的項目很閒,很多人覺得沒意思陸續走了,我考慮到自己的發展,從6月底開始面,面到7月底,三十家公司。我從不打沒準備的仗,我是一個喜歡總結經驗的人,每經過一場面試,我都會那個本子記錄下來,或者哪些問題是自己之前沒遇到過的,或者是哪些問題是新遇到。通過一段時間的備戰,面試,拿了幾家offer ,最終我入職了阿里。

準備內容
算法
leetcode
careerup
glassdoor
topcoder
zoj
july的博客
mitbbs
poj
杭電acm
codeforces
複雜數據結構的講解及實現GeeksForGeeks:
一個比較牛逼的coding challenge網站
Java基礎
面向對象的特徵:繼承、封裝和多態
int 和 Integer 有什麼區別;Integer的值緩存範圍
說說反射的用途及實現
Http 請求的 GET 和 POST 方式的區別
MVC設計思想
什麼是Java序列化和反序列化;如何實現Java序列化;或者請描述
Serializable接口的作用
重載和重寫的區別
進程和線程
線程和進程的概念
並行和併發的概念
創建線程的方式及實現
進程間通信的方式
說說 CountDownLatch、CyclicBarrier 原理和區別
說說 Semaphore 原理
說說 Exchanger 原理
ThreadLocal 原理分析;ThreadLocal爲什麼會出現OOM,出現的深
層次原理
講講線程池的實現原理
線程池的幾種實現方式
線程的生命週期;狀態是如何轉移的
鎖機制
什麼是線程安全?如何保證線程安全?
重入鎖的概念;重入鎖爲什麼可以防止死鎖?
產生死鎖的四個條件
如何檢查死鎖
volatile 實現原理
synchronized 實現原理(對象監視器)
synchronized 與 lock 的區別
AQS 同步隊列
CAS 無鎖的概念;樂觀鎖和悲觀鎖
常見的原子操作類
什麼是 ABA 問題;出現 ABA 問題 JDK 是如何解決的
樂觀鎖的業務場景及實現方式
Java 8 併發包下常見的併發類
偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念
數據庫
DDL、DML、DCL 分別指什麼
explain 命令
髒讀、幻讀、不可重複讀
事務的隔離級別
數據庫的幾大範式
說說分庫與分表設計
分庫與分錶帶來的分佈式困境與對應之策
說說 SQL 優化之道
存儲引擎的 InnoDB 與 MyISAM 區別、優缺點、使用場景
索引類別(B+樹索引、全文索引、哈希索引);索引的區別
什麼是自適應哈希索引(AHI)
爲什麼要用 B+tree 作爲 MySql 索引的數據結構
聚集索引與非聚集索引的區別
limit 20000 加載很慢怎麼解決
常見的幾種分佈式 ID 的設計方案
JVM
JVM 運行時內存區域劃分
常見的 GC 回收算法及其含義
常見的 JVM 性能監控和故障處理工具類
JVM 性能調優
類加載器、雙親委派模型
類加載的過程
強引用、軟引用、弱引用、虛引用
Java 內存模型 JMM
在對上面的內容做了準備後,開始面試,先從小公司開始面,小公司1-2面技術,大公司3-5輪技術,一般都是一面基礎,二面進階,三面優化和場景,四面問規劃,五面hr.
面試自我介紹
被人沒太多的優點,雙非本科,只不過大學學的數學專業。英語水平一般。
優勢:
1 大學拿過奧數三等獎,ACM 大賽二等獎,當你的優秀大學生。
2 良好的溝通交流能力
3.較強的學習能力和邏輯思維能力
簡歷寫上,自我評價潛力好!此處有裝逼的嫌疑。
劣勢:
1.16年畢業,經驗不多,非常尷尬,上不上,下不下的情況。
2.畢業於雙非本科,只要是本科就基本沒問題,但有的公司要985.211的,並且還要30歲以內的。
3.前一家公司是傳統行業,加入項目組時,項目穩定,每天就是有bug就修復,優化一下,其他時間就是學習的,聊騷各幹各的,工作2年多跟在養老一樣,每天都是 用一句話說就是編程5分鐘,扯淡2小時,項目經驗嚴重不足,很怕開發過很難的需求。

這一點是最傷的,很多公司看項目經歷,結果你告訴面試官我寫的需求都是垃圾。
學習方式
我自己情況,項目和學歷肯定無法加分的。我自己對此也有清晰的認識,因此我在平時抓緊空閒時間學習和複習技術點。
1.看面試題
正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發現有些文章寫的不錯,對我幫助不小值得推薦 。
2.對問題深入理解
在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內部實現原理,這就促使你得開始去看jdk的源碼或者是學習一些新的東西。看源碼是很重要的一步,起步很難,但是會讓你收益良多。
3.熟悉項目的代碼和需求
把項目中不錯的需求拿出來,看會,代碼熟悉好,將整個功能的流程和涉及的東西吃透。項目是面試中必問的環節,一般是以一個功能點爲基礎展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。
4.網上做題和刷題
頭條會遠程面試, 一般會做題。建議去本文開頭的一些刷題網站多做些題目。
5.總結記錄
把自己每天學到的內容記錄下來,可以讓自己更有動力的複習,技術是一個枯燥的過程,你必須讓自己時刻保持有動力。
投簡歷、約面試環節
1.投簡歷渠道
BOSS直聘、獵聘網。拉鉤等(一般不靠譜),找靠譜獵頭也行。
2.簡歷不要海投 除非兩個情況。
1)沒有社招面試經驗:建議採取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經驗。
2)社招面試經驗已經足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看準網,企業查等。
3.投簡歷沒下文
簡歷確實亮點不多,學歷不好,項目不行,容易被HR給刷掉,因此他們看得最直接的就是你上家的公司和你畢業的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。
4.一天約幾家面試合適?
最理想的情況爲2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因爲下午的時間比較充足,可以讓公司更充分的瞭解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。
5.是否該裸辭?
我一開始是邊上班邊投,然後利用調休時間,或者請假去面試。後來,面試機會越來越多,請假太頻繁了,自己都不好意思了,並且自己也已經有足夠的信心,這個時候我選擇了裸辭。
裸辭還有一個原因是,在面試過程中你會發現,遇到公司要人緊急的,如果你的入職流程過長可能錯過這個公司。
6.注意事項
千萬別遲到。
做好特殊情況處理,帶簡歷、充電寶、紙巾、傘。
面試
1筆試常見的問題
面試常見的問題上面給的面試題鏈接基本都有。
手寫代碼:手寫代碼一般考單例、排序、線程、消費者生產者 排序。
寫SQL很常考察group by、內連接和外連接
2.面試1-5面總結
讓你自我介紹
做兩道算法題(刷題必中)
問Java基礎知識
java 高級進階就是我準備的那些
問項目中指責和做了什麼
業務情景問題,例如:你的一個功能上了生產環境後,服務器壓力驟增,該怎麼排查。
對職業的規劃
你有什麼想問面試官的
問期望待遇
3.常問的知識要點
集合相關問題(必問)
線程相關問題(必問)
JVM相關問題(必問)
設計模式相關問題(必問)
數據庫相關問題,針對Mysql(必問)
主流框架相關問題:
Spring的設計模式。
Spring中AOP。
Spring注入bean的方式。
什麼是IOC,什麼是依賴注入。
Spring是單例還是多例,怎麼修改。
Spring事務隔離級別和傳播性。
介紹下Mybatis/Hibernate的緩存機制。
Mybatis的mapper文件中#和$的區別。
Mybatis的mapper文件中resultType和resultMap的區別。
Hibernate和Mybatis的區別。
Spring MVC和Struts2的區別。
Mybatis中DAO層接口沒有寫實現類,Mapper中的方法和DAO接口方法是怎麼綁定到一起的,其內部是怎麼實現的。
7)其他遇到問題:
介紹下B樹、二叉樹。
IO和NIO的區別。
重載和重寫的區別。
棧和隊列。
接口和抽象類的區別。
int和Integer的自動拆箱/裝箱相關問題。常量池相關問題。
==和equals的區別。
String和StringBuilder、StringBuffer的區別。
靜態變量、實例變量、局部變量線程安全嗎,爲什麼。
try、catch、finally都有return語句時執行哪個。
分佈式鎖的實現。
分佈式session存儲解決方案。
常用的linux命令。
offer 流程

面試通過當然還有一些後續的環節
提交工資流水(大點的公司),學歷,學位照片。
定薪
體檢通知
背調 發offer。
入職材料 選擇入職日期。
一些經驗
千萬別裸辭,別裸辭,別裸辭 我同事裸辭了,2個月了到現在還沒找到工作。
先投一些普通的小公司,等面出感覺了再去面大公司。
自己不會的技術簡歷不要寫
很多公司壓待遇,期望待遇適當提高。
不要去實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
不要去參加很多大大小小的招聘會,純粹是浪費時間。
把面試當作一次技術的交流,不要太在意是否能被錄取。就當學習。
公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,感覺良好也沒用。
地方遠的儘量通過電話面試,不然白跑。
面試衝刺階段,要保持每天學習,無論是學習新東西還是複習舊東西。
無論好的壞的公司,先拿到offer再說,最後看看自己這個公司自己是否值得去。
通過面試體驗和面試官的風格 可以大概判斷入職團隊的情況。
拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
理想的公司可以多投幾次,不同部門要求不一樣。
問到自己有深入研究過的知識,抓住機會好好表現,吹是必須的,不要輕易錯過吹得機會。
大公司可以走獵頭渠道。談待遇靠譜一點。
很多人問我面試刷過的題,和一些學習網址及資料,那我在這裏都給大家分享出來,包括我刷過的題,還有近一年面試的經歷,我都整理成了PDF,也花了我挺多時間,都放在我的GZ號了:Java小朔哥

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