如何判斷前端開發能力?


一般來說會問如下幾方面的問題:

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

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

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

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

      考查要點:
      • 對Web標准的理解
      • 瀏覽器差異
      • CSS基本功:布局、盒模型、選擇器優先級及使用等
      • Javascript 基礎、JS面向對象實現原理、閉包機制、作用域
      通常可以做一些小練習來判斷TA的水平,js 雖然很靈活,但是具體的實現方式能體現出一個人的全局觀,隨着代碼規模的增長,復雜度增加,如何合理划分模塊實現功能和接口的能力比較重要。這里有一份前不久我出的試題,難度不算大,另存為html
       
       
      自己總結的面試題,感興趣的看下。
      HTML+CSS
      1、盒子模型,塊級元素和行內元素特性與區別。
      2、行內塊的使用,兼容性解決。
      3、清除浮動的方式以及各自的優劣。
      4、文檔流的概念、定位的理解以及z-index計算規則&瀏覽器差異性。
      5、CSS選擇器以及優先級計算。
      6、常用的CSS hack。
      7、遇到的兼容性問題與解決方法。
      8、垂直水平居中的實現方式。
      9、常用布局的實現(兩列布局、三列適應布局,兩列等高適應布局等)。
      Javascript
      1、犀牛書封面的犀牛屬於神馬品種?(蛋逼活躍氣氛用。。。)
      2、常用的瀏覽器內核。
      3、常用的DOM操作,新建、添加、刪除、移動、查找等。
      4、String於Array常用方法。
      5、設備與平台監測。
      6、DOM的默認事件、事件模型、事件委托、阻止默認事件、冒泡事件的方式等。
      7、jQuery的bind、live、on、delegate的區別(考察點與上一條重疊,切入點不同)。
      8、JS變量提升、匿名函數、原型繼承、作用域、閉包機制等。
      9、對HTTP協議的理解。
      10、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. 輔助問題幾乎是我個人必備的問題:為什么做前端,學習前端過程。
      1、跟什么人在一起工作
      2、過去項目的挑戰
      3、自學的途徑

      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 擴展(以擴展的形式添加一些為提高用戶體驗的附加功能)開發經驗者;




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM