基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)
http://www.newsmth.net/bbstcon.php?board=Microsoft&gid=48785
有人提問: 看了很多的面試題之類的,感覺雖然自己數(shù)據(jù)結構與算法基礎知識很扎實,但還是做不出來,所以請高人指點。
?
這個問題看似迷惑, 其實提問的人搞混了兩件事 -? “數(shù)據(jù)結構與算法基礎知識很扎實":? 知識; “在實際面試中解決問題": 能力。 知識和能力是兩碼事。?
?
知識和能力的例子1:
知道圓周率pi 小數(shù)點后面20位甚至100位: 知識
看到一個不規(guī)則的圓柱體, 能估算出它的體積: 能力.? 這個時候, 我們用 pi 約等于3 都可以解決問題。
?
知識和能力的例子2:
一些在校學生都有鯤鵬之志,? 都覺得自己自己懷才不遇,? 流落至此, 一旦逃出樊籠, 定可大顯身手。? 有些時候, 大家都知道你有某些知識, 都成了眾所周知的事實 – common knowledge.
?
?
但是你有沒有越獄的能力, 和在監(jiān)獄外獨立謀生, 實現(xiàn)夢想的能力呢?
?
知識和能力的例子3:
三個代表到底是哪三個: 知識
三個代表如何抓貪官, 平房價, 立法制: 能力。? 在其位者為什么做不了呢?? 非不能也, 是不為也。
?
扯遠了, 扯遠了…
?
咱們說什么來著??
基礎知識很扎實 - 但是面試就是做不出來, 怎么辦?
BBS上就有一個靠譜的回答:
你好,我以前也覺得自己算法不錯,有認真學過數(shù)據(jù)結構,看過算法的書,但是后來再準備找工作面試的時候一開始遇到問題也發(fā)現(xiàn)無從下手,主要遇到兩個問題,不知道是否跟你的情況一樣。
????? 一個問題是有些知識在自己感覺里理解了,但是遇到實際的題目要深入細節(jié)了,卻使用不上這些知識。比如n個元素的數(shù)組,取前m大的元素,這個題有一個思路是利用快排的思想,每次partition把數(shù)組分成兩類:大于partition元素的,小于partition元素的,然后遞歸地根據(jù)兩類中元素的數(shù)量與m的關系再某一類中再做partition(當然這只是一種思路),我們會快排的算法了,但是如果沒有真正理解到它的思想,往往給不出這個思路。所以說在學習算法的時候建議是不要流于表面,要認清算法的本質思想。這里當然推薦看英文版的算法導論,比如我看了里面動態(tài)規(guī)劃的四個題目以后,可以根據(jù)里面的講解舉一反三,得到一些規(guī)律性的東西,收獲頗豐。還有就是鄒欣老師主編的《編程之美》,里面的題目解法思路很詳細,給人很多啟發(fā)。
???? 另一個問題是有些題目會做,但是一提筆寫code就遇到障礙,就是不習慣在紙上寫code,嚴重依賴IDE,這個問題只能通過多寫多練來克服了。這里我推薦topcoder,這個site上有和北大online judge一樣的在線做題系統(tǒng),你可以在上面脫離IDE而用類似記事本的方式寫code,同時里面的題目也有不同層次的,開始可以做一些SRM里面DIV1的簡單題目,慢慢的練習使得code一次寫完編譯通過,然后再開始做難一點的題目。當然也要在白紙黑字上寫,我寫了五六公分厚的16開紙的code,最后終于在筆試面試時可以寫得非常順暢了。。。
以上是我準備筆試面試過程中的一點經(jīng)驗,最后也拿到了理想中的offer,希望對你能有幫助,歡迎拍磚~
?
下面是摘自 《編程之美》 一書中有關面試的內容
背景
每年從金秋九月起,校園里的廣告欄中、BBS上的招聘信息就逐漸多了起來。小飛是一名普通高校的應屆計算機專業(yè)畢業(yè)生,他勤奮好學,成績中上,愛好廣泛。看到身邊的同學都在準備精美的簡歷,參加各種各樣的招聘會,筆試、面試,他也坐不住了。他在BBS上看了各式各樣的“面經(jīng)”,也擠過招聘會上的人潮,長嘆:“行路難,行路難,好工作,今安在?”
小飛從網(wǎng)上了解到了有關招聘的各種術語,他整理了一個列表:
| 名詞 | 解釋 |
| 面經(jīng) | 面試的經(jīng)歷。 |
| 默拒 | 投了簡歷,進行了面試,但是公司從此再也沒有消息,詢問也不回答。 |
| Offer | 公司給學生發(fā)的入職邀請。 |
| 群毆 | 通常指一群人一起參加面試,一般以多對多的形式同時進行,最后總是會有人被不幸淘汰,這一過程就叫做“群毆”。 |
| 聽霸 | 凡校內招聘演講會都出席旁聽的。 |
| 投霸 | 凡公司招人都投簡歷的。 |
| 筆霸 | 凡投出簡歷都能得到筆試機會的。 |
| 面霸 | 凡參加筆試都有面試通知的。 |
| 巨無霸 | 在招聘過程屢屢被拒、機會全無的,江湖人稱“巨無霸”! |
| 霸王面 | “霸王面”指沒有獲得面試資格,卻主動找用人單位,要求面試的人,源自吃飯不給錢的“霸王餐”,即“沒機會面,創(chuàng)造機會也要面”。 |
小飛獲得了一個在微軟亞洲研究院實習的機會,在工作中認識了一位有豐富招聘經(jīng)驗的研發(fā)經(jīng)理。他對經(jīng)理進行了非正式的采訪,希望能得到第一手的“內幕”消息。下面就是小飛整理出來的問答。小飛的問題用Q來標注,經(jīng)理的回答用A標注。
典型面試
備注:在本文中,應聘者(英文為:candidate, interviewee)指應聘公司職位的學生或其他社會人士;面試者(英文為:interviewer)指公司里進行招聘和面試的人員。
Q: 經(jīng)理,您好。我就開門見山,能否分享一下當年您第一次去面試的故事?
A: 好,大學畢業(yè)后,我進入了學校“產(chǎn)業(yè)辦”開的公司。有一天,一家美國公司(我們姑且叫它H公司)來招人,這是我的第一次面試。那個公司的代表和我寒暄之后,遞給我一道題目,題目大意是“寫一個函數(shù),返回一個數(shù)組中所有元素被第一個元素除的結果”。我當時還問了一些問題,以確保理解無誤,所謂clarification是也。那位面試者簡單地解釋了一下,然后就在電腦上敲敲打打,也不理我了。我想這也不難,如何能顯示我的功力呢?于是我就把循環(huán)倒著寫 for (i=n; i>=0; i--),因為我當時看到一本Unix書上是這么寫的。
代碼大概是這樣的:
void DivArray(int * pArray, int size)
{
??? for (int i = size-1; i >= 0; i--)
??? {
??????? pArray[i] /= pArray[0];
??? }
}
寫完之后,他看了看就問我,你為什么要這么寫循環(huán)?如果不這么寫可以么?我說,也可以呀。他問了兩遍,如果正著寫循環(huán)會出現(xiàn)什么問題。我想,能有啥問題?就把循環(huán)正著寫。噢,原來陷阱在這里!你知道這個陷阱是什么嗎?
Q: 讓我想一想,知道了,如果循環(huán)從數(shù)組的第一個元素開始,并且不用其他變量的話,在循環(huán)的第一步,第一個元素就變成了1,然后再用它去除以其他元素,就不符合題目要求了。
A: 對,同時還有另一個陷阱——看看你是否會檢查除數(shù)為零的情況,以及對參數(shù)的檢查,等等。
Q: 這不是很簡單么?一會兒就寫完了。
A: 面試題大多數(shù)不難,但是通過觀察應聘者寫程序的實際過程,面試者可以看出應聘者的思維、分析、編程能力。面試者一般還會有后面幾招留著。比如,如果你要測試剛才寫的這個函數(shù),你的測試用例有多少?或者改變一些條件,能否做得出來?
Q: 很多人說,面試是一個不公平的游戲,因為信息不對稱。比如:面試者知道問題的答案,而應聘者不知道,面試者知道今年公司要招幾個人,而應聘者不知道。
A: 但是,應聘者手頭有幾個Offer,面試者也不知道。應聘者是否喜歡公司提供的職位和薪酬,面試者也不知道。一方面,應聘者在“求”職,另一方面,面試者也在“求”才。面試也是一個增進雙方互相了解的有效途徑。
既然扯到了“信息不對稱”,我再講一個我的故事,當年H公司來我校面試的時候,我對H公司的了解僅限于H公司捐贈給我們計算機系的一個有些過時的小型機系統(tǒng)。我想,這個H公司是不是還有一些新東西?那時候還沒有互聯(lián)網(wǎng),于是我就托人借了幾本原版的Byte雜志來看,那是很厚的一本雜志,非常多的廣告,看了半天,夾在雜志中的小廣告掉了一地。我只看到雜志對H公司新出的一個桌面管理軟件“NewWave”的評價,我琢磨了半天,大概搞懂了這是一個什么東西,市場上還有什么競爭對手,等等。
過了兩天,面試開始了,對方端坐在沙發(fā)里問“你對我們H公司有何了解?”我先說了H公司的小型機系統(tǒng),然后說,“By the way,我還了解了NewWave”。于是我把看到的東西復述了一下。沒想到對方坐直了身子,說這個NewWave就是他曾經(jīng)領導的項目。于是我就根據(jù)雜志上的描述問,“您怎么看某某競爭產(chǎn)品?”他很興奮地跟我談了NewWave 是如何的領先,等等。后來我們又聊了不少相關的東西。
最后所有人面試結束之后,我們的領導說,美方覺得我很突出,知道不少東西,包括NewWave,口語也很好。領導就要求我給所有人都介紹一下NewWave,我只好把看到的東西又復述了一次。不久,H公司過來面試的另一個經(jīng)理不解地對我們領導說:“為什么你們這么多人知道NewWave?”
前不久,我在面試的時候問一位同學,“你對微軟亞洲研究院有什么了解?”他說,“沒啥了解,昨天打電話叫我來面試,我就來了……”對于這樣的同學,信息的確是非常不對稱,那他吃虧也是難免的了。還有一位在面試中發(fā)揮得很不好的同學跟我說,他特地沒有做任何準備,因為他想顯示他的“raw talent”……
Q: 關于Test(測試)的職位,有沒有一些典型的題目呢?
A: 有哇,典型的題目如給你一支筆,讓你說說你如何測試——據(jù)說要測試12個方面;再比如判斷一個三角形的特性(直角、鈍角、銳角、等腰)——據(jù)說有20多個測試用例,這是要考察大家思考問題的全面程度和邏輯分析能力(測試用例見4.8節(jié)“三角形測試用例”)。
Q: 網(wǎng)上有些非常流行的問題,都號稱是從大公司流傳出去的,是真的么?
A: 對,是有一些題目比較常見,例如“下水道的井蓋為什么是圓的”,還有一個問題一度非常流行,據(jù)說早期應聘PM(Program Manager程序經(jīng)理)職位的應聘者大多曾碰到這個題目:
房間里有三盞燈,屋外有三個開關,分別控制這三盞燈,只有進入房間,才能看到哪一個電燈是亮的。請問如何只進入房間一次,就能指明哪一個開關控制哪一個燈?
傳說在晚上,微軟一些會議室的燈忽明忽滅,那就是一些還沒有搞懂的同事們在實地鉆研。
Q: 我大概了解了Dev/PM/Test 這三種工作的典型面試題,那么這些題目的答案別人都知道了,還怎么面試呢?
A: 對,會有不少題目流傳出去,這本來無妨。但是一些人知道答案之后,就開始背誦,或者原封不動地拿它去面試應聘者,忘了“知道答案”和“能做一個好員工”的關系。知道了題目的答案,就能做一個好的開發(fā)人員、項目經(jīng)理,或者銷售經(jīng)理么?一個極端的情況會是:公司里每一個人都知道哪盞燈是由哪一個開關控制的,如何測試三角形的類別等,但是這個公司真能從此開發(fā)出更好的軟件么?
一句話:關鍵不在于答案,而在于思考問題的方法,這也是我們沒有“題庫”的原因。
?
求職攻略之決勝面試
經(jīng)歷了筆試、電話面試之后,許多同學接到了微軟公司的邀請——來公司進行面對面的考察。
Q: 既然微軟這么重視實際的能力,每一個人都會經(jīng)過幾輪面試的考察,在學校時的學習成績是否就不重要了?
A: 也不一定。同樣,關鍵不是在于靜態(tài)的成績,而是通過成績了解成績取得的過程,了解一個人的特質。曾經(jīng)有一個面試者詳細詢問了一個應聘者在學校里的各種表現(xiàn),最后在面試報告中寫道:“我詳細詢問了她從中學到大學、研究生的情況,她在學校里沒有一科的成績是非常拔尖的,也沒有太壞的成績。她從來沒有做過出格的事情,如逃課、自己寫一些程序、打工等。我在她身上看不到對卓越的追求,也沒有看到她有實現(xiàn)自身價值的想法……所以我認為本公司不應該雇用她。”
Q: 雖然我沒什么想法,但我覺得微軟太有名了,我也不用多想了,我就是要進這樣的公司,你叫我干什么都可以!
A: 我們恰恰不太需要沒什么想法的人,這也許和企業(yè)文化有一些關系。在中國一些企業(yè)的文化中,往往是領導安排你做什么,你就做什么。在微軟,我們認為每個人都是獨立的個體,我們希望雇員能夠“在其位,謀其事”,同時能考慮到自己三五年后的發(fā)展,并且能自己制定計劃去實現(xiàn)事業(yè)目標,這是公司的文化。
Q: 面試的時候要穿什么衣服?
A: 在沒有特別規(guī)定的情況下,穿你覺得舒服的衣服就行。我們看到不少應聘者穿著明顯不舒服的西裝來面試,這樣不會給自己加分,當然也不會減分。但是自己太不舒服,會影響發(fā)揮。
Q: 不舒服沒關系,只要你們公司覺得舒服,我就舒服。
A: 我們剛剛說過,微軟更看重的是“你”是否覺得舒服,“你”要做什么,以及“你”有什么創(chuàng)意。
Q: 有沒有在面試中作弊的呢?
A: 說起來,還真有。有一天,我在微軟外面的一個中餐館吃晚飯,這個餐館很小,大家坐得比較擠,我不得不聽到鄰座的高談闊論。原來是一個剛剛在微軟面試過的學生在和幾個同學聚餐,他很興奮地談著當天面試的經(jīng)歷——
“他問了那個在鏈表中找回路的問題了么?”
“問了,我假裝思考了一下,稍稍試了試別的解法,然后就把你說的那個解法講了出來……”
對于這種人,我們內部叫“Poser”——擺姿勢的人。如果你在面試時恰好被問到了一道知道答案的題目,你可以向面試者提出來。擺姿勢的話,萬一被戳破,會比較難堪。既然你已經(jīng)花了時間了解解法,不妨和面試者深入地探討一下。
Q: 大家發(fā)表在BBS上的面經(jīng),公司看不看?
A: 公司的一些員工也在看,有一次,HR 在某BBS 上看到一篇很詳細的面經(jīng),文筆生動,此文章從他看到HR JJ的那一刻寫起,直到做了什么題目、怎么做的、說了什么話、最后如何走出了公司大門他都做了詳細記錄。從描述上看,我們很容易就能推斷出這是哪一位應聘者。他似乎發(fā)揮得很不錯,可惜他忘了在開始面試的時候,HR JJ給他講的,他也簽了自己大名的保密協(xié)定。對于這樣的同學,我們只能遺憾地放棄了。
Q: 整個面試過程中我覺得自己答得很不錯了,面試者指出的問題我大部分都能回答出來,為什么我還是沒有通過?
A:一個原因是有比你更厲害的應聘者,另一個大家容易忽略的原因是,應聘者和面試者對于“不錯”的定義是不一樣的(參見對筆試問題的回答)。
對于在校學生,覺得自己寫的程序,涂涂改改,大概邏輯能通過就行了,面試者指出的問題能答出來一些就行了。但是對于將來的公司員工,我們要考察:程序設計的思路如何?編程風格如何?細節(jié)是否考慮到?程序是否有內存泄露?是否采用了最優(yōu)算法?是否能對程序進行修改以滿足不斷變化的需求?是否能舉一反三?
另外,除了專業(yè)技巧,我們在面試中還會考察應聘者的職業(yè)技巧(professional skills, 也有人稱為 soft skills)。 這個人的交流能力、合作能力如何,對自己的評價和期望是什么?在有壓力的情況下,能否發(fā)揮水平?是否追求卓越?這些“非技術”的因素相當重要。
Q: 很多有名的企業(yè)面試只要求談談就可以了,為什么微軟一定要寫代碼?
A: 我們的絕大部分工作,都是通過代碼而來,很大一部分的問題,也是由代碼所導致的。所以我們不能不重視寫代碼這件事。當然有很多其他工作不需要寫代碼,但這不在我們的討論范圍內。
有一次我在過道上碰到一個同事陪著一個應聘者走出大樓,這位應聘者邊走邊侃侃而談。后來我問這位同事詳情。他說,“這位先生表達能力不錯,但是當我叫他寫一個小程序的時候,他死活不動手。他說在以前的工作中,如果要寫代碼,從MSDN上拷貝一些下來就行了。我和他僵持了一會兒之后,只好說,那你要是不寫,我們就沒什么可談的了。所以后面的面試都沒有必要了,我直接送他出了門。”
有一次我收到我們開發(fā)總經(jīng)理的郵件,上面強調了面試的時候一定要讓應聘者動手寫代碼等,這時對面的一位同事不好意思地說,他今天碰到的應聘者是以前朋友的朋友。兩人聊了很長時間的閑話,后來他不好意思叫他寫代碼,時間也不夠了,于是就寫了一些反饋,說這人看起來還行。沒想到開發(fā)總經(jīng)理眼尖,把這個問題揪出來了。
另外,我們的這一番對話應該給微軟的技術面試做了相當?shù)摹叭ド衩鼗?#xff08;demystified)的工作。我還要提醒同學們要“去粉絲化”——不要像極品粉絲追逐明星那樣,如果明星不能滿足自己見一面的要求(或者其他要求),就覺得天旋地轉,痛不欲生。如果你經(jīng)過努力,仍然沒有進入微軟公司,你并非一無是處,天也不會塌下來。微軟公司不過是很多軟件公司中的一個,它要尋找“合適”它條件的員工,這個公司不合適你,還有下一個,或者干脆你自己開創(chuàng)一個吧。
Q: 技術面試還有什么特別的訣竅么?
A: 微軟全球資深副總裁,亞洲研究院的前任院長沈向洋博士經(jīng)常講的一句話是“Nothing replaces hard work”,既然同學們知道技術面試不外乎就是這些類型的題目,那大家就自己動手做一遍好了。如果實在做不出來,可以學習《編程之美》或其他書上詳細的講解。
Q: 我自己解答問題太慢了,能把《編程之美》書上的解法背下來,這也是一種捷徑吧?
A: 有時要小心這樣的“捷徑”。我想起以前考大學的一件事兒。當時有一本很厚的英語標準化考試模擬題,不少同學都買來做。另一位同學從學長那里得了一本做過的書,我們在做題的時候,他說:“我不用做了,我已經(jīng)有答案了,我平時看看答案就行了,一樣的。”結果高考的時候,他的英語考得很不好。
所以,對于認為只要買了一本《編程之美》,或者其他寶典,就好像得到了入職捷徑的同學,我要提醒一下:小心這樣的捷徑!紙上得來終覺淺,絕知此事要躬行。
小飛的總結
結束了和研發(fā)經(jīng)理的幾次對話之后,小飛陷入了深思。他發(fā)現(xiàn)面試并不一定是用難題、偏題來考倒人,筆試和面試考察的都是自己在編程、解決問題、與人合作等方面的全面能力。運氣和背好的答案并不能幫助他解決所有的問題。微軟公司花費很多人力物力來尋找合適的人才1,那自己如何能展現(xiàn)能力,讓伯樂相中?他做了如下的總結。
1. 知己知彼。知己,就是要了解自己的能力、興趣、職業(yè)發(fā)展方向;知彼,就是要了解公司的文化、戰(zhàn)略方向和擇才標準。
2. 筆試就是基礎,用扎實的理解和考慮完備的解答來征服閱卷者。
3. 面試就是探討,用縝密的代碼和嚴密的分析贏得未來同事的尊重。思考問題的方法比結果重要,面試者會更加在乎你解決問題的思考過程。
4. 你的工作就是最好的面試,不要把時間花在尋找捷徑和背誦答案上,要通過實際的工作和產(chǎn)品來體現(xiàn)自己的水平。
千里之行,始于足下,要想在入職競爭中脫穎而出,自己得先下苦功夫,在平時就要用職業(yè)的標準來要求自己。他相信,只要自己付出了足夠的努力,就會有收獲——“長風破浪會有時,直掛云帆濟滄海”。
要更多地了解微軟,特別是微軟亞洲研究院的方方面面,請訪問研究院網(wǎng)站:www.msra.cn?和博客網(wǎng)站:http://blog.sina.com.cn/msra
總結
以上是生活随笔為你收集整理的基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的位移运算符_java中的移位
- 下一篇: lucene索引MySQL原因_我如何在