2011淘寶春季校招已經(jīng)到了尾聲了,五一前,面試都會(huì)結(jié)束。我參加了廣州站的實(shí)習(xí)生面試。這兩天跟不少同學(xué)做了交流溝通。這里想談一下我的感受,以及想給加入淘寶的同學(xué)們一些建議。這次沒(méi)有通過(guò)的同學(xué)也不要?dú)怵H,我們秋季校園招聘見(jiàn)。
這兩天見(jiàn)了不少同學(xué),我能感受到同學(xué)們的熱情,以及對(duì)于技術(shù)的熱愛(ài)。也很感謝同學(xué)們對(duì)于淘寶的關(guān)注。下面我先來(lái)說(shuō)說(shuō)我在廣州兩天面試下來(lái)的感受。
程序設(shè)計(jì)的基礎(chǔ)還需要加強(qiáng):
被我復(fù)試的同學(xué),幾乎都被我問(wèn)到了如何自己去實(shí)現(xiàn)一個(gè)字符串中查找字串的問(wèn)題。在第二天,每個(gè)同學(xué)過(guò)來(lái),第一件事情就是在我的筆記本上,把這個(gè)代碼給我寫(xiě)出來(lái)。那么結(jié)果如何呢?
幾乎所有的同學(xué)都知道要完成功能,最簡(jiǎn)單的做法應(yīng)該怎么做。但是,只有一位碩士同學(xué),寫(xiě)出來(lái)的代碼,基本上上是實(shí)現(xiàn)了這個(gè)功能。其他的要么寫(xiě)不出來(lái),要么是錯(cuò)的。但是,就這么個(gè)題目,我沒(méi)有看到一個(gè)讓我非常滿意的答案。我這里說(shuō)的滿意不是說(shuō)要你寫(xiě)出KMP的實(shí)現(xiàn),只是希望能夠看到功能正確、異常情況考慮清楚、常規(guī)的優(yōu)化要有。
這是一個(gè)側(cè)面,反應(yīng)出來(lái)的問(wèn)題是基本功的問(wèn)題。有些同學(xué)會(huì)覺(jué)得這個(gè)可能不重要,我知道思想,寫(xiě)程序么,我寫(xiě)多了,熟練了就好。我這里想說(shuō)的是,寫(xiě)程序是基礎(chǔ),如果你說(shuō)你很熱愛(ài)技術(shù)、很喜歡寫(xiě)程序,而很基礎(chǔ)的都寫(xiě)不好,如果你是面試官,你會(huì)怎么想呢?也許給你些時(shí)間,你真的就能夠?qū)懗龊芎玫某绦蛄耍沁@個(gè)貌似是也許。如果你在面試的時(shí)候,就已經(jīng)可以展現(xiàn)出這些,你不是會(huì)比別人出色么?反過(guò)來(lái),如果別人都可以做到,你不行,你不是很危險(xiǎn)么?
那么我出的這個(gè)題目需要考慮什么呢:
字符串和要查找的字串是不是null要考慮吧?
如果字符串比要查找的字串短,可以直接返回結(jié)果吧?
循環(huán)遍歷的時(shí)候,字符串的起點(diǎn),應(yīng)該要保證從起點(diǎn)到結(jié)束,比字串長(zhǎng)把?
繼續(xù)說(shuō)這個(gè)字符串查找的例子。有些同學(xué),在我問(wèn)到有沒(méi)有優(yōu)化的辦法的時(shí)候,提到了KMP,但是我具體怎么實(shí)現(xiàn),記不起來(lái)了。OK,我也不能馬上寫(xiě)出來(lái)KMP的實(shí)現(xiàn)。但是我繼續(xù)問(wèn),KMP比這個(gè)直接循環(huán)比較的原始方式有改進(jìn),那么KMP是解決了什么問(wèn)題?或者說(shuō)是在什么問(wèn)題上解決的更好。然后有很多同學(xué)就不知道了。給我的感覺(jué)是,因?yàn)橥瑢W(xué)記不得KMP的具體實(shí)現(xiàn),所以也不知道去解決了什么問(wèn)題。我覺(jué)得這個(gè)邏輯是剛好反過(guò)來(lái)了。我們應(yīng)該先去理解KMP解決了什么問(wèn)題,或者說(shuō)去看看最初的實(shí)現(xiàn),有什么地方可以改善、可以提高。這個(gè)是根本的東西,如果你理解了,即便不知道KMP,你也有機(jī)會(huì)搞一個(gè)KMP出來(lái),即便你不記得KMP的具體實(shí)現(xiàn),那又有什么關(guān)系呢?
在回杭州的路上,我想到了一句話,你是用文科的方式學(xué)習(xí)知識(shí)還是理科的方式學(xué)習(xí)知識(shí)。我是這么看的,如果更多的是去記憶,就是文科的方式學(xué)習(xí),我們需要的是去理解,是去看到背后的、紙面反面的東西。這個(gè)是根本。我聽(tīng)過(guò)一個(gè)笑話,兩個(gè)學(xué)習(xí)文科的同學(xué),互相提問(wèn),A問(wèn)B,歷史書(shū)的X頁(yè)的Y行上說(shuō):哪一年,巴黎人民在什么教堂舉行了起義,B記得年份,但是死活想不起來(lái)是什么教堂。A告訴B,答案是“一個(gè)”教堂。我撅翻。
那我們要搞開(kāi)發(fā),千萬(wàn)不要用這樣的方式,我知道沒(méi)有同學(xué)會(huì)這么學(xué)習(xí),但是如果你不深入去理解、了解所以然,那么結(jié)果上也差不多。
前面說(shuō)了基礎(chǔ),下面我想說(shuō)說(shuō)邏輯思維。
邏輯思維,我覺(jué)得主要指的是去分析、解決問(wèn)題的能力,去靈活運(yùn)用自己知識(shí)的能力。這個(gè)部分,我覺(jué)得扎實(shí)的基礎(chǔ)是很關(guān)鍵和必要的,而對(duì)知識(shí)的深入理解更為重要。我舉一個(gè)例子,說(shuō)到深度優(yōu)先搜索、廣度優(yōu)先搜索,可能絕大部分的人都知道。但是如果出題目是一個(gè)場(chǎng)景,可能很多同學(xué)就不知道該怎么整了。比如,我問(wèn)了一個(gè)農(nóng)夫帶著狼、羊、早過(guò)河的問(wèn)題,這個(gè)是一個(gè)非常之經(jīng)典的問(wèn)題,中學(xué)的信息學(xué)奧賽會(huì)用到的題目。可是有很多同學(xué),就不知所措了。這就是一個(gè)分析和運(yùn)用知識(shí)的能力。在我們實(shí)際工作中,遇到的問(wèn)題都是需要我們?nèi)シ治鋈缓笳曳桨傅模粫?huì)說(shuō)直接告訴你,我們需要用廣度優(yōu)先搜索去干個(gè)嘛、用深度優(yōu)先干個(gè)嘛等等。同學(xué)們都很年輕,學(xué)習(xí)計(jì)算機(jī)的時(shí)間相對(duì)有限,作為面試官,我們不期望你什么問(wèn)題都能很好的解決,但是一些基本的,大學(xué)學(xué)過(guò)的知識(shí),你需要能夠很好的運(yùn)用,另外,也會(huì)看你的思路。此外,對(duì)面試官的問(wèn)題的準(zhǔn)確快速理解,也會(huì)反映你的能力。
再說(shuō)說(shuō)對(duì)技術(shù)的熱愛(ài)。
我上篇博客提到,我們喜歡熱愛(ài)技術(shù)的人,這次我遇到的同學(xué),除了兩個(gè)女孩子外,好像都告訴我很熱愛(ài)技術(shù)。在這里,我不是不相信你們的話,只是我想讓同學(xué)們明白,熱愛(ài)技術(shù)不是說(shuō)說(shuō)的,你需要來(lái)證明給面試官。我舉個(gè)例子,我很熱愛(ài)尤文圖斯(意大利的足球俱樂(lè)部)。我只是這么一說(shuō),沒(méi)用。有兩個(gè)辦法可以證明我很熱愛(ài),一個(gè)是我周圍的朋友,尤其是跟我十多年一起的朋友可以證明,但是這個(gè)辦法不靈光,要用這個(gè)辦法,除非是你相信并認(rèn)識(shí)我的朋友才行;另外一個(gè)辦法是,我可以告訴你尤文圖斯的很多歷史、很多故事,告訴你我從94年開(kāi)始看尤文圖斯的比賽一直到現(xiàn)在的很多點(diǎn)點(diǎn)滴滴,那么第二個(gè)辦法就相對(duì)靠譜。那么回到同學(xué)們的面試,如果你很熱愛(ài)技術(shù),你的朋友、同學(xué)知道,他們可以證明,但是我不認(rèn)識(shí)他們,這條路不行。那么就是第二個(gè)方法,你熱愛(ài)技術(shù),熱愛(ài)某個(gè)方面的,那么你一定是會(huì)看很多這方面的文章、書(shū)等,你的了解就會(huì)比別人深入。你可以講你的收獲等等,但是如果你很熱愛(ài)某個(gè)方面的技術(shù),結(jié)果還沒(méi)有大多數(shù)人了解的多,那我又撅翻了。
學(xué)習(xí)能力。這個(gè)方面,更多的需要你自己去展示自己之前的一些經(jīng)歷。當(dāng)然也會(huì)把這個(gè)部分和對(duì)于分析和解決問(wèn)題放在一起去考察。我覺(jué)得學(xué)習(xí)可以分三個(gè)層次:
了解(基本會(huì)用)
熟練、經(jīng)驗(yàn)豐富(用的多,遇到不少問(wèn)題,知道一些別人不知道的細(xì)節(jié)的點(diǎn))
理解(知道背后的原理、實(shí)現(xiàn)等)
同學(xué)們時(shí)間有限,我建議你還是能夠在一兩個(gè)部分很深入,而不是搞了很多,但都是很淺或者就是知道有那么個(gè)東西,這樣不好。你能夠把一兩個(gè)部分搞的很深入,那么,我也相信你在類似的其他方面,給你時(shí)間,你也可以搞的很深入;但是如果你都是知道一點(diǎn)知道一點(diǎn),我就不確定你到底能夠鉆多深了。
舉個(gè)例子,有同學(xué)說(shuō)對(duì)并發(fā)、JVM感興趣。問(wèn)了一些問(wèn)題,發(fā)現(xiàn)概念性的回答的還不錯(cuò),但是深入一下,問(wèn)為什么要這樣,這樣的好處壞處,他就不知道了,告訴我書(shū)上這么說(shuō)的,我說(shuō)那你自己覺(jué)得呢?告訴我說(shuō),沒(méi)有想過(guò)。這樣的學(xué)習(xí)方式,我覺(jué)得就是可以提高和改善的。
再說(shuō)說(shuō)項(xiàng)目經(jīng)驗(yàn)。
項(xiàng)目經(jīng)驗(yàn)對(duì)于你來(lái)說(shuō),未必多了就好。主要是精。
對(duì)于本科生同學(xué),尤其這次招聘的都是大三才讀了一個(gè)學(xué)期的同學(xué),你不用去苛求自己去做多少項(xiàng)目,也許你還沒(méi)有這樣的機(jī)會(huì),你可以專注于學(xué)校的課程實(shí)踐(我們當(dāng)年叫做大作業(yè)),以及根據(jù)你自己的興趣學(xué)習(xí)到的知識(shí)的一些運(yùn)用。比如當(dāng)年我對(duì)于基于Socket通信很感興趣,就自己去做了一個(gè)類似Mud的東西,然后去改進(jìn)完善。對(duì)于碩士同學(xué),你們想對(duì)是有不少時(shí)間的,應(yīng)該有更多的實(shí)戰(zhàn)的經(jīng)驗(yàn),但是我很建議的是,我更在乎你在項(xiàng)目中的貢獻(xiàn),你的深度,你的提升。我很建議大家不要去重復(fù)的做很多差不多的事情,對(duì)你自己沒(méi)很大好處。我上次也提到了,這就是叫做工作五年,一年經(jīng)驗(yàn)。如果真的是老板逼著去一直重復(fù),我也希望你能夠在第二次、第三次的過(guò)程中,做出新意來(lái)。
上面提到的這些方面,都是非常基礎(chǔ)的。如果這些大家不能夠做好的話,不管去淘寶還是類似的公司,我想面試都是會(huì)掛掉。而看到這個(gè)部分,對(duì)于我寫(xiě)的內(nèi)容很不屑的覺(jué)得太簡(jiǎn)單并且自己已經(jīng)做到非常好的同學(xué),我給你一個(gè)建議,發(fā)郵件給我吧。huali@taobao.com,我們可以去談些更深入的問(wèn)題。當(dāng)然也可以在新浪微博或者Twitter上加我。我的新浪微博是@曾憲杰_華黎,twitter是@vanadies10。前面主要是針對(duì)比較大眾的同學(xué)的一些感受、建議。那些在學(xué)校期間特別突出優(yōu)秀的同學(xué),直接聯(lián)系我就是了。我會(huì)給你更有挑戰(zhàn)、更有深度的東西。
我們這次春季實(shí)習(xí)生招聘,已經(jīng)尾聲了,沒(méi)有通過(guò)的同學(xué),如果你對(duì)淘寶有興趣,也不要?dú)怵H,后面還有機(jī)會(huì),可以等到秋季的應(yīng)屆生招聘。那么剩下還有差不多半年的時(shí)間,我建議你看看自己還有哪些地方是自己的短板的,抓緊時(shí)間去提升一下。從基礎(chǔ)做起,不要好高騖遠(yuǎn)。記得我個(gè)人歷史上寫(xiě)過(guò)最好的一篇作文是《立鴻鵠之志,從小事做起》,這個(gè)是解讀《一屋不掃,何以平天下》的。同學(xué)們一定都有遠(yuǎn)大的志向,但是要從小事做起、從基礎(chǔ)做起,腳踏實(shí)地,努力前行。對(duì)于離畢業(yè)還有比較長(zhǎng)時(shí)間的同學(xué),你們很幸運(yùn),還有更多的時(shí)間去提高、完善自己,但是千萬(wàn)不要揮霍光陰。加油!