如何判斷前端開發能力?

通常來講會問以下幾方面的問題:html

  • 作過最滿意的項目是什麼?
  • 項目背景
    • 爲何要作這件事情?
    • 最終達到什麼效果?
  • 你處於什麼樣的角色,起到了什麼方面的做用?
  • 在項目中遇到什麼技術問題?具體是如何解決的?
  • 若是再作這個項目,你會在哪些方面進行改善?

技術一面主要判斷對基礎知識的掌握前端

  • 描述一個你遇到過的技術問題,你是如何解決的?
    • 這個問題很常見,有沒有遇到過很不常見的問題?好比在網上根本搜不到解決方法的?
  • 是否有設計過通用的組件?
    • 請設計一個 Dialog(彈出層) / Suggestion(自動完成) / Slider(圖片輪播) 等組件
    • 你會提供什麼接口?
    • 調用過程是怎樣的?可能會遇到什麼細節問題?
    • 技術二面主要判斷技術深度及廣度java

      • 你最擅長的技術是什麼?
        • 你以爲你在這個技術上的水平到什麼程度了?你以爲最高級別應該是怎樣的?
      • 瀏覽器及性能
        • 一個頁面從輸入 URL 到頁面加載完的過程當中都發生了什麼事情?越詳細越好
          • (這個問既考察技術深度又考察技術廣度,其實要答好是至關難的,注意越詳細越好)
        • 談一下你所知道的頁面性能優化方法?
          • 這些優化方法背後的原理是什麼?
          • 除了這些常規的,你還了解什麼最新的方法麼?
        • 如何分析頁面性能?
      • 其它
        • 除了前端之外還了解什麼其它技術麼?
        • 對計算機基礎的瞭解狀況,好比常見數據結構、編譯原理等
      興趣相關
      • 最近在學什麼?接下來半年你打算學習什麼?
      • 作什麼方面的事情最讓你有成就感?需求設計?規劃?具體開發?
      • 後續想作什麼?3 年後你但願本身是什麼水平?
      主動性相關
      • 在以前作過的項目中,有沒有什麼功能或改進點是由你提出來的?
      • 是否有參與和改進其它開源項目
      還有些與話題無關我就不轉了。

      考查要點:
      • 對Web標準的理解
      • 瀏覽器差別
      • CSS基本功:佈局、盒模型、選擇器優先級及使用等
      • Javascript 基礎、JS面向對象實現原理、閉包機制、做用域
      一般能夠作一些小練習來判斷TA的水平,js 雖然很靈活,可是具體的實現方式能體現出一我的的全局觀,隨着代碼規模的增加,複雜度增長,如何合理劃分模塊實現功能和接口的能力比較重要。這裏有一份前不久我出的試題,難度不算大,另存爲html
       
       
      本身總結的面試題,感興趣的看下。
      HTML+CSS
      一、盒子模型,塊級元素和行內元素特性與區別。
      二、行內塊的使用,兼容性解決。
      三、清除浮動的方式以及各自的優劣。
      四、文檔流的概念、定位的理解以及z-index計算規則&瀏覽器差別性。
      五、CSS選擇器以及優先級計算。
      六、經常使用的CSS hack。
      七、遇到的兼容性問題與解決方法。
      八、垂直水平居中的實現方式。
      九、經常使用佈局的實現(兩列布局、三列適應佈局,兩列等高適應佈局等)。
      Javascript
      一、犀牛書封面的犀牛屬於神馬品種?(蛋逼活躍氣氛用。。。)
      二、經常使用的瀏覽器內核。
      三、經常使用的DOM操做,新建、添加、刪除、移動、查找等。
      四、String於Array經常使用方法。
      五、設備與平臺監測。
      六、DOM的默認事件、事件模型、事件委託、阻止默認事件、冒泡事件的方式等。
      七、jQuery的bind、live、on、delegate的區別(考察點與上一條重疊,切入點不一樣)。
      八、JS變量提高、匿名函數、原型繼承、做用域、閉包機制等。
      九、對HTTP協議的理解。
      十、Ajax的經常使用操做,JS跨域的實現原理。
      HTML:
      • 語義標籤
      • 語義化

      CSS:
      • 動態居中
      • 動畫
      • Bootstrap 樣式類
      • Preprocessor
      • 兼容性 Hack與特徵檢測
      • CSS3屬性與性能

      JS:
      • Name hoisting
      • Prototype
      • Closure
      • Main loop
      • Promise
      • Delegation
      • Cross domain

      Mobile:
      • 漸進加強
      • 移動端交互
      • 兼容性問題
      • Debug工具 方法

      性能:
      • JS
      • Cache control
      • 性能測試

      ---------

      開發者 - 行業視野

      Libs and Frameworks

      NodeJS
      開發工具與效率
      Workflow - Grunt and all

      Github
      Sites Projects Blogs

      ---------

      工程師 - 產品與團隊

      Architecture
      UT E2E

      響應式設計
      系統化設計
      需求評審

      代碼管理 - Git SVN 運維
      項目管理 - 項目評估 任務分解 追蹤方法
      團隊管理 - 標準 流程 文檔建設

      技術影響力
      職業發展規劃

      ----------------------

      面試者提問

      對面試的評價
      理解誤差最大的地方
      擅長卻沒有發揮出來的地方

      指望薪資
      指望職責


      1. 主體是看簡歷發揮,對方寫什麼就問什麼爲主:框架、庫、瀏覽器工做原理、NLP、算法、HTTP... 
      2. 輔助問題幾乎是我我的必備的問題:爲何作前端,學習前端過程。
      一、跟什麼人在一塊兒工做
      二、過去項目的挑戰
      三、自學的途徑

      3個問題基本上就知道這我的的能力水平和瓶頸了,人的不少侷限都是被環境限制的,經過閒聊中夾雜的不經意的問題,候選人的畫像就已經很鮮明瞭。處於當前的環境多長時間,有沒有突破環境限制的行動,就能評估出潛力和眼界。

      什麼瀏覽器兼容、做用域、框架等等的東西不會,不記得均可以學,要不了多長時間,關鍵仍是有沒有潛力、有沒有好的習慣。


      我我的認爲比較重要的有如下幾點:
      • 熱情。前端涉及的知識比較複雜,職業定位很是模糊,須要有足夠的熱情去完善各個瀏覽器的兼容性,去推進與RD、PM、UI的協做,最終產出漂亮的產品。
      • 基礎。這方面前面已經講的很是好了,我補充一點:咱們會更關注面試者自己學習的方法和深度。例如對於資深面試者會問一些諸如Execution Context、Block Formatting Context之類的問題。理想中的面試者應該具備知其因此然的探索精神。
      • 潛力。咱們但願可以找到頗有潛力的工程師,例若有很好的計算機基礎、ACMer、Unix愛好者、Design愛好者等等。


      若是是我,我會問「js如何實現多重繼承」,而後再由這個問題聯繫到原型鏈,new機制,函數,做用域鏈,this,閉包,這些問題能夠看出應聘者是否是真正會js仍是披着java/c++外衣覺得會js。再高級的我會問js設計模式,mvc模式。
      前端工程師,主要工做內容與用戶界面的表現緊密聯繫,但均爲在圖形上或以其爲基礎經過某種實現方式去正確、準確呈現什麼。之因此以「主要工做」修飾,是由於 node.js / io.js 的出現與發展導致前端被引入服務器端性質的工做內容。

      在能力方面:
      • 對 HTML / CSS / JavaScript 具備專家級別的知識;
      • 有較熟練使用 AngularJS / Ember.js / jQuery 或者其它類庫的經驗;
      • 較熟悉第三方組件(插件)生態環境及具體案例;
      • 有較熟練使用 Jade / Swig / Handlebars / Mustache 或者其它模板引擎的經驗;
      • 有較熟練使用 SASS 或者其它 CSS 預處理器的經驗;
      • 有較熟練使用 CoffeeScript 的經驗;
      • 對 CSS / JavaScript 設計模式有很好的認識及應用;
      • 對經常使用數據結構和算法熟悉;
      • 有使用 GruntJS / GulpJS 任務運行器的經驗;
      • 有使用 Yeoman 生成器的經驗;
      • 有諸如 Bower / Volo / JSPM 等前端靜態資源包管理器使用經驗;
      • 熟悉本地及遠程(甄姬)調試操做;
      • 有 Git 的使用經驗;

      意識驅動行爲,因此:
      • 有本身的技術信仰;
      • 有渴望嘗試新技術的強烈願景及較強的主觀學習、客觀探索能力;
      • 擁有使人難以置信的關注細節的精神;
      • 在諸如 Github、Sitepoint 等這樣的技術社區活動;

      由於你不是一我的工做,而且要對一個產品付之責任心,因此:
      • 有良好的編程風格和文檔習慣;
      • 對模塊化開發及相關標準有很好的認識及應用;
      • 有對網頁標準和標準制定機構重要性較深入的理解;
      • 建站過程當中考慮其它諸如UI、安全性、高性能、SEO、可維護性以及技術因素等方面;
      • 有跨瀏覽器(主:兼容性)、跨設備(主:響應式)開發並測試頁面的經驗;
      • 對網格在WEB設計中的應用有深入的理解,以及具有系統(有組織)地實現出來的能力;
      • 可以獨立工做並作出正確的抉擇;
      • 可以適應不斷變化的更新 / 擴展 / 改版需求,同時處理多個項目;
      • 可以提供準確的定時估計工做(適應準時交付管理法則);
      • 有與服務器端程序開發人員協同工做的經驗;
      • 可以(熟練)閱讀英文資料;
      • 有必定的工做壓力承受能力;

      而後再爲本身從長遠打算及加分:
      • 有 NodeJS Web / 服務器 / 客戶端應用程序設計、開發、優化經驗;
      • 有 MangoDB / Redis 等No SQL 數據庫設計、實現、維護經驗;
      • 有使用 PhoneGap / Apache Cordova 進行移動應用開發經驗;
      • 有瀏覽器 Addon 擴展(以擴展的形式添加一些爲提升用戶體驗的附加功能)開發經驗者;
相關文章
相關標籤/搜索