以小見大、由淺入深-談如何面試Javascript工程師

轉自:蔣宇捷的專欄  

轉載原因:不僅僅是面經,更加了解了需要學習的還有很多。

面試Javascript工程師難嗎?Javascript工程師的水平參差不齊,如何評定他們技術水平的高低?如何確定Javascript工程師適合承擔哪方面的任務?我在騰訊時的面試經驗是,通過不同緯度的結構化問題、由淺入深的進行考查。

        基礎

        如何判斷一個對象是方法?這個問題簡單有簡單的答案,複雜有複雜的答案,但可能都不是最好的答案。

        頁面加載和渲染的過程:簡單一點只考查JS、CSS、IMG的加載順序和過程,複雜一些則涉及內核間的差異以及併發處理。對於這個問題是否理解是寫出高效率代碼和結構的必須。

        冒泡與捕獲:它們的定義,它們的區別,如何阻止冒泡?基礎知識,經典題目。但是不是每個人都能完整全面的回答出這個問題,面試者需要對DOM tree有自己的理解。

        閉包:閉包是一個很好的面試題目,能夠很好的考查出不同水平的面試者。瞭解什麼是閉包、如何使用閉包、閉包的原理、閉包的真正原理,只有對JS的作用域鏈、垃圾回收機制有深入瞭解的工程師才能正確無誤的完整回答這個問題。

Scope Chain是瞭解Closure原理的關鍵

    

        工具庫

        jQuery:考查編程習慣和經驗。jQuery作爲現在使用最爲廣泛而且最簡單的JS庫,能夠很好的測出使用者的開發經驗和JS水平。一個有着真正開發經驗的工程師,應當能正確的寫出各種類型的選擇器,回答爲什麼用bind來進行事件綁定、mouseover和mouseenter的區別。如果這些考不倒他,別急,live方法的實現原理、ready方法的實現機制這兩個問題足以考查出他對DOM、瀏覽器差異的認識。

        extJS、YUI、Prototype:這些工具庫或框架都有各自的特點,可以採用像上面類似的問題從淺入深進行了解。

        實際問題

        解決實際問題考查的是你把知識融會貫通的能力、解決問題的能力、理解能力以及學習能力,這對綜合素質的考查是一種很好的方式。第一次面對一個問題,面試者是否能迅速給出思路、由過程推導出結果,能否在一些提示下一步步得到最終的完整答案,這都是很好的考察點。

        Autopager:自動翻頁功能(實現方式參考http://blog.csdn.net/hfahe/article/details/5827483)是一個由淺入深考查面試者能力的好例子。對滾動條事件的瞭解,pageHeight、windowHeight、scrollY的區別和關係是兩個關鍵點,而最後對於事件的clearTimeout優雅處理是隱藏的考查點。

        Lazyloader:許多人見過圖片延遲加載的產品,但是他們是否有了解過背後的實現原理?從功能抽象到具體實現,onresize的考慮、延遲觸發的考慮,這道題目有一定難度,和上面的例子也有一定相似之處。

        經過了前三個方面的瞭解,你應該已經對這個面試者的基本水平有了一個大致的判斷。下面的步驟可以讓你瞭解這個人能夠承擔什麼樣的工作,他的發展潛力多大。

        項目
        通過之前的項目經歷可以認識他的Team work能力、解決問題的能力,在項目中的角色和承擔的責任也可以反襯他的個人能力。

        如果他沒有做過跨瀏覽器開發,那麼這種需要長期積累的任務就不適合分派給他來解決;如果他曾經有瀏覽器插件的開發經歷,那麼瀏覽器App的工作也許能夠利用他的現有經驗;如果他用過jQuery Mobile、sencha touch或者XUI,那麼他可能適合開發移動Web App。作爲管理者高明的地方在於,把合適的人用在合適的地方。

        技術視野

        具有技術視野的人一般具有很大的發展潛力,他們未來不會僅僅只是一個普通的工程師,而有可能會成長爲技術專家或者技術管理者。

        在HTML5方面應當對新的語義標籤、Canvas、Webworker、Drag & Drop有所經驗或者瞭解;在CSS3方面,應當或多或少嘗試過Radius、Gradient、Transform。當然,如果能夠了解Mask,甚至能夠知道Flexible Box的使用方法和原理,那麼這個人對盒子模型的理解和對新知識的學習能力可以得到很好的體現。

        JS開發工程師是最容易的職位,也是最難的職位。新的技術和框架層出不窮、瀏覽器版本日新月異、越來越多API的出現,好的JS開發工程師需要隨時學習和更新許多知識,包括後臺(Webworker、Websocket、Node.js)、UI(Canvas、Transparent)、動畫(Transform、Transition、Animation)等方面。面試者是否有自我更新意識,他的技術視野多高決定了他能夠涵蓋的範圍多大,他的未來發展潛力多大。

HTML5已經戰勝移動Flash,前途無量
        如果能夠把以上所有問題清楚、順利的回答完整,我相信他的表達能力、溝通能力應該是相當優秀的,同時值得欣喜的是,我們又找到了一位優秀的同伴。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章