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

上半年公司的項目很閒,很多人覺得沒意思陸續走了,我考慮到自己的發展,從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.注意事項 

  • 千萬別遲到。 
  • 做好特殊情況處理,帶簡歷、充電寶、紙巾、傘。 

面試

我面試刷過的題,和一些學習網址及資料,我在我的公衆號:Java小朔哥里都給大家分享出來,還有近一年面試的經歷,我都整理成了PDF,也花了我挺多時間,幫我點個贊吧。

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再說,最後看看自己這個公司自己是否值得去。
  • 通過面試體驗和面試官的風格 可以大概判斷入職團隊的情況。 
  • 拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。 
  • 理想的公司可以多投幾次,不同部門要求不一樣。
  • 問到自己有深入研究過的知識,抓住機會好好表現,吹是必須的,不要輕易錯過吹得機會。 
  • 大公司可以走獵頭渠道。談待遇靠譜一點。

 

 

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