面經:阿里一面自我剖析---Java崗(40分鐘)

這裏說明一下我是投的阿里淘系技術部,至今已經面了阿里四面,四次都是電話面試,面試體驗都很好,即使問到你不是很瞭解的方面了,面試官會給一些引導,甚至也會悉心給你講解。
我是8月22號下午一面的,一面面試官基本是按照我的簡歷上面的,感覺很是幸運。

一面鏈接:面經:阿里二面自我剖析—Java崗(50分鐘)
三面鏈接:面經:阿里三、四面及HR面自我剖析—Java崗(80分鐘、30分鐘、15分鐘)

我:自我介紹大學至今所學

作爲一個應屆本科生想進阿里不是那麼容易,所以大學期間都學了什麼技術,參加了那些競賽都要說出來,展現自我的風采。

面試官:本科到現在比較擅長的技術點

我:最近實現了一個簡單的Tomcat

既然問到了擅長的技術點,就要把自己的亮點展現給面試官,很普通的技術,大家都會,也就沒必要錄用你了。

面試官:說一下Tomcat原理及手寫細節

我:Tomcat的原理簡單描述

這裏我就不描述了,等後續我會把搭建一個簡易的Tomcat整個流程整理出來一篇博客

面試官:你用了netty代替socket,那你對netty瞭解多少

我:介紹自己瞭解到的netty知識

面試官:netty中NIO的實現原理

我:這裏回答的不是很好

因爲netty是從網上找的來代替socket,本身對netty瞭解感覺也不是很透徹,就大致介紹了netty用了NIO,NIO是非阻塞的,由Channel通道、緩存Buffer、Selector選擇器對象組成等

面試官:你的Tomcat怎麼把Java類文件加載過來的?

我:java加載文件,classloder

面試官:Tomcat怎麼把應用的文件加載出來

我:自己寫的嘛,所以把包的路徑固定了,根據固定路徑去加載我的文件

面試官:Java併發相關,hashmap瞭解,那concurrenthashmap瞭解嗎

我:hashmap、hashtable、concurrenthashmap介紹和區別,重點講解concurrenthashmap

面試官:hashmap爲什麼是線程不安全的?

我:詳細介紹hashmap產生死循環的過程

到現在我也面試一些公司,感覺hashmap、hashtable、concurrenthashmap,這是必問的知識點,所以一定要牢牢掌握

面試官:volitail和synchronized瞭解嗎?他們的區別能介紹一下嗎

我:介紹了volitail,介紹了synchronized從無鎖升級到重量級鎖的過程

面試重點鎖:jvm方面的鎖synchronized和繼承Lock接口的鎖,也要很清楚的瞭解

面試官:jvm相關知識,full GC發生的原因可能有哪些?

我:老年代滿了、大對象將要進入老年代,老年代空間不足、元數據區滿了。

jvm垃圾回收算法等方面的知識也是面試常問的

面試官:MySQL常用的兩個底層引擎,知道區別嗎

我:innodb和myisam,介紹區別

基本說到數據庫,數據庫索引和數據庫是引擎是必問的點

面試官:一個服務怎麼來選擇是用SQL還是noSQL?假設有1百萬行數據,用戶會對數據做隨機查詢,沒有明顯的數據熱點

我:我說是用SQL

面試官:爲什麼用SQL,不用redis

我:1百萬條數據,算是數量多的數據了,SQL可以輕鬆抗住的。但是1百萬,Redis也是可以的(這裏我不是很清楚爲什麼,面試官很好的給瞭解釋)

面試官:Redis是作爲緩存存在,大部分是用於熱點數據存儲,如果沒有明顯熱點數據,用Redis的用處不大,所以一般會採用SQL,如果用Redis來抗住這樣存儲的量的話,需要一個相對較大的存儲空間來給數據庫抗壓,但如果說我們考慮到成本不能用太多的Redis內存存儲的話,那麼他本身對於緩存來抵擋熱點功能的話,起不到太多的作用,這時可能就是打入MySQL緩存會好一些,這算是一個技術選型上面的考量

面試過程中有難度的一個是考算法,另一個就是場景題,從場景題的回答中就能看出我們是不是真的把這些知識牢牢掌握並且能夠應用於實際中,並且要考慮諸多因素來進行分析,畢竟學了理論最終還是要應用的

面試官:http和https之間有什麼區別嗎

我:介紹了http在傳輸層和http的缺點,從而引出https,以及https如何彌補了http的缺點

面試官:在這個基礎上聽過http2協議嗎

真正熱愛技術的人會經常去關注一些業界新興技術的,因爲互聯網時代技術迭代太快了,我們要時刻關注新技術,學習新技術

我:不是很瞭解,但是說了一些

面試官:這是業界最近出來的,可以瞭解一下

(這時已經過去20分鐘了,技術方面感覺沒有發揮好,一些知道的沒有很好的表達出來)


開始說項目了

面試官:介紹一個你認爲做的一個最大的最有難度的項目吧

我:項目介紹三分鐘

這裏還是把我的項目背景簡單介紹一下吧:

河北大學大型儀器論證系統,我們學校有一個實驗辦部門,管理着學校各種大型貴重實驗儀器的採購,一旦有實驗室需要購買,就要填寫很多申請信息交到實驗辦,然後實驗辦人員再通知相關專家統一時間來實驗辦進行申請論證,實驗辦人員根據專家給出的評審結果決定是否同意採購。這個過程太麻煩,於是我們就做了一個線上系統來緩解這些麻煩。首先這個系統涉及三個角色,實驗辦人員,申請者,專家,申請需要採購儀器的時候就去系統發起申請,填寫相關信息,填完完信息後,實驗辦人員首先進行一個初篩,不通過可以直接駁回,如果能通過就可以安排專家進行論證,並且短信通知專家,專家會對該申請從不同方面進行打分,並且可以對申請者進行提問,每一次專家提問或者是申請者回答專家的問題,都會有對應的短信提醒,等所有專家論證結束了,實驗人員會參考專家打分給一個總評,並決定是否同意採購

這裏一定要介紹最能拿的出手的項目,並且在介紹項目的過程中展現我們對於業務的把控能力,攻克了那些技術難點,擔任什麼角色,在項目裏面學到了什麼,有了什麼成果。

面試官:技術上的難點

我:技術難點的話有一個是角色權限校驗、阿里雲的短信接口、調用微軟的在線預覽

面試官:說說對spring-boot的瞭解

我:spring-boot這個框架是基於spring框架的,我是先介紹了AOP和IOC

對於spring框架AOP和IOC是基本要了解的,也算是框架的核心

面試官:另外一個項目,主要負責了什麼

我:個人獨立完成的,工期及技術上難度不大,從需求分析到原型圖、數據庫設計以及編碼全是個人完成

面試官:這個項目有一個前端app,你的APP和服務端是如何通信的

我:通過http鏈接

面試官:長鏈接還是短鏈接?

我:短鏈接

另外一個項目確實是做的時間比較長,有些細節都忘了,所以面試前把我們做過的項目重新過一遍是很重要的

面試官:GitHub上有開源項目嗎,有參與開源項目嗎

我:我們實驗室是用的GitLab

面試官:我看你CSDN寫了很多博客都是你自己的東西嗎

我:(這裏是很開心,面試官看了我的博客)確實是自己寫的,也有一部分是轉載的

阿里是很注重個人能力的,很多東西只靠自己說還是沒有太大的說服力,所以我們有實際的東西給面試官來看是最好的證明

面試官:我看你博客也寫了一些算法相關,問一個算法。假設一個業務場景,比如說百度地圖,需要你來實現從A地點到達B地點,中間可能需要走路、乘坐公交或者其他交通方式,這個導航功能你要怎麼設計?

我:首先是想到了圖,其實對圖的瞭解不深,面試官只要求說一些大概思路。想到了迪杰特斯拉算法、弗洛伊德算法、廣度優先遍歷這些來查找幾條可行的路徑。比如我們的地圖,有多條線路,有時間最短、換乘最少、走路最短這些要考慮

對於圖這種數據結構,課堂上數據結構學過,私下並沒有做過多的瞭解,所以感覺回答的不是很理想

面試官:有參加過一些競賽嗎,有獲獎經歷嗎

我:講了大一參加的一個人臉識別國家級項目

還是那句話,想進阿里的人很多,你要方方面面優秀了,阿里纔會去認可你,所以我們在校期間有精力的話儘量多參加一些比賽競賽吧,我四面的時候這方面就很難受

面試官:假設在拍臉的時候,鏡頭前有一個真實的人臉,後臺數據有一些人臉的照片,你是怎麼匹配到鏡頭前這個人就是數據庫中的某個人的

我:我們當時是調用的face++接口,他的原理當時是根據人體面部68個點來進行匹配,並且我們在拍照的時候要求張嘴,扭頭來分辨這是一個活人而不是照片,我記得我們當時是達到了80%多的一個匹配度

由於這個項目是大一的時候參加的,過去都兩三年了,具體的內容很模糊了,給面試官說的也沒有太細

面試官:OK,我沒有問題了,你有什麼想問我的嗎

我:問了阿里的rpc框架,日誌

面試官:面試官對於我的提問都很認真的做了回答

一面至此結束,面試官的問題基本都回答上來了,只是有些回答不是很好,但是阿里面試官都是很認真的面試你,這也是阿里面試官的一個優點,不論你面試的怎麼樣,不論你的問題是多麼幼稚,他們都會很認真的回答你,以一種平等的身份和你溝通

期待錦鯉!!!

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