一般來說會問如下幾方面的問題:
- 做過最滿意的項目是什么?
- 項目背景
- 為什么要做這件事情?
- 最終達到什么效果?
- 你處於什么樣的角色,起到了什么方面的作用?
- 在項目中遇到什么技術問題?具體是如何解決的?
- 如果再做這個項目,你會在哪些方面進行改善?
技術一面主要判斷對基礎知識的掌握
- 描述一個你遇到過的技術問題,你是如何解決的?
- 這個問題很常見,有沒有遇到過很不常見的問題?比如在網上根本搜不到解決方法的?
- 是否有設計過通用的組件?
- 請設計一個 Dialog(彈出層) / Suggestion(自動完成) / Slider(圖片輪播) 等組件
- 你會提供什么接口?
- 調用過程是怎樣的?可能會遇到什么細節問題?
-
技術二面主要判斷技術深度及廣度
- 你最擅長的技術是什么?
- 你覺得你在這個技術上的水平到什么程度了?你覺得最高級別應該是怎樣的?
- 瀏覽器及性能
- 一個頁面從輸入 URL 到頁面加載完的過程中都發生了什么事情?越詳細越好
- (這個問既考察技術深度又考察技術廣度,其實要答好是相當難的,注意越詳細越好)
- 談一下你所知道的頁面性能優化方法?
- 這些優化方法背后的原理是什么?
- 除了這些常規的,你還了解什么最新的方法么?
- 如何分析頁面性能?
- 一個頁面從輸入 URL 到頁面加載完的過程中都發生了什么事情?越詳細越好
- 其它
- 除了前端以外還了解什么其它技術么?
- 對計算機基礎的了解情況,比如常見數據結構、編譯原理等
- 最近在學什么?接下來半年你打算學習什么?
- 做什么方面的事情最讓你有成就感?需求設計?規划?具體開發?
- 后續想做什么?3 年后你希望自己是什么水平?
- 在之前做過的項目中,有沒有什么功能或改進點是由你提出來的?
- 是否有參與和改進其它開源項目
考查要點:
- 對Web標准的理解
- 瀏覽器差異
- CSS基本功:布局、盒模型、選擇器優先級及使用等
- Javascript 基礎、JS面向對象實現原理、閉包機制、作用域
自己總結的面試題,感興趣的看下。
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 擴展(以擴展的形式添加一些為提高用戶體驗的附加功能)開發經驗者;
- 你最擅長的技術是什么?