阿里巴巴面試的一些技巧
面試是有套路的,面試阿里這種級(jí)別的公司更是??陀^的講,面試除了自身的實(shí)力以外,技巧性是相當(dāng)重要的,不管是一個(gè)技術(shù)再厲害的大牛,如果沒(méi)有對(duì)整個(gè)面試環(huán)節(jié)有一個(gè)大致方向性的把握,對(duì)于面試官所要提問(wèn)的內(nèi)容毫無(wú)準(zhǔn)備,失去offer的可能性很大。因此,我將分享下自己的經(jīng)驗(yàn),希望幫助更多人,在面試過(guò)程中可以少走一些彎路。
一、筆試
曾經(jīng)做過(guò)的網(wǎng)易、蘑菇街筆試,按難度排序,大致應(yīng)該是:阿里>蘑菇街>網(wǎng)易,當(dāng)然這里僅僅考慮了難度,拋開(kāi)了各個(gè)公司的評(píng)判標(biāo)準(zhǔn)。比如說(shuō),阿里的筆試你考60就給你過(guò)了,但是網(wǎng)易可能就要你考75。阿里的筆試題總共包括兩個(gè)部分,前面一部分是選擇題,總共20道,時(shí)間是40分鐘。也就是說(shuō),40分鐘后,不管有沒(méi)有做完,選擇題會(huì)自動(dòng)進(jìn)行提交,然后你才可以繼續(xù)做第二部分。
從我做下來(lái)的情況看,時(shí)間相當(dāng)?shù)泌s,基本上會(huì)來(lái)不及。題目?jī)?nèi)容大多是一些智商題,概率論,操作系統(tǒng)、網(wǎng)絡(luò)等基礎(chǔ)題。給我的感覺(jué)是,只要是技術(shù)面,選擇題都是從一個(gè)大的題庫(kù)中隨機(jī)抽取,而不是跟某個(gè)具體的崗位掛鉤。比如一些概率題,會(huì)有考察貝葉斯公式的,一些智商題,可能需要你用到簡(jiǎn)單的動(dòng)態(tài)規(guī)劃來(lái)推算。個(gè)人認(rèn)為,選擇題部分主要還是在考察一個(gè)人的基本功和知識(shí)面。第二部分總共有三道大題,時(shí)間大概是兩個(gè)小時(shí)。一般情況下會(huì)考一道算法題,難度不會(huì)太大,但是如果你沒(méi)做過(guò)這樣的題目,基本上還是做不出來(lái)。下面列舉幾道筆試原題:
在一個(gè)數(shù)組中,有若干個(gè)數(shù),每個(gè)數(shù)字都出現(xiàn)兩次,也就是說(shuō)數(shù)組中如果出現(xiàn)了一個(gè)2,那必定存在另一個(gè)2,除了一個(gè)數(shù)僅僅出現(xiàn)了一次,如何在空間復(fù)雜度為O(1)的情況下找出這個(gè)數(shù)。
這道題目如果你有做過(guò),你會(huì)發(fā)現(xiàn)解決問(wèn)題的方式相當(dāng)巧妙。具體答案可以自行百度,這里不贅述。
從100個(gè)數(shù)中隨機(jī)抽取K個(gè)數(shù),要求K個(gè)數(shù)不能重復(fù)。
你也許可以馬上想到用暴力的解決辦法,如果重復(fù)了,那再次抽取,直到抽完K個(gè)數(shù)。這道題目也有巧妙的解決辦法,詳見(jiàn)《編程珠璣》隨機(jī)數(shù)那一章。
另外兩道題目,一般會(huì)出現(xiàn)一道并發(fā)編程題,往往它會(huì)給你一個(gè)場(chǎng)景,讓你提供一個(gè)解決方案,比如說(shuō)設(shè)計(jì)一個(gè)活動(dòng)搶購(gòu)之類的程序。這些題目,大多萬(wàn)變不離其中,從最本質(zhì)上來(lái)說(shuō),它可能僅僅是讓你寫(xiě)一個(gè)生產(chǎn)者消費(fèi)者模式或者是哲學(xué)家吃飯思考的問(wèn)題。
一般情況下,筆試部分選擇題做得不是很差,后面三道大題能做出兩道來(lái)基本上就過(guò)了。
二、面試
面試這個(gè)過(guò)程其實(shí)共性不多,因?yàn)槊嬖嚬贂?huì)根據(jù)不同的面試者進(jìn)行提問(wèn)。為了避免泛泛而談,我可能也會(huì)以幾個(gè)實(shí)際的面試題為例。
一般情況下,總共會(huì)有三輪,技術(shù)面+HR面。如果你參加的是內(nèi)推,所有的都是電話面試。對(duì)于我來(lái)講,我更喜歡與面試官一對(duì)一面試,通過(guò)一些肢體語(yǔ)言和紙筆,有利于把一個(gè)問(wèn)題更好得表達(dá)清楚,我并不懼怕現(xiàn)場(chǎng)寫(xiě)代碼。在這方面,網(wǎng)易做得就比較好,先通過(guò)一輪電話面試篩掉一部分人,然后再參加現(xiàn)場(chǎng)面試,對(duì)于外地過(guò)來(lái)的同學(xué),車票可以報(bào)銷。如果你參加的是校招,通過(guò)了筆試,一般會(huì)邀請(qǐng)你去一個(gè)酒店進(jìn)行面試。
面試一般會(huì)讓你先做個(gè)自我介紹,這時(shí)候不要再去重復(fù)得介紹一些個(gè)人信息,面試官跟你面試的時(shí)候,肯定是已經(jīng)拿到你的個(gè)人簡(jiǎn)歷了,可以介紹一下自己平時(shí)經(jīng)常做的事情,自認(rèn)為比較擅長(zhǎng)的或者自己喜歡的,自我介紹一分鐘足矣,在這過(guò)程中,應(yīng)該是讓面試官知道你擅長(zhǎng)什么,從而引導(dǎo)面試官有針對(duì)性的提問(wèn)。
接下來(lái)會(huì)問(wèn)一些項(xiàng)目經(jīng)驗(yàn),你應(yīng)該是挑一些有一定的含金量,并且印象比較深刻的(面試前,有必要回顧下做過(guò)的項(xiàng)目)。大致可以按照這幾點(diǎn)來(lái)介紹:自己負(fù)責(zé)了哪個(gè)模塊;把這個(gè)模塊的大致流程介紹一遍;在做這個(gè)項(xiàng)目過(guò)程中碰到了哪些問(wèn)題,最后是怎么解決的;最后就是對(duì)這個(gè)項(xiàng)目的收獲。介紹完項(xiàng)目經(jīng)驗(yàn)以后,面試官開(kāi)始自由提問(wèn),以我多次面試的經(jīng)驗(yàn)來(lái)看,面試的問(wèn)題都不會(huì)太難。我可以大致給出面試的提問(wèn)范圍:
關(guān)于java虛擬機(jī),你需要知道JVM的內(nèi)存結(jié)構(gòu),垃圾回收機(jī)制,內(nèi)存分配策略,類的加載機(jī)制以及內(nèi)存模型。以上這些請(qǐng)參考周志明的《深入理解java虛擬機(jī)》。
熟悉java各個(gè)容器的實(shí)現(xiàn),例如HashMap、ConcurrencyHashMap等,最好去閱讀源碼,這次面試關(guān)于HashMap原理三個(gè)面試官問(wèn)了我三次,重要程度不需多說(shuō)了。
熟悉java并發(fā)編程,尤其是java.concurrency包下的api,并發(fā)作為一塊高級(jí)內(nèi)容,對(duì)于很多人說(shuō),很少接觸,也很難將其掌握。幸運(yùn)的是,面試官在這一塊都不會(huì)考得太深入,推薦《javaconcurrencyinpractice》。
熟悉常用的數(shù)據(jù)結(jié)構(gòu)、算法。很多人認(rèn)為算法在實(shí)際項(xiàng)目中根本用不到,并且覺(jué)得算法太難,就疏于學(xué)習(xí)。那為什么所有的大公司都喜歡考算法呢?尤其是像微軟、facebook這樣的巨頭?算法不僅需要必備的理論,更需要親自動(dòng)手,有關(guān)算法的書(shū)籍更多,找一本適合的就可以了,題庫(kù)推薦leetcode。
其他還有像設(shè)計(jì)模式、數(shù)據(jù)庫(kù)都很重要,這些東西并不是靠一兩個(gè)月就能掌握,還是需要平時(shí)多積累、總結(jié)。推薦《headfirst設(shè)計(jì)模式》,如果有你認(rèn)為學(xué)習(xí)能力強(qiáng),可以直接看四人幫的《設(shè)計(jì)模式》,數(shù)據(jù)庫(kù)就不多說(shuō)了。
在這里,我并不是想給出一個(gè)面試寶典一樣的東西。事實(shí)上,上面列出的東西,沒(méi)有兩到三年的時(shí)間學(xué)習(xí),根本掌握不了。要想成為一名技術(shù)大牛沒(méi)有捷徑。還是希望大家可以認(rèn)真踏實(shí)的學(xué)習(xí),一旦你真正掌握了這些,面對(duì)面試官的提問(wèn)基本上可以達(dá)到游刃有余。
三、總結(jié)
總體來(lái)說(shuō),大多數(shù)企業(yè)考慮到校招針對(duì)的是在校學(xué)生,面試都不會(huì)出現(xiàn)太難的題目。然而在如何學(xué)習(xí)這個(gè)問(wèn)題,筆者還是有話要說(shuō)的,我見(jiàn)過(guò)很多人,光看書(shū)或者視頻,忽略了實(shí)踐,最終的結(jié)果就是我能看懂代碼,但是我不會(huì)寫(xiě)。更有甚者,拿著一本與自身水平不適應(yīng)的書(shū)例如《thinkinjava》在那里啃,導(dǎo)致自信心大受打擊,學(xué)習(xí)興趣驟減。武俠小說(shuō)告訴我們,練一門(mén)與自身功力不相符的武功只會(huì)走火入魔。
馬克思主義哲學(xué)告訴我們,要理論和時(shí)間相結(jié)合,實(shí)踐是理論的基礎(chǔ),理論對(duì)實(shí)踐有反作用,理論和實(shí)踐是相輔相成的,缺一不可。
我剛才強(qiáng)調(diào)了實(shí)踐的意義,但是我認(rèn)為,如果你做過(guò)類似的項(xiàng)目已經(jīng)足夠得多,就不要再去做重復(fù)勞動(dòng)。我無(wú)意去貶低在學(xué)校做的項(xiàng)目,但是事實(shí)就是如此,99%的學(xué)校里的項(xiàng)目只能算個(gè)Demo。試問(wèn),有誰(shuí)考慮了代碼是否足夠Elegant?是否足夠Robust?是否足夠Sequrity?如果沒(méi)有,那就遠(yuǎn)遠(yuǎn)達(dá)不到作為產(chǎn)品級(jí)別的工業(yè)強(qiáng)度!那么這樣的項(xiàng)目做得再多也是無(wú)用功。
另外,文章開(kāi)頭談到我兩次失敗的經(jīng)歷,都是到了HR面,有人說(shuō)能面到HR,基本上就已經(jīng)過(guò)了。而我兩次都敗在了HR面上,我一度懷疑自己是不是情商有問(wèn)題,后來(lái)我發(fā)現(xiàn)大多數(shù)的HR都是SB,你要問(wèn)我為什么,我可以給出邏輯證明,period。
最后,如果面試失敗也不要灰心,面試很大一部分是有運(yùn)氣成分的,筆者不乏見(jiàn)過(guò)很多被BAT刷掉,最終去了微軟谷歌的,你能說(shuō)他們技術(shù)不夠強(qiáng)硬?重要的是每次面試后,都能做反思、總結(jié),吸取經(jīng)驗(yàn)教訓(xùn)。
免責(zé)聲明:凡注明稿件來(lái)源的內(nèi)容均為轉(zhuǎn)載稿或由企業(yè)用戶注冊(cè)發(fā)布,本網(wǎng)轉(zhuǎn)載出于傳遞更多信息的目的;如轉(zhuǎn)載稿和圖片涉及版權(quán)問(wèn)題,請(qǐng)作者聯(lián)系我們刪除,同時(shí)對(duì)于用戶評(píng)論等信息,本網(wǎng)并不意味著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。
