search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

阿里巴巴面試的一些技巧

面試是有套路的,面試阿里這種級別的公司更是。客觀的講,面試除了自身的實力以外,技巧性是相當重要的,不管是一個技術再厲害的大牛,如果沒有對整個面試環節有一個大致方向性的把握,對於面試官所要提問的內容毫無準備,失去offer的可能性很大。因此,我將分享下自己的經驗,希望幫助更多人,在面試過程中可以少走一些彎路。

一、筆試

曾經做過的網易、蘑菇街筆試,按難度排序,大致應該是:阿里>蘑菇街>網易,當然這裡僅僅考慮了難度,拋開了各個公司的評判標準。比如說,阿里的筆試你考60就給你過了,但是網易可能就要你考75。阿里的筆試題總共包括兩個部分,前面一部分是選擇題,總共20道,時間是40分鐘。也就是說,40分鐘后,不管有沒有做完,選擇題會自動進行提交,然後你才可以繼續做第二部分。

從我做下來的情況看,時間相當得趕,基本上會來不及。題目內容大多是一些智商題,概率論,操作系統、網路等基礎題。給我的感覺是,只要是技術面,選擇題都是從一個大的題庫中隨機抽取,而不是跟某個具體的崗位掛鉤。比如一些概率題,會有考察貝葉斯公式的,一些智商題,可能需要你用到簡單的動態規劃來推算。個人認為,選擇題部分主要還是在考察一個人的基本功和知識面。第二部分總共有三道大題,時間大概是兩個小時。一般情況下會考一道演算法題,難度不會太大,但是如果你沒做過這樣的題目,基本上還是做不出來。下面列舉幾道筆試原題:

在一個數組中,有若干個數,每個數字都出現兩次,也就是說數組中如果出現了一個2,那必定存在另一個2,除了一個數僅僅出現了一次,如何在空間複雜度為O(1)的情況下找出這個數。

這道題目如果你有做過,你會發現解決問題的方式相當巧妙。具體答案可以自行百度,這裡不贅述。

從100個數中隨機抽取K個數,要求K個數不能重複。

你也許可以馬上想到用暴力的解決辦法,如果重複了,那再次抽取,直到抽完K個數。這道題目也有巧妙的解決辦法,詳見《編程珠璣》隨機數那一章。

另外兩道題目,一般會出現一道併發編程題,往往它會給你一個場景,讓你提供一個解決方案,比如說設計一個活動搶購之類的程序。這些題目,大多萬變不離其中,從最本質上來說,它可能僅僅是讓你寫一個生產者消費者模式或者是哲學家吃飯思考的問題。

一般情況下,筆試部分選擇題做得不是很差,後面三道大題能做出兩道來基本上就過了。

二、面試

面試這個過程其實共性不多,因為面試官會根據不同的面試者進行提問。為了避免泛泛而談,我可能也會以幾個實際的面試題為例。

一般情況下,總共會有三輪,技術面+HR面。如果你參加的是內推,所有的都是電話面試。對於我來講,我更喜歡與面試官一對一面試,通過一些肢體語言和紙筆,有利於把一個問題更好得表達清楚,我並不懼怕現場寫代碼。在這方面,網易做得就比較好,先通過一輪電話面試篩掉一部分人,然後再參加現場面試,對於外地過來的同學,車票可以報銷。如果你參加的是校招,通過了筆試,一般會邀請你去一個酒店進行面試。

面試一般會讓你先做個自我介紹,這時候不要再去重複得介紹一些個人信息,面試官跟你面試的時候,肯定是已經拿到你的個人簡歷了,可以介紹一下自己平時經常做的事情,自認為比較擅長的或者自己喜歡的,自我介紹一分鐘足矣,在這過程中,應該是讓面試官知道你擅長什麼,從而引導面試官有針對性的提問。

接下來會問一些項目經驗,你應該是挑一些有一定的含金量,並且印象比較深刻的(面試前,有必要回顧下做過的項目)。大致可以按照這幾點來介紹:自己負責了哪個模塊;把這個模塊的大致流程介紹一遍;在做這個項目過程中碰到了哪些問題,最後是怎麼解決的;最後就是對這個項目的收穫。介紹完項目經驗以後,面試官開始自由提問,以我多次面試的經驗來看,面試的問題都不會太難。我可以大致給出面試的提問範圍:

關於java虛擬機,你需要知道JVM的內存結構,垃圾回收機制,內存分配策略,類的載入機制以及內存模型。以上這些請參考周志明的《深入理解java虛擬機》。

熟悉java各個容器的實現,例如HashMap、ConcurrencyHashMap等,最好去閱讀源碼,這次面試關於HashMap原理三個面試官問了我三次,重要程度不需多說了。

熟悉java併發編程,尤其是java.concurrency包下的api,併發作為一塊高級內容,對於很多人說,很少接觸,也很難將其掌握。幸運的是,面試官在這一塊都不會考得太深入,推薦《javaconcurrencyinpractice》。

熟悉常用的數據結構、演算法。很多人認為演算法在實際項目中根本用不到,並且覺得演算法太難,就疏於學習。那為什麼所有的大公司都喜歡考演算法呢?尤其是像微軟、facebook這樣的巨頭?演算法不僅需要必備的理論,更需要親自動手,有關演算法的書籍更多,找一本適合的就可以了,題庫推薦leetcode。

其他還有像設計模式、資料庫都很重要,這些東西並不是靠一兩個月就能掌握,還是需要平時多積累、總結。推薦《headfirst設計模式》,如果有你認為學習能力強,可以直接看四人幫的《設計模式》,資料庫就不多說了。

在這裡,我並不是想給出一個面試寶典一樣的東西。事實上,上面列出的東西,沒有兩到三年的時間學習,根本掌握不了。要想成為一名技術大牛沒有捷徑。還是希望大家可以認真踏實的學習,一旦你真正掌握了這些,面對面試官的提問基本上可以達到遊刃有餘。

三、總結

總體來說,大多數企業考慮到校招針對的是在校學生,面試都不會出現太難的題目。然而在如何學習這個問題,筆者還是有話要說的,我見過很多人,光看書或者視頻,忽略了實踐,最終的結果就是我能看懂代碼,但是我不會寫。更有甚者,拿著一本與自身水平不適應的書例如《thinkinjava》在那裡啃,導致自信心大受打擊,學習興趣驟減。武俠小說告訴我們,練一門與自身功力不相符的武功只會走火入魔。

馬克思主義哲學告訴我們,要理論和時間相結合,實踐是理論的基礎,理論對實踐有反作用,理論和實踐是相輔相成的,缺一不可。

我剛才強調了實踐的意義,但是我認為,如果你做過類似的項目已經足夠得多,就不要再去做重複勞動。我無意去貶低在學校做的項目,但是事實就是如此,99%的學校里的項目只能算個Demo。試問,有誰考慮了代碼是否足夠Elegant?是否足夠Robust?是否足夠Sequrity?如果沒有,那就遠遠達不到作為產品級別的工業強度!那麼這樣的項目做得再多也是無用功。

另外,文章開頭談到我兩次失敗的經歷,都是到了HR面,有人說能面到HR,基本上就已經過了。而我兩次都敗在了HR面上,我一度懷疑自己是不是情商有問題,後來我發現大多數的HR都是SB,你要問我為什麼,我可以給出邏輯證明,period。

最後,如果面試失敗也不要灰心,面試很大一部分是有運氣成分的,筆者不乏見過很多被BAT刷掉,最終去了微軟谷歌的,你能說他們技術不夠強硬?重要的是每次面試后,都能做反思、總結,吸取經驗教訓。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦