前言
鑒于在網上搜“阿里三面”搜出來一堆“阿里巴巴三面牙刷”,沒有任何借鑒意義,只能自己親身經歷了,故寫點經驗以后面試可以參考。本人參加了5月5日的筆試,在5月20多號接到了電面,緊接著第二天是電面二面,5月30號經歷了傳說中的終面,下面分階段回顧一下整個阿里校招歷程。
筆試
5月5號先去參加了藍橋杯,然后趕回學校筆試,稍微遲到了一會兒。幸虧阿里檢查了身份證!才發現忘在了考場。。整個筆試有些心不在焉,不過現在想想,有些不會的題就算時間多了還是想不出來,會的題自然很快就寫出來了。題不算太難,肯定還是涉及操作系統,數據庫,算法,網絡等知識,不算太深。和之前筆試其他公司不一樣的地方是有點像數學題的感覺,大題只有最后一個讓你寫代碼了,其他的都是寫算法思想就行,還蠻靈活的,起碼我沒見過,感覺沒有平時的積累,準備也沒什么用,有的沒有積累就當數學題也能做的,不過搞ACM的這些肯定不在話下了~
經驗:
1、如果你操作系統的水平能達到考操作系統時的水平,包括網絡、數據庫等,應付筆試題應該是松松的,因為不會考的很細,都是一些考試重點,很基礎的知識。不過忘是肯定的,所以復習很有必要。大題就有操作系統那幾種調度方式的周轉時間等的填表,可能會忘的東西,但是非常簡單。
2、搞搞ACM應該有幫助,算法不會是經典的快排啊什么的,都是類似數學題,有大題有小題,我等沒搞過ACM的屌絲只能用腦袋干想了。。。
電面一面
電面時間是5月20多號的晚上8點多了,非常突兀,沒有通知,直接就是面試的電話。他們規定的面試時間盡量控制在一小時,我面了68分鐘,問到后來都抖了,是純碎的技術面。剛開始有暖場,試圖讓你放松,而事實上我緊張的不行。。進入正式面試時會問一些問題,感覺面試官那里應該有個題庫,就是從里面挑出來問,會的話他可以層層深入直到你不會。。你不會的話自然就直接換題了。。
當時先問了malloc和new的區別,當時感覺不明覺勵,以為是要回答到內存中的層面,開辟內存的方式啥的。。說不太了解底層的,感覺都是應用中的區別。。說了new可以有構造函數,傳些參數初始化啦之類的。最后問了問面試官,居然malloc是個函數,new是個操作符也算區別!所以不要想得太玄乎,再顯而易見的區別只要是區別都可以回答的。。
后來問了代碼運行時在內存中的分布,就是堆、棧、代碼區、靜態區那幾個,說說各自是存什么的就行了。后來問了是從低到高還是從高到低啥的,然后他自己來了句好像太深了,算了。。我說了個大小端。。他就問了大小端和什么有關,我說是CPU,然后就問了intel處理器和AMD處理器神馬神馬的已經過于底層聽不懂了嗚嗚嗚。。這個題就算跳過了。。。
還有序列化和反序列化,怎么保證數據的正確性。。這個當時木有答上來,因為沒用過java的序列化和反序列化,用的也都是上層的XML,JSON的格式,底層到底怎么搞得不清楚。。讓面試官給我講了半天,他還說“是我面試你還是你面試我”。。搞得我緊張的都不敢說話了。。中間某些人還不停給我打電話,搞得我都聽不清。。特別尷尬。。總之越來越緊張。。還問了進程和線程的區別,我就稀里糊涂想到哪里說道哪里了。。用詞特別不專業。。
還有個問題是鏈表怎么判斷有沒有環路,我說了做個標記,還有固定一個位置看有沒有指回來的兩種方法,太水了。。面試官提示我說小學有一種題是操場上的追擊問題,試圖啟發我,無果而終。。。其實就是設兩個指針,步長分別為1和2,然后看有沒有追上就可以了。
總的來說,這第一次電面我是真的越來越緊張,雖然面試官一直試圖讓氣氛變得輕松,但效果甚微。。我是越來越沒有自信。。感覺自己太水了。。想趕快結束面試。。不同的題目中間還夾雜著一些閑聊的話題,不過我太緊張了話不是很多,中間會有沉默的時候,感覺好尷尬。。面試官人真的特別好,最后說第二天還有一個面試,指出了我的不足,讓我改進,希望我能展示出來自己的優勢。他說我基礎知識還可以,但是特別不系統,一聽就是沒有為面試做準備,希望我明天能好好表現。真是感動啊。。表現那么差居然都給二面的機會了。。這么好的人忘問花名了⊙﹏⊙b汗。。
經驗:
1、一面一定是可以準備的,面試題網上都能搜到一些,或者多參加一些筆試,有些簡答題和面試題也差不多。而且面試官那里的題庫還是挺龐大的,主要是想摸摸底,你了解的他會深入問你,不了解的也沒有關系可以換道題。感覺這個時候其實完全沒有必要緊張,有不會的很正常,別像我問著問著我聲音越來越小都不想回答了額。。
2、做好面試的準備,調整好心態,本來以為這個電話是通知我電面時間的,結果直接開始,心態沒調整好,遇到不會的就緊張。。后來問了同時接到電話的大牛,也是有不會的,也有答錯的,都一面給過了,所以不用太擔心了~一面就是基礎知識,加上一點點聊天的輔助,沒有問我簡歷上相關的問題。
電面二面
第二天晚上七八點鐘的時候接到了二面的電話,當時剛好自己在寢室,比有室友聽著要放松了一些,加上跟同學交流,感覺不會也沒什么,總體聊得還挺開心的。這次就是基礎知識外加開放題和簡歷上的項目的了解了。
還好一面那種基礎知識的過了也沒怎么問了,不過問了序列化,我就是一面那個面試官說的大體講了一下,呵呵。。然后問了static,說不是static的函數能不能使用static的變量,我說可以。因為這次做好了準備不是很緊張,我的話就多了一些,順便說了static的函數不能用不是static的變量。我這一說他就問原因,我說了靜態的就一份啥的,他讓我從什么java的什么機制上說,我也不知道啥意思。。我就說static在靜態區,一個類就一份,非靜態的成員變量得new才能有,而且在棧上,沒法訪問什么的blabla...
再有就是詳細聊了聊簡歷上的項目,最后問了個“為什么銀行有取號機而超市結賬的時候沒有”,我著實想了一會兒。。剛開始想到的是銀行有VIP啥的,但是面試官馬上說那超市也可以有VIP隊和非VIP隊,有道理啊。。然后就想到超市有取號機的話感覺取號機前面會排隊,因為結賬時間比較快,和取號叫號相比差別不是很大,而銀行辦理業務比較慢,差別就大了,所以超市沒有必要。他說我沒有看到問題的本質。。唉。。他好像是要提示我,問我一面有沒有問我操作系統的知識,我說問了進程線程的區別。他又說讓我舉個異步的例子。。發現天天說ajax異步刷新啥的,對異步不怎么理解啊。。人家還給我解釋了一下異步。。又被鄙視了。。不過現在想想銀行是異步,超市是同步,可是我還是不知道為啥啊。。問了好多人也沒什么特別好的專業性的解釋,我還問了三面的面試官,他說這是個開放性的題,是想看我解決問題的思路的。