21 屆前端暑期實習 BAT 面試之路,已上岸阿里(萬字長文)| 掘金技術徵文

筆者就讀於杭州師範大學(世界上最好的大學),感謝在這裏的三年,遇到的同窗和導師!前端

筆者在大二開始自學 Web 開發,大二上學期作的 Java 後端,大二下學期轉前端,和導師作了兩個商業項目。vue

從今年二月初準備簡歷,開始複習整理知識點,投遞了字節騰訊阿里百度,經歷大大小小的面試,最終到 4 月 17 日 接到阿里盒馬意向書已經兩個半月了,期間也經歷過 burnout 的階段,不過結果仍是好的,如今但願經過這一篇文章,將大學裏最重要的這兩個月總結一下,也給你們作一些原創的分享。node

截止至發稿,目前react

  • 字節抖音掛
  • 騰訊 PCG 口頭 offer,未接
  • 阿里盒馬已上岸
  • 百度車聯網,OC未接

面經

我會按照首次(一面)開始的順序來寫,騰訊 PCG,字節抖音,阿里投遞的 BU 比較多,最後是百度統招(部門未知)。linux

爲何是這個順序?由於個人春招,準備和投簡歷是同時開始的,也就是說我剛開始是比較薄弱的,知識點沒複習,面試經驗不夠,這些都是一邊面試一邊總結出來的。webpack

螞蟻金服兩輪(直通終面)

一面(電話 1h10min)

二月中旬面試,當時仍是個小菜鳥,面試官很 nice,一直鼓勵我,說個人項目經歷豐富,願意多挖掘我一點。我當時怕是對「挖掘」二字有什麼誤解,居然還開開心心說了個「好噠」。後面對於當時仍是菜鳥的我簡直就是煉獄難度。nginx

  • 自我介紹
  • 輸入 URL 發生了什麼?不要說網上的模版,用你本身的理解來講說看。
  • 深刻說說 DNS?(兩種查找、回源、能夠作負載均衡、緩存優化、和 CDN 的關係)
  • React 生命週期?
  • 說說你遇到過的 React 報錯,說說報錯的緣由?如何解決?(定時器忘記卸載,組件循環等等…)
  • React router 的原理了解嗎?
  • Mobx 的原理了解嗎?原理是什麼?
  • Mobx 和 React 的鏈接是怎麼作的?(mobx-react 庫)那麼這個庫的源碼看過嗎?作了什麼優化?(跪了)
  • 說說虛擬 DOM
  • React 組件通訊?
  • React Hooks 瞭解嗎,解決了什麼問題?
  • Pure Component 和 memo?
  • ES6 你瞭解哪些 API?(說了一些常見的)
  • Promise 的原理了解嗎?鏈式調用是如何實現的呢?
  • 撕代碼:看了下個人博客,發現有一篇講本身刷算法題的經歷,就說先來作一個題,leetcode 的 hard 難度二叉樹,我傻了,寫了 20 分鐘最後還沒寫出來…

如今再回頭看這些問題都沒那麼難啊(撲哧…),可是當時回答磕磕絆絆。這就是一個教訓啊:早點開始準備實習面試!!!git

二面(電話 40min)

一面完沒過幾天來二面,這是一輪壓力面,面試官語氣很嚴肅,時不時會用責備的語氣來講。當時仍是小菜鳥,不少問題是第一次問到,特別是源碼和原理還沒來得及複習。程序員

  • 說說你的項目吧。
  • 你項目有什麼難點?(說了性能優化和自拍旋轉)
  • 前端學了多久了?(一年)
  • 對 React 原理了解嗎,看過源碼嗎?
  • 說說 setState 吧,背後的原理了解嗎 (問懵逼了,過後想一想雖然沒看過源碼,可是批量更新、同步異步、虛擬 DOM 都是能夠說的,我當時大腦就一直陷於「源碼沒看過,完了完了我完了」)
  • 那你還有什麼瞭解比較深刻的地方嗎?(沒很好地回答出來)
  • 那你就是僅限於會用的階段,沒去了解過原理這塊?(我跪了,一直在瞭解,可是主要是遊覽器原理、Js 設計模式這塊,React 原理還有些沒看,實際上是能夠引導面試官來問我已經複習過的地方的,好比 Router 的原理,Mobx 的原理,遊覽器原理等等,可是當時屈服在面試官的「威壓」之下,支支吾吾回答了個「嗯…」)
  • 你以爲本身的優勢是什麼?缺點是什麼?(扯了扯)

面完後很是沮喪,可是問了下內推小姐姐我居然過了…github

字節跳動—抖音火山版兩輪(二面掛)

第一次視頻面試,發揮不是很好。

一面(視頻 50min)

  • 撕代碼:二叉樹找一條路徑之和爲 k。
  • CSS 的 position?
  • 撕代碼:手寫防抖,有頭無尾,時間戳搞定
  • 說說 HTTP 緩存
  • 說說 DNS 緩存
  • 項目難點?(balabala…)

二面(視頻 40min)

  • CSS 的 postion 有哪些屬性,都有什麼特色?比較特殊的是哪一個?
  • 作一個 三欄佈局放圖片,圖片之間間隔 20px
  • 項目難點?優化作了哪些內容?(balabala…)
  • HTTP 緩存
  • 撕代碼:給出 DOM 根元素,遞歸求出全部子元素存放在數組裏
  • 跨域和 cookie ?

騰訊 PCG 三輪(口頭 offer)

一面(電話 1h)

面試官給人感受很好,是廣東口音,就是電話聲音不太清楚,最後轉到 QQ 語音。面試題量很大,可是很是深刻的問題並很少。

  • 爲何選擇前端?
  • 你是如何學習前端知識的?(Youtube 快速入門,而後 GitHub 找項目讀,看國外博客,訂閱 weekly、newsletter 瞭解最新進展)
  • 看哪些書?(你不知道上卷,忍者祕籍,深刻 ES6,精通 CSS 第三版)
  • 瞭解 CDN 嗎?CDN 爲何讓你更快訪問資源?(先說到 DNS,後來發現方向偏了,又圓了回來)
  • 常見狀態碼有哪些?
  • HTTPS 和 HTTP?(TLS/SSL)
  • (深挖)你說到 TLS 也會進行一次握手,具體是怎麼作的?
  • (深挖)那麼加密過程是怎麼樣的?(中間人攻擊,對稱加密的缺陷,非對稱加密的原理-公鑰私鑰對)
  • HTTP 緩存?強緩存、協商緩存什麼意思?(不會…面試官說沒事,結果下面又問了我緩存 T T)
  • 什麼是閉包?
  • 說說你會的 ES6 吧?(聯繫平時寫 React 的場景,表明是真的用過的)
  • (深挖)說說 let 和 var 的區別?(提高,塊做用域)
  • (深挖)Babel 如何將 ES6 轉 ES5(實際上是問 Babel 的原理,我返鄉回答 JSX 如何經過 Babel 轉 js 表達本身瞭解 Babel)
  • React 的生命週期?
  • (深挖)遇到過什麼問題?好比在 willUnmount 裏面 setState()
  • (深挖)setState 的執行時機?(提到 Event Loop 以及事務代理)
  • (深挖)那你瞭解過 PureComponent 嗎 (結合新的 React.memo() 說了一下)
  • 什麼是 PWA?
  • ServiceWoker 是什麼?(能夠作全緩存,離線可用...)
  • (深挖)那麼和遊覽器緩存的那個先哪一個後?(不會)
  • 遇到過跨域問題嗎?如何解決?(加 cors 包,一鍵解決)
  • (深挖)那麼這個 express 的 CORS 庫的原理是什麼?(就是 CORS 的原理)
  • (深挖)還有什麼別的辦法嗎?(jsonp-提到以前作過京東的網站分析,或者用 node 作一層代理)
  • 如何實現居中佈局?flex 怎麼設計?
  • 手撕一個算法——最大連續子序列,經典 dp。

二面(電話 40min)

到這裏我 React 原理已經準備的差很少了,沒想到二面面試官並沒問 React 原理…

  • SPA 前端路由的原理
  • (深挖)Browser Router 的原生實現方法
  • HTTPS 多一次握手(TLS 握手),具體過程?
  • 跨域問題如何解決?

其餘問題因爲失誤沒有記錄下來。

三面(視頻 40min)

面試官是個知名大佬,我說話都哆嗦,發揮不是很好。問題也有很基礎的,出乎意料。

  • 何時能來實習?實習時間?
  • 對於城市的選擇?
  • 對於團隊的選擇?
  • 一個智力題,計算機率的,不難。
  • 一個關於 transform 的 CSS 問題(沒有回答好,我 CSS 不是很熟練)
  • 原生 ajax 請求過程,js 實現過程,promise 封裝。
  • 項目難點?(項目比較多,balabla 說了一堆)
  • (深挖)你項目裏這個加載時間如何計算的?以後前端監控相關的聊了一會。
  • 手撕代碼:一個 dp 題。

阿里雲兩輪(直通終面)

沒記錄。

印象裏題目偏難,不少是常規題的進一步深挖和擴展,以及場景題。

筆試題比較開放,作一個 webpack 可選鏈,我看成完整項目來寫,評價不錯。

github.com/HytonightYX…

阿里菜鳥網絡三輪(直通終面)

一面(電話 1h20min)

一面是位主管,說話比較快,給人感受比較嚴肅利索。並且一開始聊了不少非技術問題,結尾又和我聊了好久菜鳥的業務和發展,聊下來感受很好,而且在以後常常打電話回訪個人狀態,問我幾個 BU 的選擇,感覺到主管的關心。

  • 興趣愛好,談社會,談書籍
  • 談如何學習,本身的優勢,缺點,他人對本身的評價
  • 大學生活,最自豪的事情
  • 說說 React 狀態管理,Mobx 的原理
  • 看過哪些源碼?
  • 平時怎麼學習前端?你說到 react conf,最近幾屆的主題都是什麼?
  • (深挖)說說 fiber 架構
  • 談談 DNS
  • 有什麼問題?我問了技術棧是什麼,結果被面試官說了,不要這麼問,要問部門業務、技術和長期規劃,而後這三個點給我介紹了十幾分鍾,感受很真誠

面完後直接告訴我,我經過了,明後天會讓他的同事來重點考察個人基礎,讓我好好準備下。

二面(電話 50min)

真的全問基礎,沒有涉及項目的問題。可是回答的時候最好結合本身的實際經從來回答。好比閉包,我結合本身項目裏用到的場景來輔助。

  • JS 的原始類型?(答案是 7 種,而且重點說了下 bigint 和 Symbol)
  • 怎麼理解閉包?
  • 實現動畫有幾種方案?
  • JS 去實現動畫要注意什麼?
  • flex 佈局兩個子元素居左右?
  • 說說事件循環?
  • react fiber 原理?
  • React 的 setState 原理?
  • 何時會形成 React 組件刷新(render())?
  • 談談高階組件 HOC?
  • 項目裏的性能優化是怎麼作的?
  • 模塊化的演變?
  • 簡單說說 Webpack 是如何實現打包構建的?

三面(電話 26min)

  • 自我介紹

  • 談談職業規劃

  • 你剛纔提到想作架構,你說說你對前端架構的理解。(從前端歷史角度談先後端分離,前端工程化框架,自動化,CI/CD,前端監控、埋點,設計模式,負載均衡,緩存,kafka 到數據庫等等聊了十幾分鍾,角度比較多)

  • 你還有什麼問題?

面試完以後,一面面試官打電話來講我過了,會將我錄入系統,直通終面,提醒我到時候確認。

阿里盒馬六輪(已接 offer)

盒馬是流程最長的一次面試,先後大約有一個半月,可是面試下來感受很好,和盒馬面試官也比較搭。我看好盒馬多樣化的、全鏈路的業務體系,因此選擇了盒馬繼續終面,最後也拿到了 offer。

一面(電話 1h)

  • 如何實現一個 ORM 庫(一開始問這個沒反應過來,後面才慢慢說出來,說到設計的思路)
  • Koa 後臺怎麼作的?(全局異常處理,中間件鑑權,參數校驗)
  • 鑑權方面怎麼作的?
  • (深挖)按你的這個設計,若是訪問一張圖片通過你的接口也會鑑權進而致使跳轉登陸頁面,這個如何解決?(這是個當時作系統沒考慮到的問題,回答得很差)
  • React 父子組件如何通訊?
  • React state 和 props 的區別?
  • 如何封裝一個請求數據的組件?(UI 和業務分離,單一職責,高階函數)
  • Tree 型 Sesect,如何這棵樹太大會卡頓,怎麼作優化?
  • 另外,搜索的時候數據太多,怎麼作?(節流等等)
  • 基礎題:給一段異步代碼,問輸出的順序(考察遊覽器事件循環,宏、微任務等等)

二面(電話 40min)

主要問了 React

  • 介紹項目的難點(說了不少)
  • cookie、session 瞭解嗎?說一下傳統的登陸流程?
  • fiber 架構概述
  • diff 原理概述
  • setState 原理,兩種傳參方法,聯繫到 setState 可能異步也可能同步,說了 setState 的流程,內部機制,React 的事務機制等等。
  • 函數式編程?柯里化?
  • node.js 瞭解嗎?說說 node 和遊覽器的事件循環機制

三面 (電話 1h)

  • leader 先和我介紹了 20 分鐘部門業務,太棒了
  • 聊本身的項目,本身擔任什麼角色,作了什麼事情,攻克了什麼難點
  • 心目中的團隊是怎麼樣的?
  • 聊理想

四面—技術終面(電話 1h)

  • 介紹你的項目難點?(講了 20 分鐘)
  • 你說到狀態機的優化,具體怎麼作的?優化到哪幾個狀態?
  • 你說到 API 的複用,這麼設計可能會致使某個 API 的壓力過大,可否從新設計下?(BFF 架構)
  • 性能優化,結合實踐場景說一說(不能是簡單的羅列,還要說應用了這個技術打包減小了多少,加載時間減小了多少)
  • 你說到圖片被自動旋轉的問題,你作了逆操做;那麼這個事情前端和後端均可以作,你是怎麼選的?、
  • 你來實習,有哪些目標?想學到什麼,作到什麼?

五面—交叉面(電話 40min)

面試官是天貓 P9

  • 項目難點(說了準備好的一大串,從零作商業項目的設計思路、和客戶的溝通等等以及筆記平臺的性能優化過程。)
  • 性能優化怎麼作的?
  • 深刻:你說幾秒優化到幾秒,你這個是怎麼測出來的?
    • 深刻:前端性能監控相關、數據埋點相關
  • 平時參加哪些競賽?擔任什麼角色?
  • 你有什麼問題?
  • 進入阿里的職業發展

HR 面(電話 30min)

  • 自我介紹
  • 項目負責什麼?
  • 職業目標
  • 堅持最久的事情?(前端)
  • 想過放棄嗎?(沒有)
  • 對你影響最大的人是誰?
  • 說一件本身受過批評的事情?
  • 說一件本身做爲 leader 推進過的事情?
  • 你還有什麼問題?

百度(OC未接)

一面(視頻 40min)

一面是個高冷的小姐姐面試。

  • 自我介紹
  • 介紹 webstorage、cookie 的區別
  • 說說 XSS 攻擊,怎麼防護
  • 302 狀態碼是?和 301 有什麼區別?
  • 說說你的性能優化過程?(balabala…)
  • webpack 配置過程?經常使用插件?
  • 跨域問題怎麼解決?
  • 考慮過移動端優化嗎?
  • 撕代碼:深拷貝
  • 平時怎麼學習前端的?(問的挺深的,還當場讓我把看過的資料發給他)

二面(視頻 40min)

二面開始偏項目了,也是小姐姐面試。我有些題目答很差會尬笑,她也會一塊兒尬笑,哈哈。

  • 自我介紹
  • 說一下移動端優化
  • 你項目裏的 OAuth2 登陸怎麼作的?
  • 項目怎麼部署的?
  • 怎麼知道是移動端訪問仍是 PC 端訪問?
  • 若是要同一個域名,可是根據訪問設備的不一樣來訪問不一樣的項目,怎麼作?(nginx 判斷設備,反向代理到不一樣的端口)
  • 你項目的技術選型時怎麼作的?
  • 自我介紹時候提到你想作架構,能說說你的職業規劃嗎?
  • 撕代碼:Promise 封裝 ajax
  • 常規代碼題:給出一段異步代碼,套了不少 async/setTimeout/Promise 等,問你執行順序,考察事件循環

三面(視頻 50min)

三面是個瘦瘦的大叔,應該是相似總監通常的人物。頭髮不多,說話很溫和,稱呼我都說「您」,好感度 upup。不過無論是哪家大廠,總監面都會說到性能監控和埋點,以及性能的量化,小夥伴們好好準備呀。

  • 自我介紹
  • 說說項目難點(balabala…)
  • 說到性能優化,你是怎麼記錄的?(說完,繼續說能夠作埋點,能夠作性能監控)
  • 怎麼定義首屏加載時間?(一開始說錯了,而後慢慢圓回來,感謝面試官的提醒)
  • 大家項目的今日精選和今日最熱模塊是怎麼作的,用了什麼算法?
  • 具體說說職業規劃,好比前幾年作什麼,後幾年作什麼。
  • 平時怎麼學習前端的?
  • 說說你選擇城市的依據?
  • 談談決定你選擇公司和團隊的三個決定性因素?
  • 百度這邊你有想進的團隊嗎?
  • 你還有什麼問題?

面試官評價本身還不錯。

寫給本身:回顧過去的路

玩計算機是我小時候的理想吧。

小時候因爲家庭工做緣由,比較早摸到了計算機,開始打暴力摩托 1998,玩紅警,和老爹同事偷學計算機維修技術,初中作了三年電教管理,高中把教室裏的計算機拆了個遍(沒少捱罵),而後開始迷戀硬件 DIY,高二才終於組了本身人生第一臺 PC(多謝爸媽打賞),高中學了學 VB,浙江技術高考拿到滿分,大學順利就讀計算機科學與技術,正式入坑編程。

2017 年入學,大一也迷茫,每天刷知乎找方向,看行業動態。先跟着課程學吧,學 C 語言,刷題,參加 ACM 集訓被吊打,發現本身算法搞不過各位大佬,因而轉而去研究人工智能深度學習,跟着吳恩達的課程看一看,學Python,裝 TensorFlow 開始作 Demo,最後搞了個教務系統的爬蟲,能自動識別出驗證碼登陸。

大一快結束了一看,不對勁。這深度學習搞下去都是數學啊,本身機率論都還沒學,看論文腦袋疼,深感這東西憑本身的能力自學不了,得有大佬來帶我,還要有錢!沒錢你 CPU 跑模型玩呢,看人家 GTX1080Ti 跑的的多快。我沒錢沒資源沒老師,當即推:學這玩意兒先考研,去名校。

這個時候規劃了一下這幾年,我要進大廠。那要不要考研呢?既然考研仍是爲了進大廠,那我爲何不本科就衝一衝呢?另外我對考試這東西不擅長,考不過別人,我喜歡實踐,動手。

好,繼續查查別的路徑。這時候剛好遇到個Java Web項目,用的是JeeSite 2.x,能自動生成代碼模版的那個,我靠,有項目作,仍是能夠上線的商業項目!趕忙自學 Java,配 Java Web 環境配了好幾天,順便學了翻起昂,jQuery。吐槽下,這是個歷史遺留項目,配環境極其困難,由於要去找老版本,tomcatMavenJava 之間彷佛還有某種奇怪的版本對應關係,一開始還不知道,瞎配,我吐了。

這個項目最後學長學姐帶着咱們作好了,歷經坎坷,雖然給別人打工卻一分錢沒拿到,可是幫我打開了新世界的大門:Web 開發,這個挺有意思。

因而大二開始,再次改變路徑,正式入坑 Web 開發。自學JavaSpring那一套,入門有點兒困難,可是理解了DIAOP就有種頓悟的感受。順便把數據庫瞭解下,前端再套個thymeleaf + jQuery,我第一個網站就出來了,是個圖書網站,相似豆瓣讀書那種。

經過SpringMVC,又接觸到了設計模式。因而看書《Head First 設計模式》,瞭解了什麼單例,工廠之類的。學了一個學期,網站沒作幾個,Java 課程設計卻是寫的還行,用的是 Java FX,原生支持 MVC。

大二上學期結束以後,我遇到了如今的導師 L,咱們聊了不少,很談得來,我也很想去他的實驗室,跟着他學習。可是 L 導師有個要求,前端用React,後端用Node.js。我 Java 學了一個學期了,哪是那麼容易放棄的,我就說,我三個一塊兒學。

真是一入前端深似海,和我以前的模板+ jQuery 寫網頁徹底不同,這組件化的開發方式深得我心。Node.js輕量點,先後端語言統一,代碼相比 Java 少一點。後來在使用方面,Node愈來愈多,Java也就沒有繼續學下去了。

如今回憶起來,當時面臨選擇Java仍是Node.js都糾結萬分,如今看來實在是好笑 ,不就是門技術嗎,搞得生死離別同樣,須要什麼學什麼不就好了,反正都會衝着全棧去的。想起《人月神話》裏一句話:「沒有銀彈」。

而後學了幾個月React,就跟着老師兩我的作項目了,作完以後本身和同窗搗鼓了一個筆記分享平臺,以後又接了一個新的項目。這下導師讓我和甲方接需求,設計原型,設計數據庫表,系統設計先後端,也挺有挑戰性的。

以後放寒假,這裏還糾結了兩個月考研的事情。而後就是奇幻 2020,趕上疫情,2 月初開始春招找實習了。

寫到這裏,再點綴些許感想:

  • 學會放棄:若是發現本身確實不適合作某件事,早點放棄,也須要一份勇氣。對我而言,是否放棄一件事情,最關鍵的是,我作這件事是否感覺到快樂,我是否真的喜歡這個。可是 ACM 集訓的時候,對着一套套算法、一套套模板我真提不起勁,不合適,換方向!人工智能,深度學習,要錢要資源要導師,沒有,換方向!Web 開發,是本身的菜了,本身喜歡前端,堅持下去!

  • 沒有白作的事情:放棄了打 ACM,那段時間就一無所得嗎?首先我意識到本身不適合走這條路,自己就是一種收穫,最起碼代碼能力總加強了吧,思惟能力也有鍛鍊,敲代碼手速提高了很多;接觸了深度學習,也讓我在最後一個項目中直接用上了人臉識別;自學了JavaSpring框架,讓我接觸到了SOLID原則,設計模式等軟件工程學知識,直接讓我萌發了作架構的想法,讓我更注重代碼質量,系統設計,以及往後的維護性,伸縮性等,也讓我在用Node作後端時,快速上手 expresskoa等 web 框架。更不用說這些東西對於我課程、績點等等的幫助了,只要是軟件開發課程,都是滿績。因此「白作」的這些事情,提高了個人知識廣度。軟件開發,總有一些東西是不變的,一通百通。

實習面試指南

我的以爲面試,除了一二三面這個角度,能夠換一個角度來看,分別是簡歷關、能力關、表達關和潛力關。

簡歷關

  • 簡介、美觀
  • 掛上本身的GitHub博客
  • 項目要有能訪問的線上地址

美觀這個事情,也看人的,審美不一樣嘛,我我的直接用 typoraMarkDown,而後輸出成 PDF,黑底白字,放幾個藍色的超連接。這個網上教程也不少,不贅述了。

GitHub 要多點綠啊,或者首頁掛幾個本身的得意之做,博客也更新幾篇技術文章吧,技術文章徹底原創有點難度,寫一寫本身學習下來的感悟也不錯的,總之要體驗出本身的持續熱情

項目能訪問,這個隱含的東西可多了。若是這個是你本身作的,這說明你起碼捨得爲技術花錢、會配置服務器、會部署先後端項目、有使用 linux 的經驗、願意證實項目是真的而不是嘴遁

技術關

基礎:這個沒啥好說的,刷面經,啃書,看別人的面試總結文章,你本身畫一個思惟導圖來查漏補缺。

項目:項目要有難點吧,有的同窗會問了:我沒難點咋辦啊,無中生有也能夠嘛。雖然可能需求就那麼多,可是你能夠繼續精益求精一點啊。好比很簡單一個圖片上傳,可能你以爲行了,需求知足了,可是你在掘金隨便一搜「上傳」,一大堆業務需求就來了呀,什麼大文件上傳、斷點續傳、H5 上傳、上傳前預處理等等,隨便一個都是常見的難點呀。

另外,既然是面試,就須要針對面試好好準備,即便平時水平很強,可是不少問題不專門花時間複習和總結,面試仍是很容易翻車的,也會影響表達。

表達關

  • 禮貌、語速適中、表達清楚、主動交流
  • 基礎和項目穿插,證實本身的知識整合能力

主動交流:不會就說不會,不要嗯嗯啊啊半天浪費時間,能夠的話問一下「您能夠給一些提示嗎」。若是本身以爲有思路,可是一時半會不知道怎麼說,就先說「能夠給我半分鐘思考一下嗎」。

基礎和項目穿插:問到基礎能夠穿插項目,這樣才真實,而不是個只會背答案的復讀•莫得感情•機。隨便舉個例子,好比問到狀態碼,你說「⋯⋯301 重定向,我以前作的一個項目地址改了,因而在 nginx 裏配置的時候就用到了 ⋯⋯ 它和 302 也是有區別的,⋯⋯」。

潛力關

注意,面試官問你爲何選擇前端、你在項目中的位置、你對 XXX(技術)的見解的這些問題,可能就是在考察你的潛力了。

這些問題我不想也很差給出什麼答案或者套路,每一個人狀況都不一樣。建議結合自身經歷提早準備一下。

學習指南

我總結的一句話就是,學習的路子要廣,學完了要有總結和輸出。

學習的路子要廣

1 搜商

  • 搜問題:若是你只會用百度而且沒有開去廣告&&block 掉某些網站的話,那恭喜你你搜索到的東西極可能是二手甚至三手的資料,有內容錯誤 or 過期的問題,我認可不少東西都有存在的價值,可是這麼作性價比過低。若是去試試在 Google、GitHub issue、掘金、知乎或者 V2EX 去搜搜看,性價比會更高,由於這些地方更專業。其次,Google搜索英文關鍵詞,若是你看到Stack Overflow這個字眼,那麼你離解決這個問題已經不遠了。最後,試試工具—時間設置,保證本身搜到的東西比較新。
image-20200422103849132
image-20200422103849132
  • 搜學習資料:不少人要開始學一個東西,可是不知道怎麼去搜羅好一些的資料。其實寫的好的官方文檔就是很好的資料,你能夠試試在GitHub搜索,知乎搜索、B 站搜索、微信搜索以及淘寶搜索。我我的喜歡官方文檔、YouTube、Google、國內各類論壇、GitHub、B 站這個順序來找資料學。互聯網這麼發達,資料實在是太多了,每一個人的習慣也不同,參考參考就好。
  • 搜項目:推薦 GitHub,學會關鍵字搜索和條件設置!
  • 學習路線圖 roadmap + 技術
  • 優質項目列表 awesome + 技術
  • 不錯的項目模板 realworld + 技術
  • 條件設置:指定 stars language forks 等等

其次,國外也有不少好的論壇,好比 Medium;YouTube 也有不少conf能夠看,還有超多的入門教程,用英文關鍵詞搜索就行。

另外要注意的是,掌握了正確的搜索姿式,卻也不要搜上癮了,找到了不錯的、比較新的資料,就能夠開始學習了,不要一直想着再搜搜看有沒有更好的,這樣永遠不會開始學了,收藏夾裏資料卻是一大堆。

2 看書

前端開發的書單不贅述,知乎豆瓣掘金都有不少推薦。

咱們作前端開發工程師,除開前端開發,首先是工程師。我不想只是搬 🧱 的,平時會看一點別的書。

  • 好的代碼:《代碼整潔之道》《架構整潔之道》etc
  • 項目管理:《人月神話》(不少地方沒看懂,工做後再看看可能會有新收穫)
  • 設計:UI 設計《寫給你們看的設計書》產品設計推薦人人都是產品經理這個網站
  • 素養:《程序員修煉之道》《程序員的職業素養》

還有其餘的好書,能夠評論區推薦一下哈。

3 技術廣度和深度

第一層:學完一個技術,能作個「調包俠」,作出來的東西能跑,知足基本業務需求;

第二層:要求本身去學習所謂「最佳實踐」,能寫出高質量、高性能、可維護的代碼;

第三層:打入底層,瞭解原理,能作優化;

第四層:不只能作好細節,並且能作系統整體架構的設計,這對知識廣度和深度都有很高要求。

4 工具

這裏碎碎念說幾個點:

咱們天天吃飯的工具—PC,win/macOS 熟練否;

編輯器:快捷鍵、各類提高效率的插件、代碼檢查、格式化等等;

linux 常見的幾個命令;

版本控制 git、以及 GitHub 熟不熟練;

chrome 的調試技巧、性能檢測工具、好用的拓展工具;

還有 postman / navicat 等等好用的工具,這些東西會極大提高咱們的工做效率。

作總結和輸出

學習和遺忘做鬥爭,忘記是正常的,因此咱們須要記錄下來備查。

另外,學習效率金字塔告訴咱們,能像老師同樣教授給他人是效率最高的方式,也就是作輸出。下面給兩個可操做的方式。

  • 寫博客 or 整理文檔github pages瞭解一下,本身買ECS+玉名(敏感詞)也能夠,能夠搭配 hexovuepress或者其餘的,vuepress適合整理大量的文檔,好比面試題等等。固然技術不重要,關鍵是要寫,博客作的再好看不寫也是白搭。
  • 費曼學習法:假設有一個初學者,你要把這個技術給他講明白。我的認爲,這個技巧最妙的部分在於,講的過程當中你不得不聯繫到其餘的、對方可能能夠理解的其餘知識點來輔助你,整個過程就像是 BFS&&DFS,會迫使你去構建一個「知識圖譜」。我用這個方法好久了,屢試不爽。再者,面試以前多練練,有助於提高「嘴感」。

尾聲

學習這件事和這兩年的經歷,其實遠不是短短几千字能夠寫完的東西。單是搜索效率那一塊就還有不少東西能夠寫的。

這篇文章的目的仍是總結本身的面經,分享學習經歷,能幫助到你們一點點筆者就很知足了。本身也會不按期將寫一些原創文章,能夠關注一下。

收拾行囊,繼續出發。

相關文章
相關標籤/搜索