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