以小见大、由浅入深-谈如何面试Javascript工程师
??????? 面試Javascript工程師難嗎?Javascript工程師的水平參差不齊,如何評定他們技術(shù)水平的高低?如何確定Javascript工程師適合承擔哪方面的任務(wù)?我在騰訊時的面試經(jīng)驗是,通過不同緯度的結(jié)構(gòu)化問題、由淺入深的進行考查。
基礎(chǔ)
如何判斷一個對象是方法?這個問題簡單有簡單的答案,復(fù)雜有復(fù)雜的答案,但可能都不是最好的答案。
??????? 頁面加載和渲染的過程:簡單一點只考查JS、CSS、IMG的加載順序和過程,復(fù)雜一些則涉及內(nèi)核間的差異以及并發(fā)處理。對于這個問題是否理解是寫出高效率代碼和結(jié)構(gòu)的必須。
??????? 冒泡與捕獲:它們的定義,它們的區(qū)別,如何阻止冒泡?基礎(chǔ)知識,經(jīng)典題目。但是不是每個人都能完整全面的回答出這個問題,面試者需要對DOM tree有自己的理解。
??????? 閉包:閉包是一個很好的面試題目,能夠很好的考查出不同水平的面試者。了解什么是閉包、如何使用閉包、閉包的原理、閉包的真正原理,只有對JS的作用域鏈、垃圾回收機制有深入了解的工程師才能正確無誤的完整回答這個問題。
Scope Chain是了解Closure原理的關(guān)鍵
??????? 工具庫
??????? jQuery:考查編程習(xí)慣和經(jīng)驗。jQuery作為現(xiàn)在使用最為廣泛而且最簡單的JS庫,能夠很好的測出使用者的開發(fā)經(jīng)驗和JS水平。一個有著真正開發(fā)經(jīng)驗的工程師,應(yīng)當能正確的寫出各種類型的選擇器,回答為什么用bind來進行事件綁定、mouseover和mouseenter的區(qū)別。如果這些考不倒他,別急,live方法的實現(xiàn)原理、ready方法的實現(xiàn)機制這兩個問題足以考查出他對DOM、瀏覽器差異的認識。
??????? extJS、YUI、Prototype:這些工具庫或框架都有各自的特點,可以采用像上面類似的問題從淺入深進行了解。
實際問題
??????? 解決實際問題考查的是你把知識融會貫通的能力、解決問題的能力、理解能力以及學(xué)習(xí)能力,這對綜合素質(zhì)的考查是一種很好的方式。第一次面對一個問題,面試者是否能迅速給出思路、由過程推導(dǎo)出結(jié)果,能否在一些提示下一步步得到最終的完整答案,這都是很好的考察點。
??????? Autopager:自動翻頁功能(實現(xiàn)方式參考http://blog.csdn.net/hfahe/article/details/5827483)是一個由淺入深考查面試者能力的好例子。對滾動條事件的了解,pageHeight、windowHeight、scrollY的區(qū)別和關(guān)系是兩個關(guān)鍵點,而最后對于事件的clearTimeout優(yōu)雅處理是隱藏的考查點。
??????? Lazyloader:許多人見過圖片延遲加載的產(chǎn)品,但是他們是否有了解過背后的實現(xiàn)原理?從功能抽象到具體實現(xiàn),onresize的考慮、延遲觸發(fā)的考慮,這道題目有一定難度,和上面的例子也有一定相似之處。
經(jīng)過了前三個方面的了解,你應(yīng)該已經(jīng)對這個面試者的基本水平有了一個大致的判斷。下面的步驟可以讓你了解這個人能夠承擔什么樣的工作,他的發(fā)展?jié)摿Χ啻蟆?/p>
項目
??????? 通過之前的項目經(jīng)歷可以認識他的Team work能力、解決問題的能力,在項目中的角色和承擔的責任也可以反襯他的個人能力。
??????? 如果他沒有做過跨瀏覽器開發(fā),那么這種需要長期積累的任務(wù)就不適合分派給他來解決;如果他曾經(jīng)有瀏覽器插件的開發(fā)經(jīng)歷,那么瀏覽器App的工作也許能夠利用他的現(xiàn)有經(jīng)驗;如果他用過jQuery Mobile、sencha touch或者XUI,那么他可能適合開發(fā)移動Web App。作為管理者高明的地方在于,把合適的人用在合適的地方。
技術(shù)視野
??????? 具有技術(shù)視野的人一般具有很大的發(fā)展?jié)摿?#xff0c;他們未來不會僅僅只是一個普通的工程師,而有可能會成長為技術(shù)專家或者技術(shù)管理者。
??????? 在HTML5方面應(yīng)當對新的語義標簽、Canvas、Webworker、Drag & Drop有所經(jīng)驗或者了解;在CSS3方面,應(yīng)當或多或少嘗試過Radius、Gradient、Transform。當然,如果能夠了解Mask,甚至能夠知道Flexible Box的使用方法和原理,那么這個人對盒子模型的理解和對新知識的學(xué)習(xí)能力可以得到很好的體現(xiàn)。
??????? JS開發(fā)工程師是最容易的職位,也是最難的職位。新的技術(shù)和框架層出不窮、瀏覽器版本日新月異、越來越多API的出現(xiàn),好的JS開發(fā)工程師需要隨時學(xué)習(xí)和更新許多知識,包括后臺(Webworker、Websocket、Node.js)、UI(Canvas、Transparent)、動畫(Transform、Transition、Animation)等方面。面試者是否有自我更新意識,他的技術(shù)視野多高決定了他能夠涵蓋的范圍多大,他的未來發(fā)展?jié)摿Χ啻蟆?/p>
HTML5已經(jīng)戰(zhàn)勝移動Flash,前途無量
??????? 如果能夠把以上所有問題清楚、順利的回答完整,我相信他的表達能力、溝通能力應(yīng)該是相當優(yōu)秀的,同時值得欣喜的是,我們又找到了一位優(yōu)秀的同伴。
轉(zhuǎn)載于:https://blog.51cto.com/515632/716265
總結(jié)
以上是生活随笔為你收集整理的以小见大、由浅入深-谈如何面试Javascript工程师的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内market
- 下一篇: java美元兑换,(Java实现) 美元