|
英文原文:I’m an Engineer, Not a Compiler
原文作者:dclements,發(fā)布于 2009-2-23
最近我接到一個(gè)面試電話,被問(wèn)了許多 Java 的問(wèn)題。這樣的面試很平常,大部分的問(wèn)題也都是標(biāo)準(zhǔn)問(wèn)題:
● 什么是多態(tài)?
● List 和 Set 有什么區(qū)別?你什么時(shí)候用 List,什么時(shí)候用 Set?
● 什么情況下你會(huì)遇見(jiàn)死鎖?
● 強(qiáng)類型和弱類型有什么區(qū)別?
這些算是很合理的問(wèn)題。我不喜歡那個(gè)多態(tài)的問(wèn)題,因?yàn)樗痛蟛糠值拿嫦驅(qū)ο笳Z(yǔ)言以及繼承緊密相關(guān),而當(dāng)我們覆蓋和重載一個(gè)方法時(shí),我們是不會(huì)意識(shí)到“哦!這實(shí)際上是一個(gè)多態(tài)!”而我會(huì)想“什么是繼承,我什么時(shí)候應(yīng)該用繼承”,而這才是面向?qū)ο笳Z(yǔ)言的關(guān)鍵。但是這是我個(gè)人的觀點(diǎn),可能會(huì)有其他不同觀點(diǎn)。
強(qiáng)類型和弱類型的那一題有點(diǎn)不尋常,因?yàn)樗麑?shí)際上指的是類型檢查而不是類型強(qiáng)度。當(dāng)我說(shuō)C是一種弱靜態(tài),Java 是強(qiáng)靜態(tài),Python 是強(qiáng)動(dòng)態(tài)時(shí),他有點(diǎn)迷糊(我認(rèn)為 JavaScript 是弱動(dòng)態(tài),但我并沒(méi)有說(shuō)出來(lái))。
接下來(lái)的是一些細(xì)枝末節(jié)的問(wèn)題:
● List 在哪個(gè)包中?
● File 在哪個(gè)包中?
● 你要繼承的時(shí)候用什么關(guān)鍵字?
?。ㄎ覀円矔?huì)經(jīng)常遇見(jiàn)一些標(biāo)準(zhǔn)問(wèn)題“你 5 年內(nèi)想成為什么樣的人?”等等)
Russ Olsen 提到了問(wèn)細(xì)枝末節(jié)問(wèn)題的結(jié)果:
除了不能告訴你許多信息以外,問(wèn)細(xì)枝末節(jié)的問(wèn)題會(huì)付出兩種代價(jià):首先會(huì)占用你真正可以用來(lái)了解一個(gè)人的時(shí)間,你可以利用這些時(shí)間來(lái)了解這個(gè)人是否足夠聰明,是否有合適的背景,是否適合你的團(tuán)隊(duì)。其次,這種類型的問(wèn)題有可能會(huì)剔除掉那些真正聰明的,你真正想雇傭的人呢。
我現(xiàn)在列出這些細(xì)枝末節(jié)的問(wèn)題,我認(rèn)為還會(huì)引發(fā)一個(gè)結(jié)果:?jiǎn)栠@樣的問(wèn)題剔除掉那些真正合適的人之外,剩下的人將會(huì)錯(cuò)誤的人選。
一個(gè)好的工程師在設(shè)計(jì)和創(chuàng)造系統(tǒng)的時(shí)候是抽象性的思維的,他們會(huì)想象算法,組件,工程性的設(shè)計(jì)。他們不需要知道語(yǔ)言的所有細(xì)節(jié),尤其是當(dāng)他們使用 IDE 時(shí),IDE 可以幫他們完成(我使用 Eclipse:我輸入 List,然后輸入 control + 空格,IDE 會(huì)自動(dòng)幫我載入 Java.util.List)。我能分辨出我需要哪個(gè)包,這比我能記住它們的名字更重要。
類似的,更重要的是我能告訴你什么時(shí)候我應(yīng)該使用繼承,什么時(shí)候應(yīng)該使用多態(tài),而不是僅僅記住概念。
總體而言:用 Google 5 秒鐘可以找到答案的問(wèn)題不是好問(wèn)題。我最喜歡的電話面試問(wèn)題是“你最喜歡的語(yǔ)言是哪一種?”然后接著是“它的弱點(diǎn)是什么?”
然而很多面試和考試測(cè)試的都是為了看你能否很好的取代編譯器而設(shè)置的。甚至 Java 認(rèn)證考試都只關(guān)注在語(yǔ)言的語(yǔ)法和編譯上的問(wèn)題,而不是測(cè)試實(shí)際編程的能力和實(shí)際設(shè)計(jì)系統(tǒng)個(gè)能力。
我是一個(gè)優(yōu)秀的軟件工程師,我不是一個(gè)優(yōu)秀的編譯器。我不能看了一段代碼后就告訴你它有問(wèn)題,它不會(huì)獲取 ClassNotFoundException,現(xiàn)代的編譯器會(huì)告訴我問(wèn)題的所在。即使不是馬上知道,但當(dāng)我編譯的時(shí)候我會(huì)知道。這么說(shuō)我就過(guò)于依賴 IDE?也許吧,但這不是什么壞事,因?yàn)樵谵k公室里我們還是要用到這些工具。
一句話:找一個(gè)合適團(tuán)隊(duì)的人選時(shí),不要糾結(jié)于細(xì)枝末節(jié)的問(wèn)題。
it知識(shí)庫(kù):我是工程師,不是編譯器,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。