5年前端技術官告訴你初級前端該如何準備技術面試
面試分為三部分
-
技術面試:問技術問題。
-
負責人面試:考察綜合能力。比如:專案把控能力、專案深度、專案架構、業務等。
-
hr 面試:側重於性格、溝通、潛力等。
每輪面試在一小時左右。
每輪面試的知識點
一面:
主要考察基礎知識。
-
頁面佈局
-
CSS盒模型、DOM事件
-
HTTP 協議、原型鏈
-
面向物件、通訊
-
前端安全、演算法
二面:
-
渲染機制
-
JS 執行機制
-
頁面效能
-
錯誤監控
三面:
不再關注技術層面。
-
業務能力
-
團隊協作能力
終面:
-
職業競爭力
-
職業規劃
面試成功需要:技術過關、面試技巧等。
校招和社招各自看中的層面
校招:
-
知識:40%
-
能力:59%
-
經驗:1%
社招:
-
知識:30%。比如協議、業務的認知程度。
-
能力:50%。比如架構、業務的抽象能力、專案的把控能力。
-
經驗:20%。專案的體現。
以上僅供參考。
面試準備
面試準備包括以下四個部分:
-
職位描述(JD)的分析
-
業務分析
-
技術棧準備
-
自我介紹
每個公司又有一套成熟的技術棧。比如在構建工具上,百度用 fis3、美團用 Gulp。
你要面哪個公司,要先看看對方要求的技術棧。
上面四個部分,我們接下來詳細介紹。
一、(JD)的分析
介紹
概念:
-
職位描述:注重的是工作職責。
-
任職要求:要求的是工作能力。通常描述得很細緻。
PS:前端的知識龐大,不可能所有的內容都準備好,但是要向“任職要求”靠攏。
分析職位描述(JD)的目的是:
-
快速識別出這個崗位是否是自己喜歡的、想要的。
-
目前的技能是否能勝任崗位的要求。短期內的準備能否勝任。
舉例:京東 web 前端的職位描述
如下:
職位描述:
(1)面試時,會同時考慮到PC 端和移動端
兩個部分。
(2)App H5開發
指的是兩層意思:
-
Hybrid 技術棧。
-
純 H5 開發。和 native 開發沒有關係,比如活動、專題。
(3)除錯資料介面
:要學習一下怎麼模擬資料。
(4)前端元件庫的建立
:要求較高但非常重要。體現在:
-
基本功要紮實,原生 js、css的理解要到位。
-
之前有沒有前端元件庫相關的專案經驗
-
是否通讀過其他的 UI 元件庫。
(5)優化與重構
:難度比第四條更大。
PS:前三條是基本知識,第四條、第五條屬於進階。
任職要求:
(1)3年以上工作經驗
:不要太較真工作年限。精通 H5 特性
:說明公司很看重移動端。瞭解H5最新規範
:貴公司希望我對新技術是有追求的,比如ES6
等。
(2)要求我們對面向物件
部分有足夠的瞭解。元件化的程式設計也離不開面向物件。
(3)體現了幾點:
-
熟悉 Web 標準
:熟悉最新的標準即可。 -
表現與資料分離
:MVC框架。 -
語義化
:這個詞千萬不要忽視。不是什麼都用 div。 -
實際經驗
:利用框架開發的過程中,遇到過哪些問題?沒有實際經驗的話,也要提前準備幾個問題。
(4)以下幾點:
前端架構分析與設計...
:說明此崗位並不面對初級崗位。因為工作一至兩年的人,大部分都是做業務開發,缺少系統的架構能力。
我們要準備一個專案的架構(比如公司現有的專案)重新梳理,包含:目錄結構的設計、複用性設計、模組化設計、自動化測試、上線流是什麼。
-
易讀、易維護的程式碼
:面試過程中一定會讓你寫程式碼,來體現。要求;每個函式的功能要單一、能抽象儘量抽象。符合這兩個原則,基本就滿足了“易讀、易維護”。 -
高質量、高效率的程式碼
,短時間內不好準備。
(5)使用者可用性、使用者體驗、使用者研究
:考察的不是技術,而是候選人對於產品體驗的理解。不僅僅只是完成功能而已。
(6)強烈興趣
等,是公司企業文化的一種要求。多去GitHub上看看別人的專案裡用的什麼新技術、多看部落格。短時間內無法準備。
(7)瞭解Sass
和Less
:這是基本技能。
(8)熟悉web構建工具
:新手推薦學習 Glup,而不是 grunt。當然,你要知道Glup 和 grunt 的區別。
PS:瞭解、熟悉、精通,是有區別的。
(9)暫時可以忽略。如果 職位描述裡沒有要求Node.js
,而你只會一點點Node.js
,那不建議你面試的時候把Node.js
體現出來。否則是給自己挖坑。
二、業務分析
CSS3 動畫是重點準備的內容。
jQuery 要準備事件委託、選擇器等。
ES6語法:import、export等。
通過簡單分析原始碼,我們初步得知網站的以下幾點:
-
jQuery
-
vue 框架
-
ES6
-
webpack 打包工具
三、前端技術棧準備
上圖中,左側是前端技術核心,右側是前端工程化。
左側:(前端技術核心)
-
jQuery:要注意看原始碼。看原始碼時,要看這幾個:核心架構、事件委託是什麼、外掛機制、相容性。
-
三大框架:都是mvvm框架,準備一至兩個即可,或者精心準備一個。面試時會問得很細。比如面試官會經常問Vue、React的原始碼。建議找網上的原始碼分析的文章。
-
Node.js:伺服器端的執行環境。如果沒有相關專案經歷,就儘量不要提。
-
JavaScript 基礎:框架有時候都很虛;熟練掌握 JavaScript 基礎,才是行走江湖、馳騁千里的關鍵。
右側:(前端工程化)
-
npm、yarn:包管理工具。npm的常見命令、npm scripts 怎麼用的。
-
webpack:模組打包。
-
gulp、grunt:構建工具。
-
Sass、less:CSS 前處理器。
-
Babel:ES6轉ES5
四、自我介紹
面試問的問題,很大層次上,取決你的簡歷和自我介紹。
簡歷
簡歷中最重要的四個資訊:
-
基本資訊:姓名、年齡、手機、郵箱、籍貫。
-
學歷:從大到小寫。碩士 -> 本科。
-
工作經歷:時間、公司、崗位、職責、技術棧、業績。業績是大多數人所忽略的。
-
開源專案、Github、說明。
自我評價可以不寫。
專案的業績上,要包括:技術收益和業績收益。
自我陳述
1、把握面試的溝通方向。
如果陳述中談到專案,面試官可能會問:
-
負責了什麼專案,專案是做什麼的
-
和前端的結合點是?你的角色是?專案中承擔了什麼責任?
-
你在專案中的成績?
如果你說自己是專案負責人
,會被問到:
-
該專案怎麼分配?有幾個人參與?
-
作為負責人,你的角色是什麼?是專案管理還是技術管理?
-
遇到技術難點,如何解決?
提問題
如果在深入問題時,碰到不會的,不要說“我不知道”。建議回答:
-
這方面我沒有經驗,能不能指點一下?
-
有什麼建議或者參考資料嗎?我想把這個東西弄懂。
最後,給剛畢業的大學生一點建議
剛畢業找工作並不是全看技術
在剛畢業的時候我會認為找工作是隻看技術的,畢竟我們是技術崗位。
但是現在自身的感覺包括也和其他小夥伴聊過之後發現技術有的時候佔比也沒有想象那麼高。
因為其實我們畢業之後 1 -2 年內並不是特別能拉開差距,大家的水平相差都不是特別大。
這個時候可能一些其他的品質更重要,比如你的溝通能力、你的性格、是否踏實。
同時,找工作這個事情,運氣和緣分也是很重要的,比如當時的崗位是否是急缺崗位,如果是新增的部門或者剛好有人離職需要補位,這些特殊情況下,可能要求會稍微降低些(絕對不會降低太多)。
所以最好是找團隊人員內推,這樣對團隊的情況會更加了解。
但是個人覺得,3 年之後技術水平的差距就會越來越大了,並且想要縮短差距也會越來越難。
剛畢業儘量去大公司
其實就和你上大學選擇名校還是一般學校,有些人說不想當大公司的螺絲釘的時候可以先問下自己能不能夠進入大公司,不要還沒有進入就開始酸。
有能力去而選擇不去和去不了是兩個概念。
從自身以及周圍人的經驗而談,大公司你能學到的東西從各方面都是比小公司強一點的(這裡說的小公司不代表某些小而精的公司)。
個人經驗而言,大公司並不是每個人都是螺絲釘,做重複的勞動,因為你所對接的部門有很多,你需要和各種各樣的前端、後端、產品、設計、QA 接觸,每個人的習慣都不盡相同,也會遇到跨部門合作,不同部門的技術棧可能會不一樣,所以,你所接觸的東西是多元化的;
相反,小公司所接觸的前端、後端、設計和 QA 基本都比較固定,基本上也不會有跨部門合作的需求,並且技術棧相對而言比較固定,使用了一套技術棧基本也不會換,所以你的技術提升視野可能會稍微窄一點。
並且大公司的業務複雜程度和使用者數量也是小公司所不能提供的。
說句實在話,簡歷中有知名網際網路公司的工作經驗是很加分的,基本都能有個面試資格,因為從某種程度降低了成本,因為既然能夠去知名網際網路公司,說明肯定是有優勢的。
不要只會 API,要了解其原理
我們老大經常給我們說過的一句話是:“不要只會一些 API 的東西”,現在前端的一個現象是,很多人使用了一些 API,就覺得掌握了某些知識。
要注重一些底層知識,一些原理,這才是長遠發展的必備技能。
比如在電面的時候問:“一句話概述下什麼是 promise”,很多人都回答 promise 的使用方法。
找工作是雙向選擇的過程,一個好的團隊很重要
找工作真的是雙向選擇的過程,不僅僅是公司選擇你,也是你選擇公司的過程,有能力的話最好找一個好的團隊,做的業務是自己喜歡的,最起碼不能太反感不是。
其實從面試官你基本也可以判斷出該團隊的水平,個人的一點看法是,如果你本身還處於成長階段,如果面試時候問的問題你都可以順利的回答出,那麼該工作你就要慎重考慮下,可能成長空間會小一點。
減少跳槽的頻率
關於跳槽頻率,這個不管是技術 leader 和 hr 都是考慮的一個問題。
因為前幾年,個人感覺漲薪的最便捷途徑就是跳槽,漲薪幅度會比較高,在一家公司等加薪比較慢。
但是如果你跳槽過於頻繁其實是不利的,個人認為,一年跳槽一次這個頻率就有些高了。
京東也是將這點明確有要求的,一票否決制度,五二原則(五年內之內最多在兩家公司)
關於學歷
現在很多公司的門檻都是本科相關專業畢業,並且以後的要求肯定會越來越高。
每個公司要求不一樣。
面試前一定要多刷題
一定要多刷題,刷題,刷題,重要的事情說三遍。多注重底層原理和概念的學習,瞭解更多的底層知識,更多的原理知識,都是提高你解決問題的能力。
做程式設計師,做前端工程師,真的是一個學習就會有回報的職業,不看出身高低,不看學歷強弱,只要你的技術達到應有的水準,就能夠得到對應的回報。
學習從來沒有一蹴而就,都是持之以恆的,正所謂活到老學到老,真正懂得學習的人,才不會被這個時代的洪流所淘汰。