1. 程式人生 > >阿里2019實習生面經

阿里2019實習生面經

經過兩次嘗試順利通過了阿里的應屆生面試,馬上進入實習階段,這裡把面試經驗分享給大家,希望給即將實習的同學一點幫助。 第一次面試的是阿里的實習生,公司是螞蟻金服,有師兄內推,具體職位是分散式排程,一共過了三輪面試,最後拿了B+。 時間過了比較久了,所以具體哪些知識是哪輪面得有點記不清,這裡就隨便說說了,還請見諒。 一輪面試問了hashmap,具體專案,還有虛擬機器,虛擬機器這時候我還沒學,估計導致的減分不少,其他記不清了。 二輪面試面了分散式的很多東西,還有tcp/ip三次握手四次揮手,以及不少的虛擬機器,這時我已經學了不少虛擬機器和分散式的東西,所以結果不錯,如果tcp/ip握手那裡記得更詳細,可能會更好,比如說ACK/FIN以及相應的序號等等,我當時只記得三次握手和揮手間都是通過連續的序號進行關聯的。 三面面試官問了一個數據庫訪問一致性的問題,問什麼時候兩個資料庫會出現資料不一致的情況,答案有幾個,其中之一是向從資料庫寫資料時從資料庫網路斷了,這時無法判斷是不是寫入成功了。另外問了虛擬機器的垃圾收集,還有分散式的負載均衡等等。 三面結束以後以為穩了,但是過了兩三週沒結果,最後狀態變成了已回絕。據說是因為同級別的研究生比較多,結果涼了,說白了就是實力還差一點。但是這時另外一個部門的大哥聯絡了我(我們之前不認識),說看了簡歷覺得還不錯,可惜拖得太久了,招人時間過了。。。。。應該說是我的幸運吧,這個大哥確實給了我很大幫助。

後來又內推了一次,這次內推的部門是菜鳥(其實內推的時候不知道部門是啥),內推人就是上次那個大哥,崗位是java研發。 第一輪是視訊面試,然而我電腦攝像頭壞了,所以改成了電話面,具體內容記不太清了,只能說因為是第一輪的關係,面的比較淺,沒有涉及虛擬機器分散式方面的東西。 第二輪是電話面試,這次面的很詳細,包括具體專案中用到的三層結構DAO,Service,Controller,以及瀏覽器訪問網頁到伺服器發回響應的具體過程,cookie竊取導致的session劫持,以及解決方法(服務端設定httponly),還有如何應對攔截報文導致的資訊洩露,我回答的是利用https進行加密處理。之後又問了設計模式相關的東西,我對設計模式瞭解一些,但不是所有的都很清楚,主要是觀察者模式,工廠模式等。之後面試官發了個郵件,直接來了個線上測試,題目是簡單實現觀察者模式。這個自然沒問題,維護一個listener佇列,事件發生就遍歷呼叫介面方法即可。

第三輪可以說是非常懵逼了。二輪過了一段時候後的一天早上,HR突然給我打電話說到北京當地面試,面試專場時間到當天24:00就結束了,這是最後一天……..別管啥情況,我立刻買了票到北京,終於在約定的時間前到達指定地點,然後負責技術面的面試官還沒來,先跟hr聊了會,倒是沒問啥特別的,不知道是不是常規hr面都這樣。。。不過hr是個美女啦,也比較好說話,感覺運氣不錯。後來面試官來了,第一個問題是講解我做過的一個專案,用一個小白板加彩筆演示。具體涉及到了需求分析,原型圖設計,資料字典設計,前後端對接,各種框架比如springboot,mybatis等。之後面試官設計了一個場景,輸入關鍵字,同時在三個引擎搜尋,然後返回結果,要求返回時間在0.2s,不管搜到多少都必須返回,同時如果0.2s內就查詢到了所有結果,也要儘快返回。毫無疑問是個多執行緒的場景,我的思路是把所有返回結果都存到一個json裡,開三個執行緒分別查詢,查到了就把結果放到json裡,鍵事先定義好,為了避免返回時正在往json放資料,可以用一個CopyOnWrite鎖來限制一下(雖然我沒實際用過這個鎖),另外把一個標識有多少個搜尋引擎完成任務的標誌位+1。主執行緒可以用一個定時器,0.2s後把某個標誌位設定一下,然後sleep,每隔一段時間檢查是任務完成數,都完成了直接返回,沒完成但是時間到了也返回。(當然用notify喚醒主執行緒可能會更好)。 最後問了資料結構相關的問題,主要是hashmap和treemap,以及各自特點和應用場景。這個屬於比較常規了,沒什麼問題。最後問了紅黑樹的有序遍歷,我假期自己實現了一遍紅黑樹,這裡稍微想了一下,就用遞迴實現了,使用二叉樹的中序遍歷即可。 然後就是問面試官問題的時間了,最後面試官說等進一步通知,然後送我到了電梯口。總的來說感覺很好,但是成不成功還要看情況才行。 過了不到一個禮拜吧,來了個電話,問什麼時間能去實習啥的,感覺基本就是穩了,又過了兩天正式確認電話就來了,之後還有個錄用喜報,同意的話就算是進入實習階段了。