原文連接地址:Nealyang/personalBlog前端
市面上有不少關於面試的文章,可是基本都是從應聘者的角度去分析問題的,從招聘官的角度去分享的着實很少。本文將從個人我的招聘經歷分享下關於前端一面的一些思考和本身的感悟。如下全部感悟皆爲筆者我的感悟,不表明任何。有不妥之處,歡迎指出vue
其實不得不說,找工做,真的七分實力,三分運氣。不一樣的面試官有不一樣的看重點,因此千萬不要爲一次的滑鐵盧而丟失信心。react
面試環節
關於面試題的答案講解,本文將不作很是詳細的分析。具體的每一個知識點,筆者後面儘可能兩週更新一篇相關知識點文章於公衆號 全棧前端精選 中,歡迎關注、討論和分享。下圖是筆者計劃後續寫的總結性技術文章。webpack
自我介紹
基本面試這是必然的開場,筆者在公司也稍微面試過很多人吧,高峯期基本每晚都要面試一兩個,聽過了各類各樣的開場介紹。這裏簡單說下筆者做爲面試官比較喜歡和不喜歡的介紹吧。git
我叫 xxx,畢業於(目前就任於) xxx,來自 xxx,技術棧 xxxx,喜歡 xxx。。。github
類如上述的自我介紹,其實不少都在簡歷上寫明瞭,甚至不少是我並不關心的。web
我只關心你能力和我職位的匹配度。因此諸如此類的簡介,筆者更是但願可以簡短。筆者做爲面試的時候,更喜歡聽到的是我作過什麼牛 x 的項目,這個項目有多難,如何攻克的,以及這個項目作完你收穫到了什麼,甚至這個項目作完,該項目對團隊、部門甚至公司而言,帶來哪方面的提升。或者能夠介紹你在校得到了什麼獎項,意味着什麼、成長了什麼。面試
如上的介紹,其實就可以讓面試官眼前一亮,由於能看到你對這個項目的思考、以及這個項目對你的歷練。算法
劃重點:咱們都知道下一個面試環節是知識點提問,因此這裏的難,能夠適當的拋出技術的難點在哪。引發面試官的興趣,從而去提問 。面試的節奏咱們要學會本身掌握,別總是被面試官牽着走vue-cli
走到這一步,基本有以下兩個分支:
- 面試官對你的這個項目(獎項)比較感興趣,會接着問下去,而後問其中技術的實現細節。(因此這裏本身千萬不要吹牛x,而後補不回來)
- 面試官不是很感興趣(極可能是面試官的技術盲區,好比我就這樣。哈哈),而後問本身準備的一些面試題。。。
這裏須要說明的,在筆者面試應聘 p7 的同窗的時候,會更喜歡到你對這個項目的思考,諸如會問一下題目:
- 現有的技術方案、行業對比
- 你以爲你作過的項目或發起過的優化裏面最有價值是的哪一個?爲何?對業務的幫助是什麼?
- 你作的東西能夠複用於其餘團隊嗎?
- 橫向與市場已知的 xxx 解決方案,大家的優點在哪?
上述的這些思考,其實目前我也達不到。可是,這不必定要求面試官必定要達到這個水準,項目的思考維度也尚未這麼的深刻。沒吃過豬肉還沒見過豬跑嘛。
面試題
如上面所說的,若是面試中應聘者說到了筆者比較感興趣的技術方向、或者技術點,那麼筆者就會直接問下去。若是說到了筆者不是很擅長的技術區域,那麼我筆者就不會追問技術細節了。
總體一面的時間大概也就半小時左右,加上先後的介紹,基本題目就四五題吧。筆者面試沒有固定的題目,一般根據應聘者的經歷而問。這裏舉例下在上面的介紹毫無亮點可言的時候(基本涼了一半),筆者喜歡問的一類題目吧。
基礎題目考覈
JavaScript 面向對象的理解和感悟
基本剛開始問題的題目都是比較簡單和考覈基礎的,好比有的時候筆者第一題通常問:** JavaScript 面向對象的理解和感悟**、題目很是的開放。給了你足夠大的舞臺表現本身。
說下這題在筆者面試別人時候的內心打分點:
- 首先,我確定是須要你告訴我,什麼是面向對象,面向對象有哪些特色,以及這些特色的解釋。
- JavaScript 如何實現這些特色,好比封裝、繼承、多態。若是關於上述三點,你可以解釋到有多少種實現方式、優缺點是什麼。以及近幾年流行的解決方案是什麼。這就是加分 ,好比對於繼承吧。類式繼承、構造函數繼承、組合繼承、原型繼承、寄生組合繼承等等,說出大概的實現思路和優缺點,再介紹下 extends 或者 mixin 的實現甚至你能夠衍生到JavaScript 的模塊化發展甚至到爲何如今 TS 如此流行。那麼能夠說到這一環節解答的就很是棒了。
- 回答完 JavaScript 的面向對象,是否是能夠今後衍生下爲何須要面向對象。以及當先對於軟件設計的高內聚、低耦合的思考?來個對此題一個提綱挈領的總結?
綜上所述,其實不難看出,越是這種基礎且開放的題目,能夠是一個陷阱,更能夠是一個機會。由於一道題真的能夠全方面的感覺到應聘的基礎是否紮實。
後面的題目的筆者基本喜歡根據應聘者的上一題的回答中甚至應聘者隨口說到的知識點,繼續追問。可是限於此文爲分享文章,這種形式很難演示。下面就繼續介紹下後續的題目。
瀏覽器輸入 url 到頁面的展示,具體發生了些什麼能夠展開說下麼
斷於上述題目知識點。第二個問題筆者一般喜歡問一些考察可深可淺的一些題目,注入:瀏覽器輸入 url 到頁面的展示,具體發生了些什麼能夠展開說下麼
基本回答都是
- 在瀏覽器地址欄輸入URL
- 瀏覽器解析URL獲取協議,主機,端口,path
- 瀏覽器組裝一個HTTP(GET)請求報文
- 瀏覽器獲取主機ip地址
- 打開一個socket與目標IP地址,端口創建TCP鏈
- TCP連接創建後發送HTTP請求
- 服務器將響應報文經過TCP鏈接發送回瀏覽器,瀏覽器接收HTTP響應
- 根據資源類型決定如何處理(假設資源爲HTML文檔)
- 解析HTML文檔,構件DOM樹,下載資源,構造CSSOM樹,執行js腳本
- 最後展示出來給用戶
基本若是應聘者只回到了上述步驟,不少關鍵步驟(前端應該瞭解的知識點)沒有說起,那麼基本涼涼一半了。這裏簡述下筆者感受,這其中你應該具體展開說明的。
- 瀏覽器發送請求,是否須要查看緩存?是否請求資源在緩存中而且新鮮,跳轉到轉碼步驟?若是資源已經緩存,是否新鮮?如何檢查?怎麼判斷、http1.0 和 http1.1 的區別是什麼,這些字段的優先級是怎麼樣子的。
- 瀏覽器解析 url 獲取協議,過程是什麼?DNS 遞歸查詢能否介紹下?
- 創建 TCP 連接的三次握手是否能夠介紹下
- 服務器接受到請求,是否須要檢查緩存?檢查什麼字段?什麼樣的緩存會須要服務端檢查?
- 服務端發送 TCP 連接,瀏覽器接受 http 相應後,根據什麼來決定是否須要關閉鏈接?關閉 TCP 的四次揮手是什麼?
- 瀏覽器是否須要檢查狀態碼,有哪些狀態碼?(筆者高頻考碼:30四、200)
- 在解析的時候,具體如何解析、是否有順序。(重繪重排高頻考題就在這裏)
- 總結如上、咱們是否能夠給出一些基本的網站優化手段???
上述題目的每一步展開,都將會是下一個面試題。
具體的知識點介紹,不是此文主要講解內容,這裏就很少言了。
解決問題能力考查
其實上面兩(大)題後,基本基礎、網絡、瀏覽器、js 執行、優化都已經考覈到。對於 p6 的一個 job model 還有一項是對於問題的解決能力。
其實這裏通常都是出一道問題,而後你給出一些你的實現思路,這裏就不作距離了,由於太開放!
好比:
- 諸如我如今須要監聽那種頻繁發生的事件,你有那些優化麼
- 埋點的實現思路
- 非遞歸的二叉樹遍歷
- 文件上傳斷點、續傳
- 設計模式的應用場景考覈
等等
切記:這類題目,必定不要說不會、不知道。哪怕真的不知道,也要給出大概的解答思路和實現思路。哪怕不對!必定要講出本身的思考過程。
進階題目考覈
在面試 p六、p7 的時候,通常後面還會跟一道進階題目(根據應聘者具體狀況而定)。
沒有開放性的答案其實,因此這裏筆者就不細述有哪些思考和想聽到的點了。只要你說的對就行其實
- VUE 雙向綁定原理
- VUE/React diff 算法的大概思路
- 現有的狀態管理的實現
- webpack中 loader、plugin 的實現思路
- 簡易版 webpack 的實現
- KOA、Express 中間件的實現
- React Filter 的理解和原理
- 前端構建工具的、vue-cli、create-react-app 的原理和實現思路
- 等等。。。。。
結束環節
半小時,基本只能問四五題這樣,說實話,題目的考覈大概能佔參考度的 90%,還有 10%可能就是言語和感受了。那麼對於結束的時候,說下很差的感受:
最後,你有什麼要問個人嘛
我想諮詢下,我能不能經過此次面試,我對工資無所謂,我願意學習,特別但願可以進入 xxx 跟大牛一塊兒學習,歷練。
講真,這類的話聽過不少次了。若是在看的你也命中了這個。我想說,其實公司招咱們進來,是搬磚的,不是給咱們學習的。學習是你本身的須要,不是爲了公司學的。說這類的話,太給本身降價了!
說說筆者應聘的時候,通常結束的你有什麼要問個人嘛
的回答
- 我比較在乎本身的技術方向和職業發展,可以簡單介紹下若是我面試上貴公司職位,我之後的工做內容和在團隊的價值麼?
- 想了解下公司對於前端的重視程度以及在大前端時代,團隊對於技術的思考
大概就是筆者會問,我這個職位是幹嗎的?在公司有麼有價值?跟我本身的職業、技術規劃是否吻合?
這樣!面試官會以爲,恩~這小子有思考~~~
再者,若是面試官給你介紹的很是很是詳細,那麼其實從側面就說明,他對你很滿意了!已經到了面試官開始極力展示本身的時候了~~
就好比:醫生,我老婆懷的是男孩仍是女孩啊? 不能問!!!這是政策
可是:醫生,我這孩子出生我給他起名字叫王剛蛋你看合適不? _恩。。。不太合適_ 基本可能懷的是女孩了
最後
其實我想說,面試,不只僅看運氣和實力,其實有的時候也是一場心理的博弈。
你的每一次回答均可能引出下一道面試題。有意識無心識的留點回答漏斗也是一種帶節奏的方式。
若是面試官提出一個問題,你都抓不住他的考點,那基本要涼~~
其次,我想說,上面我說的開放性基礎題的回答,你們千萬不要誤解爲回答的多就是好。千萬不要一個題目回答了半個小時,不必!點到爲止,證實本身考慮到、有這個知識儲備便可,不要回答的讓面試官都煩了。
而後,對於如何拿到面試的敲門磚:簡歷。沒有那麼多可說,也不是沒得說。
簡而言之:面試官篩選簡歷是很是枯燥的一件事情。基本是一眼帶過,不會在簡歷上撇超過 40s。
因此:
- 簡歷要整潔,簡潔、簡潔。真的別密密麻麻都是字,沒那麼多耐心看的。
- 重點突出,能夠加粗或者顏色標識。好比:本身開源類 React 框架
- 簡歷是一份介紹更是一個成績單,既然是成績單,成績必定要吐出:開源項目 15k star 、 推進公司技術建設 等等
- 不得不說,名校和大廠的背景。很吸睛。
最後,秋招開始了,祝福全部找工做的同窗,都能順順利利拿到 offer!加油~
學習交流
關注公衆號: 【全棧前端精選】 每日獲取好文推薦。還能夠入羣,一塊兒學習交流呀~~