掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
白板編程可以檢查出兩方面的技能:

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、長(zhǎng)寧網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、長(zhǎng)寧網(wǎng)絡(luò)營(yíng)銷、長(zhǎng)寧企業(yè)策劃、長(zhǎng)寧品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供長(zhǎng)寧建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
這兩大技能對(duì)于一個(gè)出色的軟件開發(fā)人員是至關(guān)重要的。通過進(jìn)行白板編程,這兩種技能都能被準(zhǔn)確地檢驗(yàn)出來。
不管我們是否喜歡,現(xiàn)代軟件工程主要在于知道足夠的模式,并在正確的規(guī)則中使用正確的模式。
幾天甚至幾周后的工作的結(jié)果,通常只是修改幾百行的代碼。
表面上看,原來的開發(fā)人員在寫代碼時(shí)需要多少協(xié)助并不重要。他們可能在寫代碼之前,在腦子里就已經(jīng)想好所有細(xì)節(jié)了?;蛘咭灿锌赡芩麄儗懨恳恍写a的時(shí)候都查閱了API文檔、實(shí)例、或者語法指導(dǎo)。
但是當(dāng)我們深入探究的時(shí)候,就會(huì)發(fā)現(xiàn)這其中有很大差異。
理解概念要比理解現(xiàn)象更重要。
一段代碼變得越復(fù)雜,僅僅依靠一些開發(fā)模式的知識(shí)去開發(fā)就會(huì)變得更難,甚至理解代碼都會(huì)很艱難。
好的白板編程練習(xí),可以檢查出一個(gè)人到底是理解概念,還是通過記住大量模式來掩蓋其基礎(chǔ)知識(shí)的匱乏。
當(dāng)我們問到“你最擅長(zhǎng)哪種編程語言?”我們其實(shí)并不是想要簡(jiǎn)潔的代碼。我們只是在尋找一個(gè)切入點(diǎn),能深入了解一個(gè)人,看看他到底有多大能耐。
這里簡(jiǎn)單總結(jié)一下根據(jù)“候選人熟悉哪一領(lǐng)域”來決定“在面試中需要涉及哪些方面”:
測(cè)試——單元測(cè)試,逆向測(cè)試和端對(duì)端測(cè)試,必要測(cè)試,基于模型的測(cè)試,測(cè)試驅(qū)動(dòng)的和行為驅(qū)動(dòng)的開發(fā),集成測(cè)試。
和候選人談到上面這些的時(shí)候,***的方法是從舉一個(gè)例子開始。***的例子就是讓他們自己寫一個(gè)短小簡(jiǎn)單的例子。
實(shí)際中,候選者寫的大多數(shù)代碼片段都是不***的。這就提供了一個(gè)絕好的機(jī)會(huì),看看候選者到底有多少知識(shí)。
過一遍代碼片段是如何運(yùn)行的,這是非常好的練習(xí)。做技術(shù)面試的時(shí)候,絕對(duì)不要跳過。
如果代碼寫的是一個(gè)算法,有人可以寫出所有步驟,有人可以考慮到特殊情況,有人可以寫出不變式(invariants)并能證明。有人可以根據(jù)每個(gè)獨(dú)立循環(huán)結(jié)構(gòu)和遞歸調(diào)用解釋其復(fù)雜性。
如果代碼是面向?qū)ο缶幊?,有人可以明確指出其具體功能,對(duì)象在何時(shí)如何被創(chuàng)建,如何被銷毀,什么時(shí)候以什么樣的順序會(huì)調(diào)用構(gòu)建與析構(gòu)函數(shù),以及異常出現(xiàn)會(huì)怎樣,內(nèi)存布局看起來是什么樣的。
I代碼是否整潔,或是否包含明顯的bug,這非常重要。
觀察候選人認(rèn)真解釋代碼每一步實(shí)現(xiàn)的功能,可以了解他們的思考與說話方式。以及他們?cè)谄渌I(lǐng)域有多深的了解。
***,這些都是在技術(shù)面試中要用到的檢驗(yàn)技巧。而不是使用API和使用IDE完成特定任務(wù)的技巧。
白板編程很有用,是因?yàn)椋?/p>
能,也不能。
對(duì)于寫整潔的代碼,我覺得可以讓候選人在自己的筆記本電腦上寫。
但是要有這些條件:
要知道,在不熟悉的操作系統(tǒng)、鍵盤甚至是編輯器上,相比在白板上編程可能會(huì)更難。要么讓他們?cè)谧约旱碾娔X上寫程序,要么確認(rèn)你提供的環(huán)境他們能夠接受。
至于理解代碼的部分,白板要更有利。
理想情況下,如果是投影儀的影像就是投放到白板上,我會(huì)讓候選人把投放投射的白板上,面試官再拿幾支記號(hào)筆。
不過我要說明白,電腦上不允許使用“快速修改”之類的功能。
如果只有兩個(gè)人的話,打印機(jī)又在旁邊,那就用用大字體打印出代碼,然后用幾支彩色筆去分析也非常好。
我經(jīng)常被問到,一個(gè)人要如何掌握上面的這些技巧。我的答案就是:教學(xué)(teaching)。
這對(duì)面試官和應(yīng)聘者都是有益的。
我自己對(duì)我的知識(shí)水平有一個(gè)簡(jiǎn)單標(biāo)準(zhǔn)。如果我可以對(duì)一個(gè)領(lǐng)域不做準(zhǔn)備就能進(jìn)行討論的話,我就算是有豐富的知識(shí)了。
在軟件領(lǐng)域,這就意味著不用點(diǎn)退格就寫出***的代碼,然后能一步一步解釋它是做什么的。
如果你是那種經(jīng)常要被叫過去解釋一個(gè)算法或者API的人,那你基本上就不會(huì)對(duì)白板編程面試感到有困難。
不可否認(rèn),白板編程很有幫助。但沒有它也可以。
如果有一個(gè)大屏幕可以顯示代碼,如果屏幕本身就是個(gè)白板,可以在上面用彩色筆進(jìn)行注釋。
我個(gè)人喜歡鼓勵(lì)別人走到白板前。而且這樣做有什么不好呢?
原文鏈接: dima korolev 翻譯: 伯樂在線 - TonyRideBike
譯文鏈接: http://blog.jobbole.com/65625/

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流