qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          以小見大、由淺入深-談如何面試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:自動翻頁功能是一個由淺入深考查面試者能力的好例子。對滾動條事件的了解,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,前途無量

            如果能夠把以上所有問題清楚、順利的回答完整,我相信他的表達能力、溝通能力應該是相當優秀的,同時值得欣喜的是,我們又找到了一位優秀的同伴。

          posted on 2011-11-22 15:50 順其自然EVO 閱讀(195) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上高县| 织金县| 永登县| 龙门县| 拉孜县| 北流市| 乡城县| 边坝县| 砀山县| 虞城县| 平山县| 泰安市| 乌审旗| 定远县| 德安县| 城口县| 景洪市| 比如县| 渑池县| 云梦县| 宜城市| 金寨县| 通河县| 香河县| 临城县| 宁强县| 灌阳县| 松阳县| 甘孜| 洞头县| 紫云| 浑源县| 龙海市| 区。| 万年县| 洛南县| 墨脱县| 龙陵县| 枣强县| 交口县| 德化县|