自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員面試的標(biāo)準(zhǔn)答案并不標(biāo)準(zhǔn)

移動(dòng)開(kāi)發(fā)
“有時(shí)候,我會(huì)碰到那些不但不知道答案,還自作聰明地給出錯(cuò)誤答案的候選人。知道錯(cuò)誤答案比不知道更糟糕。一些極少數(shù)的甚至堅(jiān)持和試圖向我解釋我應(yīng)該如何理解他們的答案。這已經(jīng)成為了一種個(gè)性問(wèn)題,而且毫無(wú)疑問(wèn)是面試中要 pass 掉的人?!?/div>

[[165225]]

Peter Verhas 在技術(shù)面試時(shí)問(wèn)了一個(gè)看似無(wú)關(guān)的問(wèn)題,并得到了一個(gè)雖然沒(méi)錯(cuò)但并不恰當(dāng)?shù)拇鸢?。隨后,他宣稱,“有時(shí)候,我會(huì)碰到那些不但不知道答案,還自作聰明地給出錯(cuò)誤答案的候選人。知道錯(cuò)誤答案比不知道更糟糕。一些極少數(shù)的甚至堅(jiān)持和試圖向我解釋我應(yīng)該如何理解他們的答案。這已經(jīng)成為了一種個(gè)性問(wèn)題,而且毫無(wú)疑問(wèn)是面試中要 pass 掉的人。”我要聲明的是,Peter 不僅是錯(cuò)了,而且這樣的面試條件完全損害了他所就職的公司的利益,我個(gè)人絕對(duì)不會(huì)工作于有這樣一種態(tài)度的公司。

你可以先去閱讀他的原始文章。事實(shí)上,用不了多長(zhǎng)時(shí)間。

好了,既然你已經(jīng)了解了材料,那么下面讓我們徹底地探討一下吧。

問(wèn)錯(cuò)誤的問(wèn)題

對(duì)于初學(xué)者來(lái)說(shuō),在我看來(lái),整個(gè)過(guò)程從開(kāi)始就錯(cuò)了:

有很多關(guān)于 Java 技術(shù)面試的問(wèn)題,即使是最入門級(jí)的新手也能給出正確的答案。當(dāng)我面對(duì)不那么初級(jí)的候選人時(shí),我不會(huì)問(wèn)這些問(wèn)題來(lái)浪費(fèi)時(shí)間。我假定候選人知道正確答案。但是,有時(shí)也有一些一開(kāi)始我就認(rèn)為是新手的候選人,我會(huì)削減面試以避免浪費(fèi)他/她和我的時(shí)間,因此,我會(huì)問(wèn)一些簡(jiǎn)單的問(wèn)題。這些問(wèn)題的答案通常能揭示知識(shí)的真正水平,于是我們就可以在較短的時(shí)間內(nèi)評(píng)估其水平。

但是,伙計(jì)們,有一點(diǎn)要清楚的是:如果你是技術(shù)面試的面試官,那么你必須要求他們寫代碼,而不是回答問(wèn)題。除非他們申請(qǐng)的職位就是用來(lái)解答編程問(wèn)題的(在這種情況下,你面試的是老師,而不是實(shí)際的程序員),否則你就得要求他們展示他們的技術(shù)能力,而不是他們的口頭知識(shí)。

這樣做的原因應(yīng)該是理所當(dāng)然的,但如果你還不明白的話,我會(huì)從邏輯,例子,和類比這三個(gè)方面加以論證。

邏輯:你面試的程序員不是每一個(gè)都受過(guò)傳統(tǒng)訓(xùn)練。他們可能不知道全部的偏好術(shù)語(yǔ)。是“getters and setters”還是“automatically-defined properties”亦或是“accessors and mutators”呢?這在某種程度上取決于你是在什么語(yǔ)言下成長(zhǎng)的(例如,如果是 C ++ 的話,在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)更喜歡用后者)。這取決于你閱讀的是什么書(shū)。這取決于你有沒(méi)有和其他人討論過(guò)這些——也許是從一本書(shū)上學(xué)來(lái)的,并且是在網(wǎng)絡(luò)上閱讀相關(guān)內(nèi)容。(StackOverflow 最近的民意調(diào)查顯示,求職者中約三分之一或更多的開(kāi)發(fā)人員自認(rèn)為“自學(xué)成才”。)因?yàn)樗麄儧](méi)有用對(duì)詞,你就要踢掉完全合格的候選人嗎?而這還不包括那些因?yàn)樵诿嬖嚂r(shí)過(guò)度緊張而導(dǎo)致甚至簡(jiǎn)單的問(wèn)題也回答得亂七八糟的人。

例子:有一個(gè)為我工作了兩年的開(kāi)發(fā)人員是一個(gè)相當(dāng)有能力的 C# 開(kāi)發(fā)人員。這是一個(gè)能領(lǐng)導(dǎo)小組,能指導(dǎo)一些比較初級(jí)開(kāi)發(fā)人員,并想出一些相當(dāng)?shù)昧Φ脑O(shè)計(jì)的家伙。然后,當(dāng)潛在客戶在會(huì)議中要求他講解靜態(tài)方法是什么的時(shí)候,他完全搞砸了,他牛頭不對(duì)馬嘴地開(kāi)始談?wù)撈饦?gòu)造函數(shù)和其他一些文不對(duì)題的東西。直到他終于意識(shí)到自己在說(shuō)什么的時(shí)候,我已經(jīng)坐在那里用一臉“見(jiàn)鬼了????”的表情看了他幾分鐘。如果按照 Peter 的標(biāo)準(zhǔn),那么毫無(wú)疑問(wèn)他會(huì)面試失敗。然而,在那次會(huì)議之后,他依然為那個(gè)客戶擔(dān)任了 9 個(gè)月的團(tuán)隊(duì)領(lǐng)導(dǎo),對(duì)于他的技術(shù),他的能力,以及那些靜態(tài)問(wèn)題的答案(諷刺的是,從來(lái)沒(méi)有人談到這一點(diǎn)?。](méi)有人提出異議。換句話說(shuō),在沒(méi)有面試壓力時(shí),他做的很好,他的工作也說(shuō)明了這一點(diǎn)。

類比:比方說(shuō),如果你要雇傭樂(lè)隊(duì)來(lái)為你的婚禮演奏,那么你真的介意他們講解音樂(lè)理論和作曲的能力嗎?或者說(shuō)你更關(guān)心的是他們能不能演奏你最喜歡的舞蹈音樂(lè),能不能演奏你的配偶選擇的歌曲,能不能讓你的祖父祖母也跑到舞池中跳起來(lái)?很多樂(lè)隊(duì)(甚至我敢說(shuō)是所有樂(lè)隊(duì)?。。┦且?yàn)樗麄兊墓ぷ鞅憩F(xiàn)和/或樣帶才得到的演出機(jī)會(huì),而不是他們回答問(wèn)題的能力。

期待錯(cuò)誤的答案

接著,Peter 說(shuō),

知道錯(cuò)誤答案比不知道更糟糕。一些極少數(shù)的甚至堅(jiān)持和試圖向我解釋我應(yīng)該如何理解他們的答案。這已經(jīng)成為了一種個(gè)性問(wèn)題,而且毫無(wú)疑問(wèn)是面試中要 pass 掉的人。

呵呵,真是狂妄自大,索性你就叫“編程面試上帝”得了。我的意思是:

有這樣一個(gè)簡(jiǎn)單的問(wèn)題:一個(gè)類的靜態(tài)方法能不能調(diào)用同一個(gè)類的非靜態(tài)方法?如果你稍微懂點(diǎn) Java,你知道答案是:no,不能。靜態(tài)方法屬于類,而不屬于實(shí)例。你甚至可以直接使用類的名稱執(zhí)行靜態(tài)方法,而不需要任何類的實(shí)例。甚至在整個(gè) JVM 中沒(méi)有類的一個(gè)實(shí)例,它也可以運(yùn)行。因此,哪里能夠調(diào)用一個(gè)運(yùn)行連接到實(shí)例的普通方法?

狂妄自大的家伙,沒(méi)有理由認(rèn)為靜態(tài)方法不能調(diào)用實(shí)例方法,好不好。這里 Peter 的問(wèn)題基于這樣一個(gè)事實(shí),靜態(tài)方法沒(méi)有特定對(duì)象的引用(通常是“this”引用),這是給出的答案的理由:“沒(méi)有 this,沒(méi)有方法調(diào)用”。

然而:

話又說(shuō)回來(lái),這時(shí)出來(lái)一個(gè)候選人他的回答是:yes。他甚至開(kāi)始解釋這樣的情況可能發(fā)生在靜態(tài)方法訪問(wèn)實(shí)例的時(shí)候。它可能會(huì)得到一個(gè)實(shí)例作為方法參數(shù),并且通過(guò)那個(gè)引用,它可以調(diào)用實(shí)例方法。他說(shuō)的是對(duì)的。

但是:

這樣的回答并不能改變他對(duì) Java 知之不深的事實(shí),雖然在這個(gè)非常特定的問(wèn)題上,他的回答是對(duì)的。

所以,請(qǐng)?jiān)徫业闹毖圆恢M:這個(gè)答案可以說(shuō)是對(duì)的,但你也可以說(shuō)是錯(cuò)的,因?yàn)?ldquo;這個(gè)候選人沒(méi)有深刻地了解 Java”?但是反過(guò)來(lái)我也可以說(shuō),這個(gè)候選人就是因?yàn)槌浞值乩斫?Java,才能找到一個(gè)雖然出乎你的意料、但實(shí)際上卻是正確的答案。

接下來(lái)會(huì)發(fā)生什么就顯而易見(jiàn)了:對(duì)自己的技術(shù)自信滿滿的面試官,準(zhǔn)備好了一系列已經(jīng)規(guī)定了答案的問(wèn)題來(lái)詢問(wèn)候選人,如果候選人沒(méi)有按照他的答案回答,那就被認(rèn)定為是“不合格”。

舉一個(gè)我親身經(jīng)歷過(guò)的例子。幾年前我到一家公司去面試一個(gè) C ++ 的職位,當(dāng)被問(wèn)到“私有字段能不能從類的外部訪問(wèn)時(shí)?”,正常的回答應(yīng)該是“No,private 會(huì)把這個(gè)字段封裝起來(lái),就好像與世隔離了一樣。”

  1. #include <iostream> 
  2. #include <string> 
  3. using namespace std; 
  4. class Person 
  5. public
  6.   Person (const char* fn, const char* ln, int a) 
  7.     : first_name (fn), last_name (ln), age (a) 
  8.   { } 
  9.   string description () { 
  10.     return first_name + " " + last_name + " is " + to_string (age) + " years old"
  11.   } 
  12. private
  13.   string first_name; 
  14.   string last_name; 
  15.   int age; 
  16. }; 
  17. int main () { 
  18.   Person ted ("Ted""Neward"45); 
  19.   cout << ted.description () << endl; 

按照原意的話,“age”字段是不能從其他地方訪問(wèn)的,是不?

不過(guò),我的回答是:“當(dāng)然可以。你只需要將對(duì)象實(shí)例轉(zhuǎn)換成 void 指針(void*),然后從對(duì)象的開(kāi)始位置計(jì)算偏移量,這樣就可以訪問(wèn)到它了。”

  1. int main () { 
  2.   Person ted ("Ted""Neward"45); 
  3.   cout << ted.description () << endl; 
  4.   void* pTed = (void*)&ted; 
  5.   int offset = sizeof (string) + sizeof (string); 
  6.   char* pTedAge = (static_cast<char *>(pTed) + offset); 
  7.   cout << static_cast<int>(*pTedAge) << endl; // prints 45 

我甚至向他們展示了如何將此歸納成為一個(gè)模板(我把它叫做“THackOMatic”,并認(rèn)為這是我在這門語(yǔ)言中的得意之作之一。)

好了,你的回應(yīng)可能是:

  • 哇,想不到你能想到這一點(diǎn)。很有意思。我在想…
  • 好吧,這樣的確可以,但它不算是一個(gè)好主意。
  • 你完全沒(méi)有領(lǐng)會(huì)這個(gè)問(wèn)題的精神。所以,你還是錯(cuò)了。

如果你的回應(yīng)是前面兩個(gè)中的一種,那么我和你在同一陣營(yíng)。它是一種嘗試,無(wú)論如何這是一種嘗試,而嘗試通常是你正在做錯(cuò)事情的標(biāo)志,除非是在非常狹窄的情況下,沒(méi)有其他辦法,以及除非從今往后你是唯一一個(gè)接觸那些代碼的人。

但是,如果你是第三種回應(yīng),那么你可能沒(méi)有抓住要領(lǐng)。問(wèn)題的要領(lǐng)就是,候選人指出了一種繞過(guò)絆腳石的方式。如果你不能認(rèn)識(shí)到這一點(diǎn),那么我認(rèn)為錯(cuò)在于你,而不在于候選人。

你雇用的人與你面試的判定標(biāo)準(zhǔn)相關(guān)

不管是對(duì)是錯(cuò),你給出你的問(wèn)題,候選人用他們的方式想問(wèn)題,然后想出一個(gè)新奇的答案。但是只關(guān)注答案的話,你就會(huì)錯(cuò)過(guò)重要組成部分——他們找到的繞過(guò)它的辦法。

面試可用于發(fā)現(xiàn)那些滿足一定技術(shù)門檻的候選人,也可以用來(lái)找到那些有辦法繞過(guò)障礙物的求職者。Bug,生產(chǎn)中斷,設(shè)計(jì)缺陷,不管是什么,你需要找尋那些不會(huì)墨守陳規(guī)的迂腐之人。

但是當(dāng)候選人真的這么做了的時(shí)候,你又把他刷了下來(lái)。

所以,其實(shí)你想要的是那種普通的,乏味的,沒(méi)有主見(jiàn)的答案,而他們給出的卻是一個(gè)“開(kāi)箱即用的”,有創(chuàng)意的,令人耳目一新的答案。

你是否聲稱你只聘請(qǐng)“***的”?但是要知道,如果你這樣做的話,那么你聘請(qǐng)的只是那些中間的普通的程序員,在最理想的情況下。那些鶴立雞群的程序員往往是一些開(kāi)箱即用的思考者,因?yàn)樗麄冎烙袝r(shí)候以及在一些特定情況下,規(guī)則是用來(lái)打破的。

在這一點(diǎn)上,你認(rèn)為他們會(huì)滿意你這樣中規(guī)中矩的面試官嗎?我想也不會(huì)。

總結(jié)

所以這里的挑戰(zhàn)是:如果你是面試官,你要面試什么呢?

順便說(shuō)一句,還記得我提到過(guò)的多年前面試過(guò)的那家公司嗎?面試官的回應(yīng)非常典型:“不好意思,正確的答案應(yīng)該是’不’,但是我知道你的意思。你是***個(gè)給我這樣一個(gè)回答的人。”此后不久,他們就雇用了我。并且在我離開(kāi)公司之前,我使用了不少語(yǔ)言技巧來(lái)幫助顯著精簡(jiǎn)了他們的代碼庫(kù)體積。

責(zé)任編輯:倪明 來(lái)源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2016-04-12 14:28:16

程序員面試標(biāo)準(zhǔn)

2014-11-03 14:43:38

程序員

2015-04-30 09:16:24

程序員身體自測(cè)健康

2011-11-25 09:56:45

Java程序員

2020-08-10 08:12:18

Java程序員開(kāi)發(fā)

2024-01-03 15:37:11

數(shù)字化企業(yè)技術(shù)創(chuàng)新

2019-10-12 09:35:37

程序員人生第一份工作大學(xué)

2019-12-05 14:24:47

數(shù)字認(rèn)證電子認(rèn)證CA

2013-01-10 09:22:58

程序員面試程序員面試經(jīng)歷

2015-12-24 10:28:37

程序員面試技巧

2015-03-30 15:34:00

程序員ChromeIE 瀏覽器

2011-01-19 11:14:45

程序員

2015-08-19 08:51:38

程序員面試糟糕

2016-04-28 11:17:33

互動(dòng)出版網(wǎng)

2015-08-19 09:10:37

程序員面試

2013-05-14 09:44:41

程序員面試

2015-03-30 15:51:29

程序員程序員面試

2019-10-15 08:49:02

TCPIP協(xié)議棧

2013-02-19 10:12:59

2014-10-28 10:11:28

iOS程序員面試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)