非科班的Java菜雞成功逆襲:備戰8個月,我拿到了阿里、網易offer

個人背景介紹:

本人今年25,大學是某211學校,本科畢業生,專業是市場營銷專業,因爲畢業後工作不順,又不擅長銷售崗的工作,所以決心轉行。大學期間,就一直對計算機方面的工作比較感興趣,有了解過程序員這個行業,也知道這個行業的艱辛,但因爲興趣很大,所以有自學過一些基礎,不過在我有辭職轉行的想法時,就知道自己的能力和資質肯定是不夠的,又想要進入一些前景和影響力比較好的互聯網大廠工作,因此我又得開始回到“學習”崗位上,大概在18年年底就辭去了工作,報了一家線上教育機構,課程爲8個月,這8個月裏,我學得非常紮實,大概到了7月的時候,課程結束了,於是開始準備BAT的面試,刷了很多面題,做好了準備,我終於在8月下旬奔赴上了“戰場”。現在,已經成功拿到了阿里和網易的Java崗offer,今天主要分享一下阿里和網易的面經,想要知道我的學習路線可以私信給我。

阿里巴巴:菜鳥網絡(Java研發)

一面(40分鐘左右,簡歷面)

1.大學不是學的這個,爲什麼突然想換行業?自己怎麼學習程序這一方面的知識?

2.介紹一個你最熟悉的項目;

(1) 項目中使用的什麼框架;

(2) 解釋一下這個框架;

(3) 這個項目中遇到的最大的困難,怎麼解決的;

  1. 數據庫索引有哪些;

(1) 他們有什麼區別;

(2) 索引採用的是什麼數據結構;

(3) B樹和B+樹的區別;

  1. 有沒有對數據庫做過優化,列舉一下;

  2. Hashmap與hashtable之間的區別;

(1) 談一下對線程安全的理解;

(2) Synchronized的鎖優化機制;

(3) 樂觀鎖解釋一下;

  1. Jvm的各個內存區域解釋一下;

  2. 垃圾回收機制解釋一下;

  3. 有哪些垃圾回收刷算法,他們有什麼區別;

  4. 算法中,快排和歸併解釋一下;

(1) 他們的算法複雜度分別是多少;

  1. 瞭解哪些開源框架?

(1) 怎麼學習他們的?

(2) 看過哪些源碼

  1. 最近有在看什麼數,平時的學習方法;

  2. 你對java各個版本瞭解很清楚是專門有去了解過嗎?

  3. 我問完了,你有什麼想問的?

二面(45分鐘左右)

  1. 自我介紹

  2. 說一下你的競爭力在哪

  3. 說一下你覺得技術含量最高的一個項目或者實習:

a) 打斷一下,mvcc的解釋一下;

b) 怎麼實現的;

c) 你知道哪些數據庫引擎,說一下區別;

d) 繼續剛纔你說的;

Balabala..

a) 打斷一下,索引是怎麼知道哪些索引需要優化的;

b) 有沒有更好的方法;

c) Mysql日誌有去看過嗎;——沒

d) 繼續你剛纔說的;

Balabala..

a) 打斷一下,你說的數據庫切換是動態的嗎;

b) 那現在給你一個需求將你項目中的數據庫切換改成動態的切換(不需要重啓服務);——不會

c) 繼續你剛纔說的;

Balabala..

  1. 打斷一下,你說一下線程安全問題好了(估計是覺得我項目太low了);

a) 爲什麼要注意線程安全;

b) 打斷一下,我說得是底層原理方面,也就是JMM那;

c) JMM8個原子操作說一下;

  1. 知道哪些鎖優化機制

a) 除了鎖升級還有嗎?

  1. 知道分佈式中間件嗎

a) Redis的AOF和RDB解釋一下;

  1. 我問完了,你有什麼想問的麼?

Q:其實我基礎比較好,很多面試官您都沒問到。。

A:哦,我的問題已經問完了。

Q:呃、、聽說25號就結束所有流程是嗎?

A:是的。

Q:請問菜鳥網絡對於應屆生的要求,是更偏向基礎還是更偏向應用?

A:emmm.基礎!

三面(一個小時左右,電話面,主管面試的)

  1. 自我介紹

  2. 項目介紹(問了蠻久)

  3. Java垃圾回收解釋下——(問的這麼寬,那我就隨意發揮了)

  4. 打斷下,你看過源碼是吧?那就問下一個

  5. Java內存區域解釋下

  6. 有哪些常量池

  7. 方法區在不同版本有哪些實現

  8. 類加載過程簡單說一下

  9. 類能否多次加載

——這裏說明下,可以使用熱加載實現多次加載

  1. 類加載器有哪幾種

  2. 雙親委派模型解釋下

  3. 能不能破壞,怎麼破壞

  4. findClass 和 loadClass 有何區別

  5. 線程安全解釋一下

  6. Java有哪些方法解決這個問題

  7. Volatile解釋一下

  8. Jmm解釋一下

  9. 你對juc包很熟悉是吧,裏面有哪些東西大概說一下

  10. 同步器主要有哪些,分別解釋下

  11. CountDownLatch 和 CyclicBarrier 的區別,舉個例子說一下

  12. Semaphore你也看過源碼是吧,那你解釋下它的底層原理

  13. 集合類你常用哪些,說一下ArrayList底層

  14. 它和Map是同族麼,那HashMap的底層原理解釋一下

  15. 那你知道它和HashTable的區別麼

  16. 工程上常用另外一種類來取代HashTable你知道麼

  17. 說一下concurrentHashMap底層

  18. 可能存在什麼問題,哦,你還知道1.8版本的,那你解釋一下它用的CAS機制

  19. 它可能導致ABA問題,你知道什麼是aba麼,有什麼解決方法

  20. 他還可能導致別的什麼問題麼

  21. 線程池用過麼,說一下各個參數的含義

  22. 線程池的原理

  23. java線程的各個狀態

——這裏強調一下java線程的狀態有6種和操作系統的5大狀態不一樣,大家不要被網上無腦轉載的博客給毒害了。

  1. 那操作系統的進程和線程有什麼區別,通信方式各有哪些

  2. Spring-AOP解釋一下,bean生命週期呢,這你也都看過源碼是吧,那就問數據庫吧

  3. MySQL幾個引擎區別

  4. 事務隔離哪些

  5. Mvcc介紹

  6. 嗯,今天就到這裏吧,你的話應該沒什麼問題了,你能提前來實習麼?

  7. 有什麼想問的麼?

get主管的口頭offer,很開心,但是面主管之前接到一個電話說西安有有現場面也得去參加下,但是依然有點擔心現場面發揮不好把口頭offer泡湯了。(從這一面可以看出懂源碼的重要性)

四面(現場面,同樣是問技術類的問題)

很多問題忘記了,寫一下還記得的幾個

  1. 自我介紹

  2. 實習、項目介紹(+細問)

  3. 正常挖基礎,挖了蠻久

  4. 手寫快排

  5. 手寫一個死鎖程序

  6. 一個鏈表,已經排序如何快速定位到中位數

  7. 一篇文章獲取出現次數最多的字母

  8. 如果是單詞呢

  9. 如果是一本書呢

  10. 如果是要在上億個號碼中找出出現最多的呢,說出你的思路,把你能想到的方法都說出來

  11. 秒殺系統怎麼設計

  12. 最近在看什麼技術書(面阿里當然說阿里出的那幾本書,其實是真的在看,很不錯:李智慧老師的《大型網站技術架構》、許令波老師的《深入分析Java Web技術內幕》)

  13. 說一個你可能不太舒服的問題,這個問題不算面試內,看得出你很聰明也很努力,但是你也要知道相對於這些東西,那些計算機出生的研究生們可能比你基礎要更加紮實一些,比如計算機內部的原理什麼的,你有考慮過這個問題麼?

  14. 你有什麼想問我的麼?

HR面(40分鐘左右)

也忘了很多了,主要是日常聊天,HR全程微笑,聊得很愉快,聊得很多。

  1. 自我介紹

  2. 實習、項目介紹(主要了解開發規模)

  3. 比賽介紹(因爲是隊長,所以問了下任務分配)

  4. 日常聊天

  5. 你瞭解菜鳥網絡麼——(甚至把我報的雲倉部門都說了個清楚)

  6. 哇,你是有親戚朋友在這個部門麼

沒哈,因爲熱愛,所以瞭解

  1. 那你知道阿里的一些不好的傳聞麼,你有什麼看法,比如關於我們hr的你知道麼

——2015年的“擁抱變化”

  1. 看不出你對阿里的價值觀還了解這麼多,平時有關注阿里的技術發展麼

  2. 平時有自己的一套學習方法麼

  3. 自己覺得自己是怎麼樣一個人

  4. 周圍人,同門,隊友怎麼評價你的

  5. 家裏哪些人

  6. 和父母關係怎麼樣

  7. 知道父母生日麼

  8. 父母知道你想來阿里麼,父母怎麼評價阿里的

  9. 有女朋友麼

  10. 怎麼分手的方面說麼

  11. 去過杭州麼,評價一下杭州

  12. 目前手上有哪些offer

  13. 有什麼想問我的

網易:網易考拉(Java研發)

一面(一個小時左右,時間真的很長,問得我心理防線差點崩塌)

  1. 先自我介紹吧(着重講了一下自己爲什麼大學專業不對口,之後怎麼學習的等等)

  2. 最熟悉的項目介紹一下(會挑某個問題細挖)

  3. 看你對jvm很熟悉是吧,介紹下java內存區域分配吧

  4. 那JMM知道嗎,介紹下

  5. 垃圾回收的算法有哪些

  6. 爲什麼要分代收集

  7. Minor GC過程解釋一下

  8. 你剛剛說你對juc包比較熟悉,有用過線程池嗎?怎麼用的

  9. 說一下線程池有哪些參數

  10. 線程池的底層原理

  11. 死鎖的原因,寫一個簡單的會發生死鎖程序

  12. 對開源框架熟悉哪個?

  13. 看過源碼是吧,那從源碼層面解釋下AOP

  14. 數據庫平時用的哪個

  15. MySQL引擎介紹一下

  16. Inodb的索引數據結構?畫一個簡單的看看,說一下和b樹的區別

  17. 使用索引要注意哪些問題你知道麼

  18. 你說到最做前綴,那我考考你,對ABC三列建立索引,把能用到索引的條件都列出來。

這裏我確定是“最左不能丟,中間不能斷”,但是面試官一口咬定AC也能用,我心裏想能是能用但是隻能用A的,不能使用AC,但是沒辦法,僵持了一下後只能順着大佬說。

  1. MySQL怎麼實現分佈式鎖的

  2. 選課系統需要那些表,你簡單寫一下

  3. 加入課程的得分那又怎麼設計

  4. 現在再寫一個sql,找出某一個課程中得分最高的學生名字

  5. 面對大數據數據庫層有哪些方法

  6. 你自己試過分庫分表麼

  7. 現在一個業務需求:考拉要發行一個優惠券,但是發行量很大,需要分庫,每張券都有自己的id和對應客戶id,現在讓你來設計,要怎麼分庫

  8. http訪問流程說一下

  9. tcp三握四揮

  10. 算法方面,排序你知道哪些

  11. 把歸併排序寫一下

  12. 好了,不錯,去大廳休息下等下hr會通知你

二面(問得很深,比第一面難,還好自己沒有泄氣)

  1. 自我介紹

  2. 熟悉jvm是吧,有沒有自己調優經歷

  3. 會用哪些jvm kit

  4. 如果一個linux在線項目經常發現full gc ,你會怎麼樣快速定位?——會一點

  5. Jvm垃圾回收器有哪些

  6. 各有什麼區別

  7. 他們怎麼搭配的

  8. G1的工作原理解釋一下

  9. 它的gc root 有什麼不同的地方

  10. 每個region是怎麼知道自己是什麼代的

  11. 年輕代的存活對象是怎麼移動到老年代的

  12. 不是問晉升條件和內存擔保,就問你怎麼移過去的——不會

  13. 那CMS熟悉麼,說一下爲什麼他採用標記清除還是1.9之前的主流回收器,是用了什麼優化機制?——不會

  14. 看你數據庫也挺熟(看到上個面試官提過的問題),你解釋一下mySql幾個引擎的區別

  15. 事務隔離級別有哪些,其中可重複讀是怎麼實現的

  16. Mvcc的底層原理又是什麼

  17. 知道Redis麼,介紹下一般用它做什麼

  18. 他常用的數據結構以及他們的區別

  19. 遠程過程調用框架知道哪些

  20. 說一下調用過程

  21. 說一下dubbo原理——不會

  22. http熟悉是吧,https的優化

  23. http頭中的cached屬性解釋一下

  24. 去大廳等一下吧,hr等會兒會通知你

三面+hr面

主管:(技術面)

  1. 自我介紹

  2. 依次簡單介紹下你的實習和項目(中間偶爾有細問)

  3. 介紹下你的比賽

  4. 如果一個linux在線項目經常發現full gc ,你會怎麼樣快速定位?

(媽耶,這不是上一輪剛問過麼。。。我打算回去再查來着,吐血。。)——把知道的說了

  1. 系統負載過高怎麼定位

  2. 這個問題進程不是java的又怎麼辦

  3. 看你項目都是單節點的,會分佈式的麼——不太會

  4. 最近在學什麼技術

  5. 有什麼想問我的麼

Hr:

  1. 瞭解考拉麼——(每個公司面試前我都有做足功課)

  2. 這麼瞭解呢,那你也知道對於一個上升期間的部門,加班是無法避免的,你對995怎麼看?——我!喜!歡!

  3. 你老家哪裏的,家裏哪些人

  4. 家裏人知道你要來杭州麼

  5. 第一次來杭州麼,喜歡杭州麼

  6. 平時怎麼學習的

  7. 對工作氛圍有什麼要求麼

  8. 你有什麼要問我的麼

總結

拿到阿里和網易兩家offer,幸運的是,網易考拉被阿里收購,所以嚴格意義上來說網易考拉是屬於阿里的,所以去哪一家都無所謂,最終的選擇還是去了菜鳥,希望未來能一起進步,互不辜負。

另外想說的是,一個好的結果 = (前期的努力 + 面試和筆試的發揮)*運氣, 既然運氣不能自控,那就好好把握自己能控制的,越努力越幸運是有道理的。

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