1. 程式人生 > >2019秋招|阿里面經(6面)已收到意向書

2019秋招|阿里面經(6面)已收到意向書

樓主8月3號投遞阿里Java開發崗,9月4號收到意向通知,中間經歷6次面試。過的時間久了不會描述很具體,簡單說說吧。

背景

使用Java到現在大概有一年多的時間,之前一直做硬體,所以Java算不上很好。投遞的時候,實習剛辭職,也沒準備筆試面試,很多東西都忘記了。瞭解到內推掛了不影響秋招才敢投的,就是想著刷刷經驗而已,從沒敢奢望什麼。在投遞前的半個月,剛剛用10天左右通讀了《Java併發程式設計實戰》,認真做了筆記,算是有點心得,面試的時候幫了很大忙。

6次面試分別是:

4次技術面+1次HR面+一次瞭解情況的嘮嗑(勉強算一次面試吧)

一面

8月5號

  1. 自我介紹
  2. 聊聊專案,我主要說了實習時候的專案,順帶聊起了資料庫、快取相關的問題。
  • ACID
  • 事務隔離級別
  • MVCC
  • 資料庫分表
  • 索引
  • 快取一致性
  • 在自我介紹的時候,我有說自己多執行緒方面掌握的還可以。面試官後面問有沒有讀過什麼原始碼,很自然的就回答讀過Spring、JDK、以及java concurrent包下面的相關類等。於是順帶就問了些常見的併發問題:
  • volatile 有什麼作用
  • sychronized和lock有什麼區別
  • 執行緒安全性問題有哪些?
  • 造成死鎖的原因
  • 加鎖會帶來哪些效能問題。如何解決?
  • HashMap是執行緒安全的嗎?Hashtable呢?ConcurrentHashMap有了解嗎?
  • 關於JVM
  • java記憶體模型
  • 垃圾收集器
  • 雙親委派模型。
  • 你有什麼問題要問嗎?

二面

  1. 自我介紹
  2. 有沒有參加過ACM,有沒有參加過其他競賽,有沒有拿過什麼獎?研究生期間,做過什麼專案,發過論文嗎?有什麼成果?

我的回答是,沒參加過ACM,本科參加過數學建模競賽,名次並不好,沒拿過什麼獎。(面試官開始有點失望的樣子了)但是,我說研一做了一個軍工專案已經投入使用,專案資料是保密的,但是內容不保密,可以講講,面試官比較有興趣了。

  1. 你覺得你有什麼優點、缺點?你覺得你身邊比你優秀的人,他們有什麼特質是你沒有的?
  2. 做java有幾年了?實習期間做過什麼專案,你能挑一個給我講一講嗎?

做過很多專案,但是這次想說個複雜點的,也是第一次講這個專案,描述有點亂,方向帶偏了,導致後來面試官沒聽明白我說的是什麼,我也沒聽明白他問的是什麼,導致氣氛十分尷尬。

  1. 可能是為了緩解尷尬氣氛,面試官問了個簡單的問題,氣泡排序和快速排序有什麼區別。
  2. 你有什麼問題要問嗎?

應該還有其他問題吧,答得還可以,但是具體問的啥我忘記了。

總結:之前一直以為,我投的是軟體開發崗,面試官對硬體專案不感興趣,就一句話帶過,很少提。但是經過二面,意識到,其實面試官更多關注的是應試者的學習能力、態度、經歷、思考等,就算沒有太多軟體開發相關的專案經驗、成果,把你的體現在其他方面綜合實力展現給面試官就好。所以後面給面試官自我介紹的時候,不單聊實習專案,還會說說研一做的硬體專案,並強調已經投入生產環境使用。

感覺這次面崩了,覺得沒戲了,就沒再準備。後來四五天的樣子,內推人說,你竟然面到交叉面了,好厲害。基本上沒收到拒信或者進度表上不是顯示“已回絕”就表示還有戲

三面

8月12號,應該就是交叉面

從三面開始,感覺就差不多清楚套路了,自我介紹怎麼說,怎麼引導面試官去問我想讓他問的問題等等,都有自己的想法了。面試官提出一個問題,是想考察什麼,我也基本清楚,有時候不確定面試官的意思的時候,我會反問一句,您是想考察XXX方面的知識嗎?我有一些理解,可以給您講講。

  1. 按套路來,還是自我介紹。
  2. 由於我強調了自己做的硬體專案,不出意外的,面試官問的比較詳細,由於都是自己做的,理解的很清楚。但是這裡有個重要一點是,你是清楚這個專案,你也研究過這個領域,你怎麼把你做的專案,講的通俗易懂,其實不容易。我通常會用面試官可能熟悉的知識去對比著講硬體專案的東西,所以就很容易講明白。不過阿里的程式設計師,說完全不懂硬體,不可能。

依託於專案問了TCP和UDP的區別。

  1. 在實習的時候,做過什麼專案沒有,哪些是技術性比較強的?可以講一講嗎?

講了一下專案、說了說訊息訂閱釋出,提了K8S、docker等。

  1. Redis有了解嗎?有什麼特點?分散式有了解嗎?(瞭解都不多,但是可以聊聊想法)
  2. 有讀過什麼原始碼嗎?
  3. 考察一些java基礎知識
  • HashMap、ConcurrentHashMap、volatile 、sychronized
  • Java記憶體模型、垃圾收集器、類載入機制、雙親委派模型
  • Spring相關 IoC、AOP
  • 資料庫相關:ACID、事務隔離級別、MVCC等
  • 最後一題:一個3升的桶和一個5升的桶,怎麼得到4升的水。

上面的問題基本都答出來了,多數聊的比較細緻,面試官挺滿意的,直接就給我說:好,可以,後面等通知吧!

四面

三面面完當天,晚上9點接到四面電話。感覺像是總監面。

這次面試和前面感覺明顯不一樣,問題不拘小節,注重思路,重點聊了實驗室的硬體專案,還有在網易實習的時候的一個簡單的任務,然後聊了實習那個專案的一些問題。

後面又問了一些簡單的問題:

  1. HashMap、ConcurrentHashMap、volatile 、sychronized
  2. 出現死鎖怎麼排查?
  3. 如果檢視堆記憶體資訊?
  4. 出現OOM怎麼排查問題?

還問了其他一些問題,我就記不太清了,不是很難,但是自認為回答的都比較具體,講的比較清楚。

HR面

8月17號

HR面就比較常規了,但是阿里的HR面也要讓我給她講專案,也是很神奇。

  1. 你覺得你有什麼優點?有什麼缺點?分別舉例講一講。你怎麼克服缺點?
  2. 你覺得最有成就感的一件事是什麼,你遇到了什麼問題,怎麼解決的?
  3. 你前面跟其他面試官講過一些你做的專案吧?可以給我講講嗎?你要考慮到我不是一個做技術的人,怎麼讓我也聽得懂。專案中有什麼問題,你怎麼解決的?你最大的收穫是什麼?
  4. 你在實習工作中,有什麼收穫?有什麼貢獻?
  5. 你目前有面試過其他公司嗎?如果讓你選,這些公司和阿里,你選哪個?(送分題,回答不好可能送命)
  6. 你期望的工作地點是哪裡?
  7. 你有什麼問題嗎?

面試完,HR說8月25號之前,實習轉正會答辯結束,把所有面試情況盤點,後面一到兩週會給出結果,發出意向書,如果下次我再給你打電話,會討論薪資。

六面

8月24號,中午在午休,突然接到阿里的電話,一聽聲音比較像二面的面試官,二面面崩了,於是心裡也是很緊張。跟面試官說我等我5分鐘,整理一下衣服,找個安靜的地方面試。期間調整了一下情緒。

5分鐘後面試官打來電話

  1. 你面了幾面了?我回答您這算第6面了。面試官說嚴格說我這不算是面試,就是想了解一下情況,時間比較緊,咱們簡單聊。
  2. 1分鐘的自我介紹。
  3. 做專案的時候,你有什麼收穫,遇到問題你是怎麼解決的?
  4. 有參加過什麼競賽嗎?有發過論文嗎?有什麼成果嗎?
  5. 參加過什麼學生活動嗎?擔任過什麼職務?
  6. 讀過什麼原始碼嗎?關注過什麼開源專案嗎?
  7. 分散式有了解嗎?
  8. 併發程式設計怎麼樣?執行緒池有了解嗎?
  9. 在實習期間有什麼收穫嗎?
  10. 實習期間你對公司有什麼貢獻嗎?
  11. 你有什麼問題嗎?

這裡,我問了面試官,要勝任阿里的工作,我有哪些方面是比較欠缺的,是要努力補足的?

面試官,想了想,說基礎知識、態度都挺不錯,做事情很積極,也有自己的思考,比如你提到解決問題要總結更深層次的問題原因,這很好!以後可以在Java和分散式方面進行更深入的學習……你可以加我釘釘,說後面方便聯絡。

後面諮詢了一下內推我的朋友,如果我能進去,6面面試官應該就是我的直接主管了,6面面試官說你沒問題,那就沒問題了,可以放心了。

總結

  1. 可以看到,其實面試官問我的問題都是比較常規的,沒有特別難。而且有些問題面試官幾乎每次都問。常見的問題,不管是哪個公司的哪個面試官,暫時沒想好問你啥的時候,脫口出來的就是最常問的問題,一定要深入的去準備,別回答的太皮毛。在網上刷刷面試題,就想應付這些常見問題是不行的。你要去看原始碼,去摳細節,回答的比別人詳細具體,這樣才能突出你的認真和努力。

比如說:TCP和UDP的差別,個人認為如果只答出來:

TCP面向連線,是可靠的,UDP不可靠。這樣的回答完全不夠。

回答應該全面、詳細,我的回答中還包括:

    • 對比了TCP、UDP的內部資料結構。
    • TCP基於資料流傳輸,UDP基於包傳輸。
    • TCP建立連線需要三次握手,講了一下三次握手具體過程,有什麼作用。
    • 提到了TCP擁塞控制,以及相關問題。
    • ......

面試官看我回答很詳細,還沒回答完,就很滿意的切換問題了。

  1. 前面有提到,如果你投的網際網路,做軟體開發,你的專案經驗少,可以用硬體專案來補。向面試官強調解決問題的思路,你的收穫,以及延伸出來的一些思考,這樣可以向面試官展現的的綜合能力。也許你現在你專案經驗少,基礎不夠好,但是你要有優秀的特質充分展現給面試官。
  2. 語言表達和溝通能力很重要,很重要,很重要!如果這方面不是很強, 面試一定要多演練、準備。引導面試官去問你熟悉的內容。

最後

1.技術基礎必須紮實:演算法、資料結構、作業系統等,阿里面試對技術的基礎非常重視,基礎紮實的同學有利於在前兩輪突出重圍。

2.技術寬度:主要集中在高併發、多執行緒、分散式架構,大以及常用中介軟體(快取等)的選型和比較。

3.技術原理深入:重點還是提前準備好JVM、多執行緒高併發這塊。

4.參與的專案總結:你需要清楚你所做專案的關鍵細節、優化、特點、原理。

5.很多所用第三方庫&中介軟體等的原理,即使你不知道,也要有自己的想法能夠說出如何代替實現,比如單點登入的替代方案。

6.最好,提前準備一個大資料訪問,比如pv擴大1000倍,你的架構或者技術方案應對措施。

7.最後,千萬不要倒在HR面試環節,避重就輕是重點,特別是優點和缺點,如果問到你的規劃是什麼,請記得一定告訴HR你想成為一名優秀的技術專家!

以上就是我的6總結,這些都是不斷面試積累來的經驗,分享出來避免更多同學少走彎路,早日進入BAT等一線網際網路公司!

更多阿里高階java必考題與答案加群:795632998,進群即可獲取