? ? ? 面試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](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,前途無量
? ? ? 如果能夠把以上所有問題清楚、順利的回答完整,我相信他的表達能力、溝通能力應該是相當優秀的,同時值得欣喜的是,我們又找到了一位優秀的同伴。
- 前言
- AutoPager的簡單實現
- 利用CSS3特性巧妙實現漂亮的DIV箭頭
- IE9在Win7下任務欄新特性簡介
- 瀏覽器九宮格的簡單實現
- Raphael js庫簡介
- 使用CSS3構建Ajax加載動畫
- 用CSS3創建動畫價格表
- 用CSS3實現瀏覽器的縮放功能
- 用純CSS3實現QQ LOGO
- 用CSS3創建旋轉載入器
- 使用Javascript開發移動應用程序
- 用HTML5創建超酷圖像灰度漸變效果
- 使用CSS3創建文字顏色漸變(CSS3 Text Gradient)
- 僅用CSS創建立體旋轉幻燈片
- 如何創建跨瀏覽器的HTML5表單
- 用CSS3實現動畫進度條
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas動畫實例
- 談HTML5和CSS3的國際化支持
- 實現跨瀏覽器的HTML5占位符
- 前端開發必備工具:WhatFont Bookmarklet-方便的查詢網頁上的字體
- 使用HTML5和CSS3來創建幻燈片
- HTML5之美
- 如何使用HTML5創建在線精美簡歷
- 以小見大、由淺入深-談如何面試Javascript工程師
- 快速入門:HTML5強大的Details元素
- 用CSS3實現圖像風格
- HTML5視頻字幕與WebVTT
- 用純CSS3實現Path華麗動畫
- 用3個步驟實現響應式網頁設計
- 遇見CSS3濾鏡
- 關于CSS3濾鏡的碎念
- 用純CSS3繪制萌系漫畫人物動態頭像
- CSS3新的鼠標樣式介紹
- 用HTML5獻上愛的3D玫瑰
- 對HTML5 Device API相關規范的解惑
- 如何使用HTML5實現拍照上傳應用
- 2012第一季度國外HTML5移動開發趨勢
- HTML5新特性:范圍樣式
- 百度開發者大會-《用HTML5新特性開發移動App》PPT分享
- Chrome 19對于HTML5最新支持的動態:電池狀態API,全屏API,震動API,語音API
- 遇見Javascript類型數組(Typed Array)
- 用HTML5 Audio API開發游戲音樂
- 用HTML5實現人臉識別
- 用Javascript實現人臉美容
- Chrome 20對于HTML5最新支持的動態:顏色輸入,網絡信息API,CSS著色器
- 用HTML5實現手機搖一搖的功能
- 用HTML5實現iPad應用無限平滑滾動
- 用非響應式設計構建跨端Web App
- 了解SVG
- HTML5圖像適配介紹
- HTML5安全:內容安全策略(CSP)簡介
- HTML5安全:CORS(跨域資源共享)簡介
- 用CSS3 Region和3D變換實現書籍翻頁效果
- 談談移動App的思維誤區
- Chrome新特性:文件夾拖拽支持
- 《關注HTML5安全》
- HTML5安全風險詳析之一:CORS攻擊
- HTML5安全風險詳析之二:Web Storage攻擊
- HTML5圖像適配最新進展:響應式圖片規范草案
- HTML5移動Web App相關標準狀態及路線圖
- HTML5安全風險詳析之三:WebSQL攻擊
- Chrome引入WebRTC支持視頻聊天App
- HTML5安全風險詳析之四:Web Worker攻擊
- HTML5安全風險詳析之五:劫持攻擊
- HTML5安全風險詳析之六:API攻擊
- HTML5安全攻防詳析之七:新標簽攻擊
- 在iOS Safari中播放離線音頻
- 使用WebRTC實現遠程屏幕共享
- Firefox、Android、iOS遇見WebRTC
- HTML5光線傳感器簡介
- HTML5安全攻防詳析之八:Web Socket攻擊
- HTML5安全攻防詳析之完結篇:HTML5對安全的改進
- 激動人心!在網頁上通過語音輸入文字 - HTML5 Web Speech API介紹
- Web滾動性能優化實戰
- 用CSS3設計響應式導航菜單
- 用HTML5構建高性能視差網站
- 漫談@supports與CSS3條件規則
- HTML5下載屬性簡介
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(一)
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(二)
- 趨勢:Chrome為打包應用提供強大新特性
- 從HTML5移動應用現狀談發展趨勢
- 基于HTML5的Web跨設備超聲波通信方案