亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

嵌入式學(xué)習(xí)指南

時(shí)間:2023-03-10 19:52:18 嵌入式培訓(xùn) 我要投稿
  • 相關(guān)推薦

嵌入式學(xué)習(xí)指南

  雇傭合適的人對(duì)于Fog Creek軟件公司來(lái)說(shuō)是非常關(guān)鍵的。在我們這個(gè)領(lǐng)域,有三類人可以挑選。在一個(gè)極端,是哪些混進(jìn)來(lái)的,甚至缺乏最基本的工作技巧.只要問(wèn)這類人兩三個(gè)簡(jiǎn)單的問(wèn)題,再讀一下他們的簡(jiǎn)歷,就可以輕易地剔除他們。另一個(gè)極端的類型是才華橫溢的超級(jí)明星這些人僅僅為了好玩就用匯編語(yǔ)言為PalmPilot(一種手掌電腦)寫了一個(gè)Lisp(一種人工智能編程語(yǔ)言)編譯器。在這兩種極端類型中間的是一大群不能確定水平的候選者,也許他們中的某些人能干些什么?這里的關(guān)鍵是明白超級(jí)明星和那一大堆屬于中間類型的人的區(qū)別,因?yàn)镕ogCreek軟件公司只雇傭超級(jí)明星。下面我要介紹一些找出超級(jí)明星的技巧。

嵌入式學(xué)習(xí)指南

  Fog Creek公司最重要的雇傭標(biāo)準(zhǔn)是:

  有頭腦, 并且完成工作

  就是這些了。符合這樣標(biāo)準(zhǔn)的人就是我們公司需要的員工了。記住這條標(biāo)準(zhǔn)。每天上床前背誦這條標(biāo)準(zhǔn)。我們公司的目標(biāo)之一就是雇傭擁有這樣的潛質(zhì)的人,而不是雇傭懂某些技術(shù)的人。任何人所擁有的某些具體技術(shù)都會(huì)在幾年內(nèi)過(guò)時(shí),所以,雇傭有能力學(xué)習(xí)新技術(shù)的人,要比雇傭那些只在這一分鐘知道SQL編程是怎么回事的人對(duì)公司更劃算一點(diǎn)。

  有頭腦確實(shí)是一個(gè)很難定義的品質(zhì)。但是讓我們看一些在面試時(shí)能提問(wèn)的一些問(wèn)題,通過(guò)這些提問(wèn),我們可以找出擁有這種品質(zhì)的人。完成工作非常關(guān)鍵?雌饋(lái)有頭腦但是不能完成工作的人經(jīng)常擁有博士學(xué)位,在大公司工作過(guò),但是在公司中沒(méi)有人聽他們的建議,因?yàn)樗麄兪峭耆撾x實(shí)際的。比起準(zhǔn)時(shí)交活兒,他們寧愿對(duì)于一些學(xué)院派的東西沉思。這些人由以下特性而可以識(shí)別出來(lái)。他們總是愛(ài)指出兩個(gè)根本不同的概念間的相似性。例如,他們會(huì)說(shuō)“Spreadsheets是一種特殊的編程語(yǔ)言”,然后花一個(gè)禮拜寫一篇?jiǎng)尤说,智慧的白皮書。這篇白皮書論述了,作為一個(gè)編程語(yǔ)言,spreadsheet關(guān)于計(jì)算語(yǔ)言特性的方方面面。聰明,但是沒(méi)用。

  現(xiàn)在,我們來(lái)談?wù)勍瓿晒ぷ鞯菦](méi)有頭腦的人。他們愛(ài)做蠢事。從來(lái)也沒(méi)有考慮過(guò)將來(lái)得靠他們自己或者別的什么人來(lái)亡羊補(bǔ)牢。通過(guò)制造新的工作,他們成為了公司的負(fù)債而不是資產(chǎn)。因?yàn)樗麄儾粌H沒(méi)有為公司貢獻(xiàn)價(jià)值,還浪費(fèi)了好員工的時(shí)間。這些人通常到處粘貼大堆的代碼,而不愿意寫子程序。他們是完成了工作,但是不是以最聰明的方式完成工作。

  面試時(shí)最重要的法則是:

  做決定

  在面試結(jié)束時(shí),對(duì)于被面試者,你不得不做一個(gè)直截了當(dāng)?shù)臎Q定。這個(gè)決定只有兩個(gè)結(jié)果:雇傭或者不雇傭.回到你的電腦前,立刻用電子郵件通知招聘負(fù)責(zé)人你的決定。電子郵件的主題應(yīng)該是雇傭或者不雇傭。接著你需要在正文中寫兩段來(lái)支持你的決定。

  沒(méi)有其他的答案。永遠(yuǎn)不要說(shuō),“雇傭你,但是不能在我的團(tuán)隊(duì)中”。這是非常粗魯?shù),因(yàn)槟阍诎凳緫?yīng)試者沒(méi)有聰明到能有和你一起工作的資格,但是以他的頭腦適合進(jìn)入那些天生輸家隊(duì)伍。如果你發(fā)覺(jué)自己被誘惑,想說(shuō)出那句“雇傭你,但是不能在我的隊(duì)伍中”,那么就簡(jiǎn)單的把這句話變成“不雇傭”再說(shuō)出口。這樣就沒(méi)事了。甚至如果某個(gè)人在特定領(lǐng)域很能干,但是在別的隊(duì)伍中將會(huì)表現(xiàn)不好,也是不雇傭。事物變化的如此之快,我們需要的是在任何地方都能成功的人。如果某些情況下你發(fā)現(xiàn)了一個(gè)白癡專家(擁有某些特殊能力的白癡),這個(gè)專家對(duì)于SQL非常,非常,非常的精通,但是除此之外什么也學(xué)不會(huì),不雇傭。在FogCreek公司他們沒(méi)有將來(lái)。

  永遠(yuǎn)不要說(shuō),“也許,我吃不準(zhǔn)”。如果你吃不準(zhǔn),意味著不雇傭?,比你想象的容易的多。吃不準(zhǔn)?就說(shuō)不!同樣,如果你不能作出決定,那意味著不雇傭。不要說(shuō),”嗯,雇傭,我想是這樣的。但是關(guān)于...,我想知道...”。這種情況就是不雇傭。

  最重要的是記住這點(diǎn),放棄一個(gè)可能的好人要比招進(jìn)一個(gè)壞人強(qiáng)(譯者按:中國(guó)有位哲人說(shuō)過(guò),寧可錯(cuò)殺一千,不可放過(guò)一個(gè),呵呵)。一個(gè)不合格的求職者如果進(jìn)入了公司,將要消耗公司大量的金錢和精力。其他優(yōu)秀員工的還要浪費(fèi)時(shí)間來(lái)修復(fù)這個(gè)人的錯(cuò)誤。如果現(xiàn)在你還在猶豫,不雇傭。

  如果你是FogCreek公司的面試官,當(dāng)你拒絕了大量的應(yīng)聘者時(shí),不要為FogCreek公司將因此雇不到任何人了而憂慮。這不是你的問(wèn)題。這是招聘負(fù)責(zé)人的問(wèn)題。這是人力資源部的問(wèn)題。這是Joel(譯者注:FogCreek公司的老板,本文作者)的問(wèn)題。但不是你的問(wèn)題。不停地問(wèn)自己,哪種情況更糟糕?一種情況是我們變成了一個(gè)龐大的,糟糕的軟件公司,充斥著許多腦袋空空如可可果殼的家伙,另一種情況是我們是一個(gè)小而高品質(zhì)的公司。當(dāng)然,找到優(yōu)秀的應(yīng)聘者(并聘用他們)是很重要的。找到有頭腦而且完成工作的人是公司中的每個(gè)員工的日常工作之一。但是當(dāng)你作為JoelCreek公司的一員真的開始面試一個(gè)應(yīng)聘者時(shí),要裝作現(xiàn)在正有很多優(yōu)秀的人想打破頭擠進(jìn)FogCreek公司。總之,無(wú)論找到一個(gè)不錯(cuò)的應(yīng)聘者是多么的難,永遠(yuǎn)不要降低你的標(biāo)準(zhǔn)。

  但是你如何作出雇傭或者不雇傭這樣艱難的決定?你只要在面試過(guò)程中不停地問(wèn)自己:這個(gè)人有頭腦嗎?這個(gè)人能完成工作嗎?要作出正確的回答,在面試時(shí)你必須問(wèn)對(duì)問(wèn)題。

  開個(gè)玩笑,下面我要問(wèn)個(gè)有史以來(lái)最差的面試問(wèn)題:“Oracle8i中的數(shù)據(jù)類型varchar和varchar2有什么區(qū)別”這是一個(gè)可怕的問(wèn)題。掌握這種瑣碎的技術(shù)細(xì)節(jié)和FogCreek公司想雇傭你之間沒(méi)有任何聯(lián)系。誰(shuí)會(huì)去記這種東西?如果有在線幫助,你可以在15秒內(nèi)找到答案。

  實(shí)際上,還有更差的問(wèn)題,等會(huì)兒我會(huì)談到的。

  現(xiàn)在我們要談到有趣的部分了:面試時(shí)提哪些問(wèn)題。我的面試問(wèn)題清單來(lái)自于我去微軟公司找第一份工作的經(jīng)歷。這里實(shí)際上有幾百個(gè)微軟面試問(wèn)題。每個(gè)人都有偏愛(ài)的問(wèn)題。你也可以發(fā)展一套自己的面試問(wèn)題以及面試的個(gè)人風(fēng)格,這樣你就可以比較容易地作出雇傭/不雇傭的決定。以下是我成功使用過(guò)的一些面試技巧,在面試前,我讀一遍應(yīng)試者的簡(jiǎn)歷,然后在一張紙片上隨便寫以下我的面試計(jì)劃。這個(gè)計(jì)劃實(shí)際上就是我要問(wèn)的問(wèn)題清單。以下是一個(gè)例子(用來(lái)面試程序員的):

  介紹

  應(yīng)試者參加過(guò)的項(xiàng)目

  無(wú)法回答的問(wèn)題

  C語(yǔ)言函數(shù)

  你滿意嗎?

  設(shè)計(jì)問(wèn)題

  挑戰(zhàn)

  你還有什么問(wèn)題?

  在面試前,我非常,非常當(dāng)心,避免自己先入為主。如果在面試前你就已經(jīng)想當(dāng)然地認(rèn)為,一個(gè)麻省理工的博士一定是一個(gè)有頭腦的人。那么在接下來(lái)的一小時(shí)的面試時(shí)間內(nèi),無(wú)論那個(gè)麻省理工的博士說(shuō)什么都不能改變你的最初印象。如果在面試前你就認(rèn)為這個(gè)應(yīng)試者是個(gè)傻瓜,那么他面試時(shí)說(shuō)什么也無(wú)濟(jì)于事。面試就象一個(gè)非常精巧的天平。

  一小時(shí)的面試結(jié)束后就要對(duì)一個(gè)人下結(jié)論是不容易的(但是你又必須在面試結(jié)束后得出結(jié)論)。一些不起眼的細(xì)節(jié)可能會(huì)影響最后的結(jié)論。如果你在面試開始前對(duì)于應(yīng)試者有了一點(diǎn)了解的話,就好比天平的某一端加上了重重的砝碼。這樣面試本身就會(huì)變得沒(méi)有用處了。以前有一次在面試前,一個(gè)招聘負(fù)責(zé)人跑進(jìn)我的房間說(shuō),“你肯定會(huì)愛(ài)上這個(gè)家伙的!"對(duì)一個(gè)男孩?天哪,這簡(jiǎn)直讓我發(fā)瘋。我本來(lái)應(yīng)該說(shuō),“嗯,如果你這么確定我會(huì)喜歡他,為什么你不干脆雇傭他,何必讓我浪費(fèi)時(shí)間來(lái)面試?”但是那時(shí)我還太年輕幼稚,所以還是面試了那個(gè)人。當(dāng)這個(gè)家伙開始說(shuō)一些蠢話時(shí),我對(duì)自己說(shuō),“哇塞,這應(yīng)該是個(gè)例外情況,也許是大智若愚。”我開始帶著玫瑰色眼鏡看他了。

  于是我以說(shuō)“雇傭”結(jié)束了面試,雖然他是一個(gè)糟糕的面試者。接下來(lái)發(fā)生了什么事?除了我,其他的面試官都說(shuō),不要雇傭這個(gè)人。教訓(xùn)是,不要聽別的人的話,在面試應(yīng)試者前不要四處打探這個(gè)面試者的情況。最重要的是不要和別的面考官談?wù)搼?yīng)試者,除非你們都已經(jīng)作出了獨(dú)立的判斷。這才是科學(xué)的做法。

  作為面試步驟的第一步,介紹的目的是讓應(yīng)試者放輕松。我通常花30秒鐘,講一下我是誰(shuí),接下來(lái)面試會(huì)如何進(jìn)行。我總是使得應(yīng)試者確信,我們關(guān)心的是他(她)如何解決問(wèn)題的,而不是他(她)的最終答案是對(duì)還是錯(cuò)。順便說(shuō)一下,面試時(shí),你不要和應(yīng)試者隔著一個(gè)桌子坐著,否則在你和面試者之間就有了一個(gè)障礙,并且暗示著一種比較正式嚴(yán)肅的氣氛,這樣應(yīng)試者就很難放松了。更好的辦法是把桌子靠墻放著,或者和應(yīng)試者坐在桌子的同一邊,這樣有助于應(yīng)試者放松。只有應(yīng)試者不會(huì)因?yàn)榫o張而表現(xiàn)失常,你才能更有效的進(jìn)行面試.

  第二步的內(nèi)容就是問(wèn)應(yīng)試者最近做了些什么項(xiàng)目。對(duì)剛畢業(yè)的學(xué)生, 如果有論文就問(wèn)問(wèn)論文,沒(méi)有的話,就問(wèn)問(wèn)他們做過(guò)什么很喜歡的大作業(yè).例如,有時(shí)候我會(huì)問(wèn)一下,“你最喜歡上學(xué)期哪門課程?不一定要和計(jì)算機(jī)相關(guān)的。”事實(shí)上,如果應(yīng)試者回答的課程和計(jì)算機(jī)沒(méi)有關(guān)系,我會(huì)比較高興。有時(shí)候你會(huì)發(fā)現(xiàn)這個(gè)計(jì)算機(jī)系應(yīng)屆生選擇了盡可能少的計(jì)算機(jī)相關(guān)課程,但是卻選修了很多和音樂(lè)相關(guān)的課程。但是他(她)卻說(shuō)最喜歡的課程是《面向?qū)ο髷?shù)據(jù)庫(kù)》。哼哼,不錯(cuò)啊.不過(guò)如果你直接承認(rèn)你喜歡音樂(lè)勝于計(jì)算機(jī),而不是在這兒胡說(shuō)八道的話, 我會(huì)更高興一點(diǎn)。

  當(dāng)面試有工作經(jīng)驗(yàn)的人時(shí),你可以讓他們談一下前一份工作。

  我問(wèn)這個(gè)問(wèn)題的目的是在尋找一樣品質(zhì):熱情。在應(yīng)試者談到他(她)最近做過(guò)的項(xiàng)目時(shí),你觀察到以下跡象都是不錯(cuò)的:

  談到他們做過(guò)的項(xiàng)目時(shí)變得熱情洋溢;他們的語(yǔ)速更快,語(yǔ)言更生動(dòng)活潑。這說(shuō)明他們對(duì)某些東西有興趣,有熱情(因?yàn)楝F(xiàn)實(shí)中有許多人對(duì)所做的項(xiàng)目根本漠不關(guān)心呢)。即使他們激動(dòng)地表達(dá)對(duì)做過(guò)的項(xiàng)目的負(fù)面感情,這也是一個(gè)好的信號(hào)。“我曾經(jīng)為上一個(gè)老板安裝FooBarMarkII,但他是個(gè)傻瓜!”表現(xiàn)出熱情的人就是我們要雇傭的人。差的應(yīng)試者對(duì)工作根本就不關(guān)心,所以根本不會(huì)激動(dòng)。一個(gè)非常好的信號(hào)是當(dāng)應(yīng)試者很激動(dòng)地談?wù)撋弦环莨ぷ,以至于暫時(shí)忘記了他們正在被面試。有時(shí)候應(yīng)試者剛開始面試時(shí)表現(xiàn)的很緊張,這是很正常的現(xiàn)象,所以我通常忽略不計(jì)。但是當(dāng)他們談到單色計(jì)算藝術(shù)(ComputationalMonochromaticArt)時(shí),這個(gè)家伙變得極端興奮,一點(diǎn)都不緊張了。不錯(cuò),我喜歡這樣的應(yīng)試者,因?yàn)樗麄冴P(guān)心他們做的事。(什么是單色計(jì)算藝術(shù)?拔掉你的電腦顯示器的電源就可以看到了)

  能認(rèn)真地去解釋事情。某些人被我拒掉的原因就是他們不會(huì)用普通人能明白的語(yǔ)言去解釋他們做過(guò)的項(xiàng)目。很多工科專業(yè)的人總是以為所有人都知道Bates理論(譯者注:BatesTheorem,一種經(jīng)濟(jì)學(xué)的理論)或者Peano公理組(譯者注:Peano"sAxioms,數(shù)論中的一些定理)是什么。如果應(yīng)試者開始滿口行話了,讓他們停一停,然后你說(shuō),“能幫我個(gè)忙嗎?就是為了練習(xí)一下,你能把剛才說(shuō)的用我老祖母也能理解的話說(shuō)一遍嗎?”但即便如此,有些人還是繼續(xù)用那些術(shù)語(yǔ),而且根本沒(méi)法讓人明白他們?cè)谡f(shuō)什么。天哪!

  如果這個(gè)項(xiàng)目是一個(gè)團(tuán)隊(duì)項(xiàng)目,看看他們是否在有承擔(dān)領(lǐng)導(dǎo)責(zé)任的跡象?一個(gè)應(yīng)試者可能會(huì)說(shuō):“我們用的是X方法,但是老板說(shuō)應(yīng)該是Y,而客戶說(shuō)應(yīng)該是Z。”我會(huì)問(wèn),“那么你怎么做的?”一個(gè)好的回答可能是“我設(shè)法和團(tuán)隊(duì)中別的人開了個(gè)會(huì),然后一起搞出個(gè)辦法...”壞的回答看起來(lái)象,“嗯,我什么也不能做。這樣的問(wèn)題我解決不了。”記住,聰明并且能完成工作。要搞清楚某人是否能完成工作的一個(gè)辦法就是看看他(她)過(guò)去是否傾向于完成任務(wù)。事實(shí)上,你可以主動(dòng)要求他們給你個(gè)例子證明他們能擔(dān)任領(lǐng)導(dǎo)作用,完成任務(wù)。-例如克服公司的陳規(guī)陋習(xí)。

  現(xiàn)在我們談?wù)勄鍐紊系牡谌睿瑹o(wú)法回答的問(wèn)題。這很有趣。這個(gè)主意的關(guān)鍵在于問(wèn)一些不可能有答案的問(wèn)題,就是想看一下應(yīng)試者怎么辦。“西雅圖有多少眼科醫(yī)生?”“華盛頓紀(jì)念碑有多重?”“洛杉機(jī)有多少加油站?”“紐約有多少鋼琴調(diào)音師?”

  聰明的應(yīng)試者猜到你不是要測(cè)驗(yàn)他們的專業(yè)知識(shí),他們會(huì)積極地給出一個(gè)估計(jì)。“嗯,洛杉機(jī)的人口是七百萬(wàn);每個(gè)人平均擁有2.5輛轎車.。”當(dāng)然如果他們的估計(jì)完全錯(cuò)誤了也沒(méi)有關(guān)系。重要的是他們能積極地試著回答問(wèn)題。他們可能會(huì)試著搞清楚每個(gè)加油站的儲(chǔ)量。“嗯,需要四分鐘給一個(gè)儲(chǔ)油罐加滿油,一個(gè)加油站有十個(gè)油泵每天運(yùn)行十八個(gè)小時(shí)...”他們也可能試著從占地面積來(lái)估計(jì)。有時(shí),他們的想法的創(chuàng)造力讓你吃驚;而有時(shí),他們直接要一個(gè)LA的黃頁(yè)去查。這都是好跡象。

  不聰明的應(yīng)試者則被難住了。他們目瞪口呆地望著你,好像你來(lái)自火星。你不得不提示:“嗯,如果你想建立一個(gè)象洛杉機(jī)那么大的城市,你需要建立多少個(gè)加油站?”你還可以提示他們:“加滿一個(gè)儲(chǔ)油罐要多長(zhǎng)時(shí)間?”不過(guò),這些木疙瘩腦袋還是只會(huì)坐在那里發(fā)呆,你得拖著他們往前走才行。這類人不會(huì)解決問(wèn)題,我們可不要這樣的人。

  關(guān)于編程問(wèn)題,我通常要求應(yīng)試者用C語(yǔ)言寫一些小函數(shù)。以下是我通常會(huì)出的題目:

  將一個(gè)字符串逆序

  將一個(gè)鏈表(linked list)逆序

  計(jì)算一個(gè)字節(jié)(byte)里有多少bit被置1

  搜索給定的字節(jié)(byte)

  在一個(gè)字符串中找到可能的最長(zhǎng)的子字符串,該字符串是由同一字符組成的字符串轉(zhuǎn)換成整數(shù)、整數(shù)轉(zhuǎn)換成字符串(這個(gè)問(wèn)題很不錯(cuò),因?yàn)閼?yīng)試者要用到堆;蛘遱trev函數(shù))注意,通常你不會(huì)希望他們寫的代碼多于5行,因?yàn)槟銢](méi)有時(shí)間理解太長(zhǎng)的代碼。

  現(xiàn)在我們來(lái)詳細(xì)看一看其中幾個(gè)問(wèn)題:第一個(gè)問(wèn)題:逆序一個(gè)字符串。我這輩子還沒(méi)有見過(guò)那個(gè)面試者能把這題目一次做對(duì)。所有的應(yīng)試者都試圖動(dòng)態(tài)生成緩沖區(qū),然后將逆序的字符串輸出到該緩沖區(qū)中。問(wèn)題的關(guān)鍵在于,誰(shuí)負(fù)責(zé)分配這個(gè)緩沖區(qū)?誰(shuí)又負(fù)責(zé)釋放那個(gè)緩沖區(qū)?通過(guò)這個(gè)問(wèn)題,我發(fā)現(xiàn)了一個(gè)有趣的事實(shí),就是大多數(shù)認(rèn)為自己懂C的人實(shí)際上不理解指針和內(nèi)存的概念。他們就是不明白。這真叫人吃驚,無(wú)法想象這種人也能做程序員。但他們真的就是!這個(gè)問(wèn)題可以從多個(gè)角度判斷應(yīng)試者:

  他們的函數(shù)運(yùn)行快嗎?看一下他們多少此調(diào)用了strlen函數(shù)。我曾經(jīng)看到應(yīng)試者寫的strrev的算法竟然只有O(n^2)的效率,而標(biāo)準(zhǔn)的算法效率應(yīng)該是O(n),效率如此底下的原因是因?yàn)樗麄冊(cè)谘h(huán)中一次又一次調(diào)用strlen函數(shù)。

  他們使用指針運(yùn)算嗎(譯者按:原文為pointerarithmetic,指的是加減指針變量的值)?使用指針運(yùn)算是個(gè)好現(xiàn)象。許多所謂的“C程序員”竟然不知道如何使用指針運(yùn)算(pointerarithmetic)。當(dāng)然,我在前文說(shuō)過(guò)我不會(huì)因?yàn)閼?yīng)試者不掌握一種特定的技巧而拒絕他。但是,理解C語(yǔ)言中的指針不是一種技巧,而是一種與生俱來(lái)的才能。每年一所大學(xué)要招進(jìn)200多個(gè)計(jì)算機(jī)系的新生,所有這些小孩子4歲就開始用BASIC語(yǔ)言在Atari800s寫冒險(xiǎn)游戲了。在大學(xué)里他們還學(xué)Pascal語(yǔ)言,學(xué)得也很棒。直到有一天他們的教授講了指針的概念,突然,他們開始搞不懂了。他們就是不能再理解C語(yǔ)言中的任何東西了。于是90%的計(jì)算機(jī)系學(xué)生轉(zhuǎn)系去學(xué)政治學(xué)。為了挽回面子,他們告訴朋友,他們之所以轉(zhuǎn)系是因?yàn)樗麄冇?jì)算機(jī)系英俊貌美的異性太少。許多人注定腦子里就沒(méi)有理解指針的那根弦。所以說(shuō)理解指針是一種與生俱來(lái)的品質(zhì),而不是一種單純的技巧。理解指針需要腦子轉(zhuǎn)好幾個(gè)彎,某些人天生不擅長(zhǎng)轉(zhuǎn)這幾個(gè)彎。

  第三個(gè)問(wèn)題可以考考面試者對(duì)C的位運(yùn)算的掌握,但這是一種技巧,不是一種品質(zhì),所以你可以幫助他們。有趣的等他們建立了一個(gè)子函數(shù)用來(lái)計(jì)算byte中為1的位的數(shù)目,然后你要求他們優(yōu)化這個(gè)子函數(shù),盡量加快這個(gè)函數(shù)的運(yùn)行速度。聰明的應(yīng)試者會(huì)使用查表算法(畢竟這個(gè)表只有256個(gè)元素,用不了多少內(nèi)存),整個(gè)表只需要建立一次。跟聰明的應(yīng)試者討論一下提高時(shí)間/空間效率的不同策略是十分有意思的事情.進(jìn)一步告訴他們你不想在程序啟動(dòng)時(shí)初始化查詢表。聰明的面試者可能會(huì)建議使用緩沖機(jī)制,對(duì)于一個(gè)特定的byte,只有在第一次被查詢時(shí)進(jìn)行計(jì)算,然后計(jì)算結(jié)果會(huì)被放入查詢表。這樣以后再被查詢時(shí)直接查表就行了。而特別特別聰明的面試這會(huì)嘗試有沒(méi)有建立查詢表的捷徑,如一個(gè)byte和它的置1的bit數(shù)之間有沒(méi)有規(guī)律可循?

  當(dāng)你觀察應(yīng)試者寫C代碼時(shí),以下一些技巧會(huì)對(duì)你有幫助:

  事先向應(yīng)試者說(shuō)明,你完全理解,沒(méi)有一個(gè)好的編輯器光在紙上寫代碼是困難的,所以你不在乎他們手寫的代碼是否看上去不整潔。你也完全明白沒(méi)有好的編譯器和調(diào)試器,很難第一次就寫出完全沒(méi)有bug的程序,所以請(qǐng)他們不必為此擔(dān)心。

  好的程序員在寫代碼前會(huì)訂一個(gè)計(jì)劃,特別是當(dāng)他們的代碼用到了指針時(shí)。例如,如果你要求逆序一個(gè)鏈表,好程序員通常會(huì)在紙的一邊畫上鏈表的草圖,并表明算法中的索引指針當(dāng)前移動(dòng)到的位置。他們不得不這樣做。正常人是不可能不借助草圖就開始寫一個(gè)逆序鏈表的程序的。差的程序員立刻開始寫代碼。

  不可避免的,你會(huì)在他們的程序中發(fā)現(xiàn)bug,于是我們現(xiàn)在來(lái)到了第五個(gè)問(wèn)題:你對(duì)代碼滿意嗎?你可能想問(wèn),“好吧,bug在哪里?”這是來(lái)自地獄的一針見血的問(wèn)題,要回答這個(gè)問(wèn)題可要大費(fèi)口舌。所有的程序員都會(huì)犯錯(cuò)誤,這不是問(wèn)題。但他們必須能找到錯(cuò)誤。對(duì)于字符串操作的函數(shù),他們通常會(huì)忘記在輸出緩沖區(qū)加上字符串結(jié)束符。所有的函數(shù),他們都會(huì)犯off-by-one錯(cuò)誤(譯者按:指的是某個(gè)變量的最大值和最小值可能會(huì)和正常值差1)。他們會(huì)忘掉正常的C語(yǔ)句結(jié)尾的分號(hào)。如果輸入是零長(zhǎng)度字符串,他們的函數(shù)會(huì)運(yùn)行錯(cuò)誤。如果malloc調(diào)用失敗而他們沒(méi)有為此寫好錯(cuò)誤處理代碼,程序會(huì)崩潰。一次就能把所有事情做對(duì)的程序員非常,非常,非常地少.不過(guò)要是真的碰上一個(gè)的話,提問(wèn)就更有意思了.你說(shuō),“還有Bug”。他們會(huì)再仔細(xì)地檢查一遍代碼。這個(gè)時(shí)候,觀察一下他們內(nèi)心是否開始動(dòng)搖了,只是表面上勉強(qiáng)堅(jiān)持說(shuō)代碼沒(méi)有問(wèn)題。

  總之,在程序員寫完代碼后,問(wèn)一下他們是否對(duì)代碼滿意是個(gè)好主意。就像Regis那樣問(wèn)他們!(譯者按,RegisPhilbin是美國(guó)ABC電視網(wǎng)的游戲電視節(jié)目主持人,他的口頭禪是“這是你的最后的答案嗎?)

  第六部分:關(guān)于設(shè)計(jì)的問(wèn)題。讓應(yīng)試者設(shè)計(jì)某樣?xùn)|西。JabeBlumenthal,Excel的原始設(shè)計(jì)者,喜歡讓應(yīng)試者設(shè)計(jì)房子。Jabe說(shuō),曾經(jīng)有一個(gè)應(yīng)試者跑到白板前,畫了一個(gè)方塊,這就是他的全部設(shè)計(jì)。天哪,一個(gè)方塊!立刻拒絕這樣的家伙。你喜歡問(wèn)什么樣的設(shè)計(jì)問(wèn)題?

  好的程序員會(huì)問(wèn)更多的信息。房子為誰(shuí)造的?我們公司的政策是,我們不會(huì)雇傭那些在設(shè)計(jì)前不問(wèn)為誰(shuí)設(shè)計(jì)的人。通常,我會(huì)很煩惱我得打斷他們的設(shè)計(jì),說(shuō)“事實(shí)上,你忘記問(wèn)這個(gè)房子是給誰(shuí)設(shè)計(jì)的了。這個(gè)房子是給一群長(zhǎng)頸鹿造的。”

  笨笨的應(yīng)試者認(rèn)為設(shè)計(jì)就像畫畫,你想畫什么就畫什么。聰明的應(yīng)試者明白設(shè)計(jì)的過(guò)程是一系列艱難的權(quán)衡。一個(gè)很棒的設(shè)計(jì)問(wèn)題是:設(shè)計(jì)一個(gè)放在街角的垃圾箱。想一想你得做多少權(quán)衡!垃圾箱必須易于清空,但是很難被偷走;易于放進(jìn)垃圾,但是碰到狂風(fēng)大作,里面的垃圾不會(huì)被吹出來(lái);垃圾箱必須堅(jiān)固而便宜。在某些城市,垃圾箱必須特別設(shè)計(jì),以防恐怖分子在里面藏一個(gè)定時(shí)炸彈。

  有創(chuàng)造力的應(yīng)試者會(huì)給出有趣而獨(dú)特的設(shè)計(jì)。我最喜歡的問(wèn)題之一是為盲人設(shè)計(jì)一個(gè)放調(diào)味品的架子(譯者按:原文為spicerack,老外的廚房里有個(gè)專門放調(diào)味品的架子,上面放了很多小罐罐,里面裝了各種各樣的調(diào)料)通常許多應(yīng)試者的建議是把布萊葉文(一種盲人使用的文字)刻在放調(diào)料的罐子上,這樣文字會(huì)卷起來(lái)而變形。我碰到一個(gè)應(yīng)試者,他的設(shè)計(jì)是把調(diào)料放在抽屜里,因?yàn)樗X(jué)得水平地感知布萊葉文比垂直地做更方便。(試試看!)這個(gè)答案這樣有創(chuàng)意,使我震驚!我面試了有一打得程序員,從來(lái)沒(méi)有人想到過(guò)類似的答案。這樣有創(chuàng)意的答案確實(shí)躍過(guò)了普通人考慮問(wèn)題的條條框框。僅僅因?yàn)檫@個(gè)答案太有創(chuàng)意了,而且應(yīng)試者別的方面還過(guò)得去,我雇傭了這個(gè)應(yīng)試者,他現(xiàn)在已經(jīng)成為Excel團(tuán)隊(duì)中一個(gè)優(yōu)秀的項(xiàng)目經(jīng)理了(譯者按,本文作者曾在微軟工作過(guò))。

  總是爭(zhēng)取一個(gè)確定的了結(jié)。上嵌這也是完成工作的特質(zhì)的一部分。有時(shí)候應(yīng)試者會(huì)猶猶豫豫不能作出一個(gè)決定,試圖回避困難的問(wèn)題,留著困難的問(wèn)題不作決定就直接向下進(jìn)行,這很不好。好的應(yīng)試者有一種推動(dòng)事情自然地前進(jìn)的傾向,即使你有意把他們拖回來(lái)。如果關(guān)于某個(gè)話題的討論開始原地打轉(zhuǎn)變得沒(méi)有意義了,好的應(yīng)試者會(huì)說(shuō),“嗯,我們可以整天談?wù)撨@個(gè),但是我們得做點(diǎn)什么。為什么我們不開始。”

  于是我們來(lái)到了第七部分,挑戰(zhàn)。這部分很好玩。在面試中留心一下, 當(dāng)面試者的回答絕對(duì)的百分之百毫無(wú)爭(zhēng)議時(shí), 你可以說(shuō)::“嗯,等一下等一下."然后花上兩分鐘玩一下魔鬼的游戲(譯者按,原文為devil"sadvocate,魔鬼代言人指的是違背自己的良知,為錯(cuò)誤邪惡的觀點(diǎn)辯護(hù)).記住一定要在你可以肯定他正確時(shí)和他爭(zhēng)論。

  這個(gè)很有意思。

  軟弱的應(yīng)試者會(huì)屈服。那我就和他說(shuō)拜拜了。

  堅(jiān)定的應(yīng)試者會(huì)找到一個(gè)辦法說(shuō)服你。他們會(huì)以肯尼迪總統(tǒng)的口才來(lái)說(shuō)服你,“也許我誤會(huì)了你的意思,”他們這樣開頭,但是正文仍是堅(jiān)定地站穩(wěn)立場(chǎng)。這樣的人我就雇傭。

  不得不承認(rèn),面試雙方的地位并不是平等的。有可能應(yīng)試者由于害怕你的權(quán)力而不敢于你爭(zhēng)辯。但是,好的應(yīng)試者有足夠的熱情和勇氣堅(jiān)持正確的觀點(diǎn),他們由于熱切希望說(shuō)服你而會(huì)暫時(shí)忘記正在被面試。這樣的人就是我們要雇傭的人。

  最后,可以問(wèn)一下應(yīng)試者有什么想問(wèn)的。一些人喜歡看看應(yīng)試者這時(shí)是否會(huì)問(wèn)一些聰明的問(wèn)題。這是市面上流行的面試書籍的標(biāo)準(zhǔn)技巧。我個(gè)人不在乎應(yīng)試者問(wèn)什么,因?yàn)檫@時(shí)我已經(jīng)做了決定。麻煩在于,應(yīng)試者也許已經(jīng)見了5、6個(gè)人,進(jìn)行了好幾輪面試,他們可能很累了,以至于不能為每輪面試都準(zhǔn)備一個(gè)聰明而獨(dú)特的問(wèn)題。所以如果他們沒(méi)有可問(wèn)的,沒(méi)關(guān)系。

  我總是留下面試的最后5分鐘來(lái)推銷我的公司。這很重要。即使我不打算雇傭眼前這個(gè)應(yīng)試者。如果你幸運(yùn)的找到一個(gè)很棒的應(yīng)試者,你當(dāng)然愿意做任何事情說(shuō)服他(她)來(lái)你的公司。即使他們不是好的應(yīng)試者,你也要盡力讓他們?yōu)镕ogCreek公司激動(dòng),這樣面試結(jié)束時(shí)他們會(huì)對(duì)FogCreek公司留下一個(gè)很好的印象。記住,應(yīng)試者并不僅僅是可能的雇員,他們也是顧客,也是我們公司的推銷員。如果他們覺(jué)得我們的公司很棒,他們也許會(huì)推薦朋友來(lái)面試。

  啊哈,我記得我說(shuō)過(guò)我會(huì)給出一些應(yīng)該避免的非常不好的反面的試題例子。

  首先,避免不合法的問(wèn)題。有關(guān)種族,宗教,性別,出生國(guó),年齡,服役記錄,是否老兵,性取向,生理障礙的問(wèn)題都是不合法的。即使他們的簡(jiǎn)歷說(shuō)他們1990年在軍中服役,也不要問(wèn)有關(guān)問(wèn)題。也許這會(huì)讓他們愉快地談?wù)撛诤硲?zhàn)爭(zhēng)中的經(jīng)歷。但是你的問(wèn)題還是不合法的。如果簡(jiǎn)歷上寫著他們上過(guò)TechnioninHaifa, 不要問(wèn)他們是否是以色列人,即使只是為了閑談,因?yàn)檫@是違法的。

  其次,不要在問(wèn)題中給予應(yīng)試者暗示,我們公司喜歡或者不喜歡什么樣的員工。我能想到的一個(gè)例子是問(wèn)應(yīng)試者是否有小孩或者是否結(jié)婚了。應(yīng)試者也許會(huì)想我們不喜歡有家庭拖累的員工。

  最后,不要問(wèn)那些腦筋急轉(zhuǎn)彎的題目,例如6根火柴怎么拼出4個(gè)三角形。象這樣的靈機(jī)一動(dòng)的問(wèn)題是不能看出應(yīng)試者是否有“有頭腦/完成工作”的品質(zhì)。

  面試與其說(shuō)是科學(xué)不如說(shuō)是藝術(shù)。但是只要你記住有頭腦/完成工作這個(gè)原則,你就可以應(yīng)對(duì)自如。有機(jī)會(huì)就問(wèn)問(wèn)你的同事他們喜歡的面試問(wèn)題和答案。這是我們公司員工午飯時(shí)熱衷的話題之一。

【嵌入式學(xué)習(xí)指南】相關(guān)文章:

AIA考試的學(xué)習(xí)指南05-15

AIA考試學(xué)習(xí)指南05-16

嵌入式培訓(xùn)體系06-04

嵌入式培訓(xùn)分類06-04

嵌入式培訓(xùn)階段04-20

嵌入式培訓(xùn)前景06-04

嵌入式系統(tǒng)的分類06-08

嵌入式系統(tǒng)組成08-29

嵌入式系統(tǒng)設(shè)計(jì)06-05