如何更好的面試JavaScript工程師
基礎(chǔ)
冒泡與捕獲:它們的定義,它們的區(qū)別,如何阻止冒泡?基礎(chǔ)知識(shí),經(jīng)典題目。但是不是每個(gè)人都能完整全面的回答出這個(gè)問(wèn)題,面試者需要對(duì)DOM tree有自己的理解。
閉包:閉包是一個(gè)很好的面試題目,能夠很好的考查出不同水平的面試者。了解什么是閉包、如何使用閉包、閉包的原理、閉包的真正原理,只有對(duì)JS的作用域鏈、垃圾回收機(jī)制有深入了解的工程師才能正確無(wú)誤的完整回答這個(gè)問(wèn)題。

Scope Chain是了解Closure原理的關(guān)鍵
工具庫(kù)
jQuery:考查編程習(xí)慣和經(jīng)驗(yàn)。jQuery作為現(xiàn)在使用最為廣泛而且最簡(jiǎn)單的JS庫(kù),能夠很好的測(cè)出使用者的開(kāi)發(fā)經(jīng)驗(yàn)和JS水平。一個(gè)有著真正開(kāi)發(fā)經(jīng)驗(yàn)的工程師,應(yīng)當(dāng)能正確的寫(xiě)出各種類(lèi)型的選擇器,回答為什么用bind來(lái)進(jìn)行事件綁定、mouseover和mouseenter的區(qū)別。如果這些考不倒他,別急,live方法的實(shí)現(xiàn)原理、ready方法的實(shí)現(xiàn)機(jī)制這兩個(gè)問(wèn)題足以考查出他對(duì)DOM、瀏覽器差異的認(rèn)識(shí)。
51CTO推薦:jQuery從入門(mén)到精通
extJS、YUI、Prototype:這些工具庫(kù)或框架都有各自的特點(diǎn),可以采用像上面類(lèi)似的問(wèn)題從淺入深進(jìn)行了解。
實(shí)際問(wèn)題
解決實(shí)際問(wèn)題考查的是你把知識(shí)融會(huì)貫通的能力、解決問(wèn)題的能力、理解能力以及學(xué)習(xí)能力,這對(duì)綜合素質(zhì)的考查是一種很好的方式。***次面對(duì)一個(gè)問(wèn)題,面試者是否能迅速給出思路、由過(guò)程推導(dǎo)出結(jié)果,能否在一些提示下一步步得到最終的完整答案,這都是很好的考察點(diǎn)。
Autopager:自動(dòng)翻頁(yè)功能(實(shí)現(xiàn)方式參考http://blog.csdn.net/hfahe/article/details/5827483)是一個(gè)由淺入深考查面試者能力的好例子。對(duì)滾動(dòng)條事件的了解,pageHeight、windowHeight、scrollY的區(qū)別和關(guān)系是兩個(gè)關(guān)鍵點(diǎn),而***對(duì)于事件的clearTimeout優(yōu)雅處理是隱藏的考查點(diǎn)。
Lazyloader:許多人見(jiàn)過(guò)圖片延遲加載的產(chǎn)品,但是他們是否有了解過(guò)背后的實(shí)現(xiàn)原理?從功能抽象到具體實(shí)現(xiàn),onresize的考慮、延遲觸發(fā)的考慮,這道題目有一定難度,和上面的例子也有一定相似之處。
經(jīng)過(guò)了前三個(gè)方面的了解,你應(yīng)該已經(jīng)對(duì)這個(gè)面試者的基本水平有了一個(gè)大致的判斷。下面的步驟可以讓你了解這個(gè)人能夠承擔(dān)什么樣的工作,他的發(fā)展?jié)摿Χ啻蟆?/p>
項(xiàng)目
通過(guò)之前的項(xiàng)目經(jīng)歷可以認(rèn)識(shí)他的Team work能力、解決問(wèn)題的能力,在項(xiàng)目中的角色和承擔(dān)的責(zé)任也可以反襯他的個(gè)人能力。
如果他沒(méi)有做過(guò)跨瀏覽器開(kāi)發(fā),那么這種需要長(zhǎng)期積累的任務(wù)就不適合分派給他來(lái)解決;如果他曾經(jīng)有瀏覽器插件的開(kāi)發(fā)經(jīng)歷,那么瀏覽器App的工作也許能夠利用他的現(xiàn)有經(jīng)驗(yàn);如果他用過(guò)jQuery Mobile、sencha touch或者XUI,那么他可能適合開(kāi)發(fā)移動(dòng)Web App。作為管理者高明的地方在于,把合適的人用在合適的地方。
技術(shù)視野
具有技術(shù)視野的人一般具有很大的發(fā)展?jié)摿?,他們未?lái)不會(huì)僅僅只是一個(gè)普通的工程師,而有可能會(huì)成長(zhǎng)為技術(shù)專(zhuān)家或者技術(shù)管理者。
在HTML5方面應(yīng)當(dāng)對(duì)新的語(yǔ)義標(biāo)簽、Canvas、Webworker、Drag & Drop有所經(jīng)驗(yàn)或者了解;在CSS3方面,應(yīng)當(dāng)或多或少?lài)L試過(guò)Radius、Gradient、Transform。當(dāng)然,如果能夠了解Mask,甚至能夠知道Flexible Box的使用方法和原理,那么這個(gè)人對(duì)盒子模型的理解和對(duì)新知識(shí)的學(xué)習(xí)能力可以得到很好的體現(xiàn)。
JS開(kāi)發(fā)工程師是最容易的職位,也是最難的職位。新的技術(shù)和框架層出不窮、瀏覽器版本日新月異、越來(lái)越多API的出現(xiàn),好的JS開(kāi)發(fā)工程師需要隨時(shí)學(xué)習(xí)和更新許多知識(shí),包括后臺(tái)(Webworker、Websocket、Node.js)、UI(Canvas、Transparent)、動(dòng)畫(huà)(Transform、Transition、Animation)等方面。面試者是否有自我更新意識(shí),他的技術(shù)視野多高決定了他能夠涵蓋的范圍多大,他的未來(lái)發(fā)展?jié)摿Χ啻蟆?/p>
HTML5已經(jīng)戰(zhàn)勝移動(dòng)Flash,前途無(wú)量
如果能夠把以上所有問(wèn)題清楚、順利的回答完整,我相信他的表達(dá)能力、溝通能力應(yīng)該是相當(dāng)優(yōu)秀的,同時(shí)值得欣喜的是,我們又找到了一位優(yōu)秀的同伴。
原文:http://blog.csdn.net/hfahe/article/details/6970474
【編輯推薦】