個人背景介紹:
本人今年25,大學是某211學校,本科畢業生,專業是市場營銷專業,因爲畢業後工作不順,又不擅長銷售崗的工作,所以決心轉行。大學期間,就一直對計算機方面的工作比較感興趣,有了解過程序員這個行業,也知道這個行業的艱辛,但因爲興趣很大,所以有自學過一些基礎,不過在我有辭職轉行的想法時,就知道自己的能力和資質肯定是不夠的,又想要進入一些前景和影響力比較好的互聯網大廠工作,因此我又得開始回到“學習”崗位上,大概在18年年底就辭去了工作,報了一家線上教育機構,課程爲8個月,這8個月裏,我學得非常紮實,大概到了7月的時候,課程結束了,於是開始準備BAT的面試,刷了很多面題,做好了準備,我終於在8月下旬奔赴上了“戰場”。現在,已經成功拿到了阿里和網易的Java崗offer,今天主要分享一下阿里和網易的面經,想要知道我的學習路線可以私信給我。
阿里巴巴:菜鳥網絡(Java研發)
一面(40分鐘左右,簡歷面)
1.大學不是學的這個,爲什麼突然想換行業?自己怎麼學習程序這一方面的知識?
2.介紹一個你最熟悉的項目;
(1) 項目中使用的什麼框架;
(2) 解釋一下這個框架;
(3) 這個項目中遇到的最大的困難,怎麼解決的;
- 數據庫索引有哪些;
(1) 他們有什麼區別;
(2) 索引採用的是什麼數據結構;
(3) B樹和B+樹的區別;
-
有沒有對數據庫做過優化,列舉一下;
- Hashmap與hashtable之間的區別;
(1) 談一下對線程安全的理解;
(2) Synchronized的鎖優化機制;
(3) 樂觀鎖解釋一下;
-
Jvm的各個內存區域解釋一下;
-
垃圾回收機制解釋一下;
-
有哪些垃圾回收刷算法,他們有什麼區別;
- 算法中,快排和歸併解釋一下;
(1) 他們的算法複雜度分別是多少;
- 瞭解哪些開源框架?
(1) 怎麼學習他們的?
(2) 看過哪些源碼
-
最近有在看什麼數,平時的學習方法;
-
你對java各個版本瞭解很清楚是專門有去了解過嗎?
- 我問完了,你有什麼想問的?
二面(45分鐘左右)
-
自我介紹
-
說一下你的競爭力在哪
- 說一下你覺得技術含量最高的一個項目或者實習:
a) 打斷一下,mvcc的解釋一下;
b) 怎麼實現的;
c) 你知道哪些數據庫引擎,說一下區別;
d) 繼續剛纔你說的;
Balabala..
a) 打斷一下,索引是怎麼知道哪些索引需要優化的;
b) 有沒有更好的方法;
c) Mysql日誌有去看過嗎;——沒
d) 繼續你剛纔說的;
Balabala..
a) 打斷一下,你說的數據庫切換是動態的嗎;
b) 那現在給你一個需求將你項目中的數據庫切換改成動態的切換(不需要重啓服務);——不會
c) 繼續你剛纔說的;
Balabala..
- 打斷一下,你說一下線程安全問題好了(估計是覺得我項目太low了);
a) 爲什麼要注意線程安全;
b) 打斷一下,我說得是底層原理方面,也就是JMM那;
c) JMM8個原子操作說一下;
- 知道哪些鎖優化機制
a) 除了鎖升級還有嗎?
- 知道分佈式中間件嗎
a) Redis的AOF和RDB解釋一下;
- 我問完了,你有什麼想問的麼?
Q:其實我基礎比較好,很多面試官您都沒問到。。
A:哦,我的問題已經問完了。
Q:呃、、聽說25號就結束所有流程是嗎?
A:是的。
Q:請問菜鳥網絡對於應屆生的要求,是更偏向基礎還是更偏向應用?
A:emmm.基礎!
三面(一個小時左右,電話面,主管面試的)
-
自我介紹
-
項目介紹(問了蠻久)
-
Java垃圾回收解釋下——(問的這麼寬,那我就隨意發揮了)
-
打斷下,你看過源碼是吧?那就問下一個
-
Java內存區域解釋下
-
有哪些常量池
-
方法區在不同版本有哪些實現
-
類加載過程簡單說一下
- 類能否多次加載
——這裏說明下,可以使用熱加載實現多次加載
-
類加載器有哪幾種
-
雙親委派模型解釋下
-
能不能破壞,怎麼破壞
-
findClass 和 loadClass 有何區別
-
線程安全解釋一下
-
Java有哪些方法解決這個問題
-
Volatile解釋一下
-
Jmm解釋一下
-
你對juc包很熟悉是吧,裏面有哪些東西大概說一下
-
同步器主要有哪些,分別解釋下
-
CountDownLatch 和 CyclicBarrier 的區別,舉個例子說一下
-
Semaphore你也看過源碼是吧,那你解釋下它的底層原理
-
集合類你常用哪些,說一下ArrayList底層
-
它和Map是同族麼,那HashMap的底層原理解釋一下
-
那你知道它和HashTable的區別麼
-
工程上常用另外一種類來取代HashTable你知道麼
-
說一下concurrentHashMap底層
-
可能存在什麼問題,哦,你還知道1.8版本的,那你解釋一下它用的CAS機制
-
它可能導致ABA問題,你知道什麼是aba麼,有什麼解決方法
-
他還可能導致別的什麼問題麼
-
線程池用過麼,說一下各個參數的含義
-
線程池的原理
- java線程的各個狀態
——這裏強調一下java線程的狀態有6種和操作系統的5大狀態不一樣,大家不要被網上無腦轉載的博客給毒害了。
-
那操作系統的進程和線程有什麼區別,通信方式各有哪些
-
Spring-AOP解釋一下,bean生命週期呢,這你也都看過源碼是吧,那就問數據庫吧
-
MySQL幾個引擎區別
-
事務隔離哪些
-
Mvcc介紹
-
嗯,今天就到這裏吧,你的話應該沒什麼問題了,你能提前來實習麼?
- 有什麼想問的麼?
get主管的口頭offer,很開心,但是面主管之前接到一個電話說西安有有現場面也得去參加下,但是依然有點擔心現場面發揮不好把口頭offer泡湯了。(從這一面可以看出懂源碼的重要性)
四面(現場面,同樣是問技術類的問題)
很多問題忘記了,寫一下還記得的幾個
-
自我介紹
-
實習、項目介紹(+細問)
-
正常挖基礎,挖了蠻久
-
手寫快排
-
手寫一個死鎖程序
-
一個鏈表,已經排序如何快速定位到中位數
-
一篇文章獲取出現次數最多的字母
-
如果是單詞呢
-
如果是一本書呢
-
如果是要在上億個號碼中找出出現最多的呢,說出你的思路,把你能想到的方法都說出來
-
秒殺系統怎麼設計
-
最近在看什麼技術書(面阿里當然說阿里出的那幾本書,其實是真的在看,很不錯:李智慧老師的《大型網站技術架構》、許令波老師的《深入分析Java Web技術內幕》)
-
說一個你可能不太舒服的問題,這個問題不算面試內,看得出你很聰明也很努力,但是你也要知道相對於這些東西,那些計算機出生的研究生們可能比你基礎要更加紮實一些,比如計算機內部的原理什麼的,你有考慮過這個問題麼?
- 你有什麼想問我的麼?
HR面(40分鐘左右)
也忘了很多了,主要是日常聊天,HR全程微笑,聊得很愉快,聊得很多。
-
自我介紹
-
實習、項目介紹(主要了解開發規模)
-
比賽介紹(因爲是隊長,所以問了下任務分配)
-
日常聊天
-
你瞭解菜鳥網絡麼——(甚至把我報的雲倉部門都說了個清楚)
- 哇,你是有親戚朋友在這個部門麼
沒哈,因爲熱愛,所以瞭解
- 那你知道阿里的一些不好的傳聞麼,你有什麼看法,比如關於我們hr的你知道麼
——2015年的“擁抱變化”
-
看不出你對阿里的價值觀還了解這麼多,平時有關注阿里的技術發展麼
-
平時有自己的一套學習方法麼
-
自己覺得自己是怎麼樣一個人
-
周圍人,同門,隊友怎麼評價你的
-
家裏哪些人
-
和父母關係怎麼樣
-
知道父母生日麼
-
父母知道你想來阿里麼,父母怎麼評價阿里的
-
有女朋友麼
-
怎麼分手的方面說麼
-
去過杭州麼,評價一下杭州
-
目前手上有哪些offer
- 有什麼想問我的
網易:網易考拉(Java研發)
一面(一個小時左右,時間真的很長,問得我心理防線差點崩塌)
-
先自我介紹吧(着重講了一下自己爲什麼大學專業不對口,之後怎麼學習的等等)
-
最熟悉的項目介紹一下(會挑某個問題細挖)
-
看你對jvm很熟悉是吧,介紹下java內存區域分配吧
-
那JMM知道嗎,介紹下
-
垃圾回收的算法有哪些
-
爲什麼要分代收集
-
Minor GC過程解釋一下
-
你剛剛說你對juc包比較熟悉,有用過線程池嗎?怎麼用的
-
說一下線程池有哪些參數
-
線程池的底層原理
-
死鎖的原因,寫一個簡單的會發生死鎖程序
-
對開源框架熟悉哪個?
-
看過源碼是吧,那從源碼層面解釋下AOP
-
數據庫平時用的哪個
-
MySQL引擎介紹一下
-
Inodb的索引數據結構?畫一個簡單的看看,說一下和b樹的區別
-
使用索引要注意哪些問題你知道麼
- 你說到最做前綴,那我考考你,對ABC三列建立索引,把能用到索引的條件都列出來。
這裏我確定是“最左不能丟,中間不能斷”,但是面試官一口咬定AC也能用,我心裏想能是能用但是隻能用A的,不能使用AC,但是沒辦法,僵持了一下後只能順着大佬說。
-
MySQL怎麼實現分佈式鎖的
-
選課系統需要那些表,你簡單寫一下
-
加入課程的得分那又怎麼設計
-
現在再寫一個sql,找出某一個課程中得分最高的學生名字
-
面對大數據數據庫層有哪些方法
-
你自己試過分庫分表麼
-
現在一個業務需求:考拉要發行一個優惠券,但是發行量很大,需要分庫,每張券都有自己的id和對應客戶id,現在讓你來設計,要怎麼分庫
-
http訪問流程說一下
-
tcp三握四揮
-
算法方面,排序你知道哪些
-
把歸併排序寫一下
- 好了,不錯,去大廳休息下等下hr會通知你
二面(問得很深,比第一面難,還好自己沒有泄氣)
-
自我介紹
-
熟悉jvm是吧,有沒有自己調優經歷
-
會用哪些jvm kit
-
如果一個linux在線項目經常發現full gc ,你會怎麼樣快速定位?——會一點
-
Jvm垃圾回收器有哪些
-
各有什麼區別
-
他們怎麼搭配的
-
G1的工作原理解釋一下
-
它的gc root 有什麼不同的地方
-
每個region是怎麼知道自己是什麼代的
-
年輕代的存活對象是怎麼移動到老年代的
-
不是問晉升條件和內存擔保,就問你怎麼移過去的——不會
-
那CMS熟悉麼,說一下爲什麼他採用標記清除還是1.9之前的主流回收器,是用了什麼優化機制?——不會
-
看你數據庫也挺熟(看到上個面試官提過的問題),你解釋一下mySql幾個引擎的區別
-
事務隔離級別有哪些,其中可重複讀是怎麼實現的
-
Mvcc的底層原理又是什麼
-
知道Redis麼,介紹下一般用它做什麼
-
他常用的數據結構以及他們的區別
-
遠程過程調用框架知道哪些
-
說一下調用過程
-
說一下dubbo原理——不會
-
http熟悉是吧,https的優化
-
http頭中的cached屬性解釋一下
- 去大廳等一下吧,hr等會兒會通知你
三面+hr面
主管:(技術面)
-
自我介紹
-
依次簡單介紹下你的實習和項目(中間偶爾有細問)
-
介紹下你的比賽
- 如果一個linux在線項目經常發現full gc ,你會怎麼樣快速定位?
(媽耶,這不是上一輪剛問過麼。。。我打算回去再查來着,吐血。。)——把知道的說了
-
系統負載過高怎麼定位
-
這個問題進程不是java的又怎麼辦
-
看你項目都是單節點的,會分佈式的麼——不太會
-
最近在學什麼技術
- 有什麼想問我的麼
Hr:
-
瞭解考拉麼——(每個公司面試前我都有做足功課)
-
這麼瞭解呢,那你也知道對於一個上升期間的部門,加班是無法避免的,你對995怎麼看?——我!喜!歡!
-
你老家哪裏的,家裏哪些人
-
家裏人知道你要來杭州麼
-
第一次來杭州麼,喜歡杭州麼
-
平時怎麼學習的
-
對工作氛圍有什麼要求麼
- 你有什麼要問我的麼
總結
拿到阿里和網易兩家offer,幸運的是,網易考拉被阿里收購,所以嚴格意義上來說網易考拉是屬於阿里的,所以去哪一家都無所謂,最終的選擇還是去了菜鳥,希望未來能一起進步,互不辜負。
另外想說的是,一個好的結果 = (前期的努力 + 面試和筆試的發揮)*運氣, 既然運氣不能自控,那就好好把握自己能控制的,越努力越幸運是有道理的。