- 相關(guān)推薦
程序員面試什么最重要?
程序員面試一直是社區(qū)樂(lè)于討論的熱門話題,
程序員面試什么最重要?
。我自己從xx年實(shí)習(xí)以來(lái),先后經(jīng)歷了4家軟件公司,全部是外企,其中有世界500強(qiáng)的通信企業(yè),有從事期權(quán)期貨交易的歐洲中等規(guī)模的金融公司,也有為大型汽車制造商開(kāi)發(fā)Android智能汽車的新興公司?缛隝T行業(yè)以來(lái),我在求職過(guò)程中經(jīng)歷過(guò)多次面試,最近兩年也有過(guò)多次面試別人的經(jīng)驗(yàn)。我感覺(jué)現(xiàn)在到了對(duì)這個(gè)問(wèn)題發(fā)表自己看法的時(shí)候,這篇文章是我站在面試官角度對(duì)于程序員面試問(wèn)題的一個(gè)階段性反思和經(jīng)驗(yàn)總結(jié)。程序員面試什么最重要
【目標(biāo)】
相信和不少朋友一樣,有了幾年工作經(jīng)驗(yàn)成為Senior后就開(kāi)始了面試別人的經(jīng)歷。我在最初這個(gè)階段只是按照自己的想象把”找到基礎(chǔ)好的程序員“,”找到算法能力優(yōu)秀的程序員“,”找到有Android開(kāi)發(fā)經(jīng)驗(yàn)的程序員“等作為面試的目標(biāo)。但是,實(shí)際的經(jīng)歷告訴我,尤其是按“基礎(chǔ)好”,“算法好”這些目標(biāo)招到的人最終效果并不好。比如,有的面試者基礎(chǔ)知識(shí)和算法掌握情況不錯(cuò),進(jìn)程、線程、內(nèi)存等概念清晰,基本的Hash,二叉樹(shù),快速排序等數(shù)據(jù)結(jié)構(gòu)和算法也比較熟悉,但是進(jìn)公司后在實(shí)際工作中表現(xiàn)得很糟糕。后來(lái),我才發(fā)現(xiàn)原來(lái)是我的面試目標(biāo)出了問(wèn)題,我原先的面試方法更像是大學(xué)的算法或操作系統(tǒng)期末考試,按照這種方法讓許多并不合適的人通過(guò)了面試,同時(shí)也可能錯(cuò)過(guò)了許多合適的人。
后來(lái),我的反思是,從公司的角度講,面試的根本目的是找到"能夠干好工作"的人,而“高學(xué)歷”,“算法好”,“基礎(chǔ)好”,“有經(jīng)驗(yàn)”這些都是表象而不是根本,它們并不能直接和“工作好”劃等號(hào)。
【方法】
目標(biāo)明確了,但接下來(lái)的問(wèn)題是假設(shè)面試者是一個(gè)黑盒系統(tǒng),“工作好”不是直接可觀測(cè)變量,你所能直接觀測(cè)的變量是基礎(chǔ)、算法、經(jīng)驗(yàn)、學(xué)歷、性格、談吐、年齡等等。所以,實(shí)際上,你只能從“基礎(chǔ)好”,“算法好”等可以直接觀測(cè)的量去推測(cè)“工作好”的概率,這就是一個(gè)在“X好“條件下"工作好“的條件概率問(wèn)題:P(工作好 | X好)。
根據(jù)這個(gè)模型,面試所應(yīng)該考察哪些方面就很明顯了,那就是選擇那種最具有區(qū)分性的方面來(lái)考察。比如,考察面試者的體型特征沒(méi)有太大意義,因?yàn)镻(工作好|高),P(工作好|矮),P(工作好|胖),P(工作好|瘦)的概率都差不多;所以,體型特征不具有區(qū)分性,這不是面試所應(yīng)該關(guān)注的內(nèi)容。
面試官應(yīng)當(dāng)結(jié)合職位的要求明確哪些因素具有比較好的區(qū)分性。比如,如果要招一名技術(shù)門檻比較高的3D游戲引擎開(kāi)發(fā)工程師,面試者A具有3D游戲引擎開(kāi)發(fā)的經(jīng)驗(yàn),但是在基礎(chǔ)知識(shí)和算法面試方面表現(xiàn)一般;面試者B相反,基礎(chǔ)知識(shí)和算法面試表現(xiàn)很好,但沒(méi)有游戲開(kāi)發(fā)經(jīng)驗(yàn),而你只能選擇其一,
資料共享平臺(tái)
《程序員面試什么最重要?》(http://www.szmdbiao.com)。你選誰(shuí)呢?其實(shí),這就是兩個(gè)條件概率問(wèn)題P(工作好|經(jīng)驗(yàn)好,基礎(chǔ)一般,算法一般)和P(工作好|沒(méi)經(jīng)驗(yàn),基礎(chǔ)好,算法好)。這個(gè)問(wèn)題就留給面試官來(lái)判斷了,就我個(gè)人而言,對(duì)于技術(shù)門檻較高需要技術(shù)積累的職位,經(jīng)驗(yàn)更加說(shuō)明問(wèn)題,因此,我更傾向于面試者A。下面,我再結(jié)合自己的經(jīng)驗(yàn)談?wù)剬?duì)面試中常見(jiàn)方面的看法。
【算法】
算法是Google和MS等大公司面試所重點(diǎn)考察的內(nèi)容。我個(gè)人很喜歡算法,曾經(jīng)參加ACM/ICPC拿過(guò)北京賽區(qū)的13名。但是,就個(gè)人經(jīng)驗(yàn)來(lái)看,我所接觸過(guò)的絕大多數(shù)開(kāi)發(fā)職位而言,算法都不適合作為考察面試者優(yōu)劣的主要因素。對(duì)于普通的非算法性開(kāi)發(fā)職位,考察面試者的算法就相當(dāng)于考察他打乒乓球好不好一樣,與目標(biāo)“工作好”的相關(guān)性太低。就我個(gè)人的經(jīng)驗(yàn)來(lái)看,差不多P(工作好|算法好)=50%,也就是算法面試沒(méi)有太大的區(qū)分性。
甚至,還有一種很不好的情況特別多地出現(xiàn)在算法好的面試者身上,我稱之為“只磨刀,不砍柴”。什么意思呢?有類人只對(duì)什么A*算法,異步編程,JVM類加載機(jī)制這種純技術(shù)問(wèn)題感興趣,對(duì)實(shí)現(xiàn)用戶需求毫無(wú)興趣。這類人看起來(lái)有一定的技術(shù)能力,但是對(duì)公司來(lái)講貢獻(xiàn)十分有限,甚至不如技術(shù)一般但認(rèn)真負(fù)責(zé)的人。所以,一旦遇到面試者算法好,我就特別留意考察會(huì)不會(huì)是這種“只磨刀,不砍柴”的人。
另外,雖然我個(gè)人不了解Google和MS,但我對(duì)于其特別重視考察算法能力的面試策略是持懷疑態(tài)度的。即使在這樣的世界級(jí)大公司,算法雖然重要,但可以想象在項(xiàng)目實(shí)施過(guò)程所遇到的各種各樣問(wèn)題中,算法問(wèn)題絕大多數(shù)時(shí)候不會(huì)是主要瓶頸,沒(méi)有到那種需要每個(gè)人都是算法高手的情況。實(shí)際上,絕大多數(shù)項(xiàng)目真正難點(diǎn)并不是一兩個(gè)算法瓶頸,甚至也不是單點(diǎn)的技術(shù)瓶頸,而是系統(tǒng)性的組織、協(xié)調(diào)、設(shè)計(jì)、開(kāi)發(fā)問(wèn)題,有大量的看起來(lái)不是那么有技術(shù)含量的臟活累活,也有許多問(wèn)題是由于信息不足,并不是技術(shù)能力強(qiáng)就能克服這些困難。一個(gè)團(tuán)隊(duì)最好優(yōu)勢(shì)互補(bǔ),有人算法強(qiáng),有人業(yè)務(wù)分析能力強(qiáng),有人擅長(zhǎng)后端服務(wù),有人擅長(zhǎng)前端界面,有人聰明,有人踏實(shí),這是最好的。如果按照“算法好”的單一標(biāo)準(zhǔn)選材,必定會(huì)把許多優(yōu)秀的人才拒之門外。
補(bǔ)充:在更多地了解了Google和Facebook等一流公司的面試細(xì)節(jié)之后,我對(duì)這個(gè)問(wèn)題的認(rèn)識(shí)有了一定的改變,實(shí)際上這些公司在面試過(guò)程中并不完全強(qiáng)調(diào)技巧性很強(qiáng)的算法,而是更加注重編碼(Coding)能力,只是在進(jìn)行編碼測(cè)試的過(guò)程中往往是通過(guò)一些簡(jiǎn)單算法題來(lái)進(jìn)行的。我對(duì)于這種面試方法越來(lái)越欣賞,并且也作為了我們公司面試過(guò)程中的重點(diǎn)環(huán)節(jié),因?yàn)榫幋a能力的測(cè)試是十分必要的,它有著知識(shí)性問(wèn)題無(wú)法取代的作用,如果一個(gè)面試者連“判斷一個(gè)字符串是否是另一個(gè)字符串的子串”這樣的題目都無(wú)法正確并快速地實(shí)現(xiàn),那么基本上可以直接排除了。我這里所強(qiáng)調(diào)的是不必考察高難度的算法問(wèn)題,并非不重視編碼能力測(cè)試,請(qǐng)讀者不要誤解。
【基礎(chǔ)】
基礎(chǔ)面試是指考察諸如指針使用、進(jìn)程線程概念等基礎(chǔ)知識(shí)的面試,十分類似于大學(xué)期末考試題。我曾經(jīng)以為基礎(chǔ)面試十分重要,但是現(xiàn)在不這么看了。在工作中基礎(chǔ)的確是重要的,但是在面試過(guò)程中,它必須具有區(qū)分性才有意義,也就是說(shuō)P(工作好|基礎(chǔ)好)的概率要高,那么考察指針使用,進(jìn)程線程區(qū)別這樣的基礎(chǔ)題目才有它的意義。我的實(shí)際經(jīng)驗(yàn)是,基礎(chǔ)面試并不具有很好的區(qū)分性,和算法一樣, 差不多P(工作好|基礎(chǔ)好) = 50%。同時(shí),基礎(chǔ)面試是最容易準(zhǔn)備的,中國(guó)人有長(zhǎng)期的應(yīng)試教育經(jīng)驗(yàn),要準(zhǔn)備幾個(gè)把玩指針題目太容易了。
【程序員面試什么最重要?】相關(guān)文章:
如何面試:面試程序員08-10
面試技巧:什么樣的解釋最恰當(dāng)05-30
簡(jiǎn)述求職面試禮儀的重要05-28
程序員面試技巧總結(jié)09-12
關(guān)于如何面試程序員?05-26
面試中了解公司很重要10-22
面試求職禮儀的重要性06-06
無(wú)聲語(yǔ)言是面試重要的公關(guān)手段07-27
淺談面試禮儀的重要性09-24
面試禮儀是面試成功的重要一步07-26