筆者就讀於杭州師範大學(世界上最好的大學),感謝在這裏的三年,遇到的同窗和導師!前端
筆者在大二開始自學 Web 開發,大二上學期作的 Java 後端,大二下學期轉前端,和導師作了兩個商業項目。vue
從今年二月初準備簡歷,開始複習整理知識點,投遞了字節
、騰訊
、阿里
、百度
,經歷大大小小的面試,最終到 4 月 17 日 接到阿里盒馬意向書已經兩個半月了,期間也經歷過 burnout 的階段,不過結果仍是好的,如今但願經過這一篇文章,將大學裏最重要的這兩個月總結一下,也給你們作一些原創的分享。node
截止至發稿,目前react
我會按照首次(一面)開始的順序來寫,騰訊 PCG,字節抖音,阿里投遞的 BU 比較多,最後是百度統招(部門未知)。linux
爲何是這個順序?由於個人春招,準備和投簡歷是同時開始的,也就是說我剛開始是比較薄弱的,知識點沒複習,面試經驗不夠,這些都是一邊面試一邊總結出來的。webpack
二月中旬面試,當時仍是個小菜鳥,面試官很 nice,一直鼓勵我,說個人項目經歷豐富,願意多挖掘我一點。我當時怕是對「挖掘」二字有什麼誤解,居然還開開心心說了個「好噠」。後面對於當時仍是菜鳥的我簡直就是煉獄難度。nginx
如今再回頭看這些問題都沒那麼難啊(撲哧…),可是當時回答磕磕絆絆。這就是一個教訓啊:早點開始準備實習面試!!!git
一面完沒過幾天來二面,這是一輪壓力面,面試官語氣很嚴肅,時不時會用責備的語氣來講。當時仍是小菜鳥,不少問題是第一次問到,特別是源碼和原理還沒來得及複習。程序員
面完後很是沮喪,可是問了下內推小姐姐我居然過了…github
第一次視頻面試,發揮不是很好。
面試官給人感受很好,是廣東口音,就是電話聲音不太清楚,最後轉到 QQ 語音。面試題量很大,可是很是深刻的問題並很少。
到這裏我 React 原理已經準備的差很少了,沒想到二面面試官並沒問 React 原理…
其餘問題因爲失誤沒有記錄下來。
面試官是個知名大佬,我說話都哆嗦,發揮不是很好。問題也有很基礎的,出乎意料。
沒記錄。
印象裏題目偏難,不少是常規題的進一步深挖和擴展,以及場景題。
筆試題比較開放,作一個 webpack 可選鏈,我看成完整項目來寫,評價不錯。
一面是位主管,說話比較快,給人感受比較嚴肅利索。並且一開始聊了不少非技術問題,結尾又和我聊了好久菜鳥的業務和發展,聊下來感受很好,而且在以後常常打電話回訪個人狀態,問我幾個 BU 的選擇,感覺到主管的關心。
面完後直接告訴我,我經過了,明後天會讓他的同事來重點考察個人基礎,讓我好好準備下。
真的全問基礎,沒有涉及項目的問題。可是回答的時候最好結合本身的實際經從來回答。好比閉包,我結合本身項目裏用到的場景來輔助。
自我介紹
談談職業規劃
你剛纔提到想作架構,你說說你對前端架構的理解。(從前端歷史角度談先後端分離,前端工程化框架,自動化,CI/CD,前端監控、埋點,設計模式,負載均衡,緩存,kafka 到數據庫等等聊了十幾分鍾,角度比較多)
你還有什麼問題?
面試完以後,一面面試官打電話來講我過了,會將我錄入系統,直通終面,提醒我到時候確認。
盒馬是流程最長的一次面試,先後大約有一個半月,可是面試下來感受很好,和盒馬面試官也比較搭。我看好盒馬多樣化的、全鏈路的業務體系,因此選擇了盒馬繼續終面,最後也拿到了 offer。
主要問了 React
面試官是天貓 P9
一面是個高冷的小姐姐面試。
二面開始偏項目了,也是小姐姐面試。我有些題目答很差會尬笑,她也會一塊兒尬笑,哈哈。
三面是個瘦瘦的大叔,應該是相似總監通常的人物。頭髮不多,說話很溫和,稱呼我都說「您」,好感度 upup。不過無論是哪家大廠,總監面都會說到性能監控和埋點,以及性能的量化,小夥伴們好好準備呀。
面試官評價本身還不錯。
玩計算機是我小時候的理想吧。
小時候因爲家庭工做緣由,比較早摸到了計算機,開始打暴力摩托 1998,玩紅警,和老爹同事偷學計算機維修技術,初中作了三年電教管理,高中把教室裏的計算機拆了個遍(沒少捱罵),而後開始迷戀硬件 DIY,高二才終於組了本身人生第一臺 PC(多謝爸媽打賞),高中學了學 VB,浙江技術高考拿到滿分,大學順利就讀計算機科學與技術,正式入坑編程。
2017 年入學,大一也迷茫,每天刷知乎找方向,看行業動態。先跟着課程學吧,學 C 語言,刷題,參加 ACM 集訓被吊打,發現本身算法搞不過各位大佬,因而轉而去研究人工智能深度學習,跟着吳恩達的課程看一看,學Python
,裝 TensorFlow
開始作 Demo,最後搞了個教務系統的爬蟲,能自動識別出驗證碼登陸。
大一快結束了一看,不對勁。這深度學習搞下去都是數學啊,本身機率論都還沒學,看論文腦袋疼,深感這東西憑本身的能力自學不了,得有大佬來帶我,還要有錢!沒錢你 CPU 跑模型玩呢,看人家 GTX1080Ti 跑的的多快。我沒錢沒資源沒老師,當即推:學這玩意兒先考研,去名校。
這個時候規劃了一下這幾年,我要進大廠。那要不要考研呢?既然考研仍是爲了進大廠,那我爲何不本科就衝一衝呢?另外我對考試這東西不擅長,考不過別人,我喜歡實踐,動手。
好,繼續查查別的路徑。這時候剛好遇到個Java Web
項目,用的是JeeSite 2.x
,能自動生成代碼模版的那個,我靠,有項目作,仍是能夠上線的商業項目!趕忙自學 Java,配 Java Web 環境配了好幾天,順便學了翻起昂,jQuery
。吐槽下,這是個歷史遺留項目,配環境極其困難,由於要去找老版本,tomcat
、Maven
和Java
之間彷佛還有某種奇怪的版本對應關係,一開始還不知道,瞎配,我吐了。
這個項目最後學長學姐帶着咱們作好了,歷經坎坷,雖然給別人打工卻一分錢沒拿到,可是幫我打開了新世界的大門:Web 開發,這個挺有意思。
因而大二開始,再次改變路徑,正式入坑 Web 開發。自學Java
,Spring
那一套,入門有點兒困難,可是理解了DI
和AOP
就有種頓悟的感受。順便把數據庫瞭解下,前端再套個thymeleaf + jQuery
,我第一個網站就出來了,是個圖書網站,相似豆瓣讀書那種。
經過Spring
的MVC
,又接觸到了設計模式。因而看書《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,那段時間就一無所得嗎?首先我意識到本身不適合走這條路,自己就是一種收穫,最起碼代碼能力總加強了吧,思惟能力也有鍛鍊,敲代碼手速提高了很多;接觸了深度學習,也讓我在最後一個項目中直接用上了人臉識別;自學了Java
,Spring
框架,讓我接觸到了SOLID
原則,設計模式等軟件工程學知識,直接讓我萌發了作架構的想法,讓我更注重代碼質量,系統設計,以及往後的維護性,伸縮性等,也讓我在用Node
作後端時,快速上手 express
、koa
等 web 框架。更不用說這些東西對於我課程、績點等等的幫助了,只要是軟件開發課程,都是滿績。因此「白作」的這些事情,提高了個人知識廣度。軟件開發,總有一些東西是不變的,一通百通。
我的以爲面試,除了一二三面這個角度,能夠換一個角度來看,分別是簡歷關、能力關、表達關和潛力關。
美觀這個事情,也看人的,審美不一樣嘛,我我的直接用 typora
寫MarkDown
,而後輸出成 PDF,黑底白字,放幾個藍色的超連接。這個網上教程也不少,不贅述了。
GitHub 要多點綠啊,或者首頁掛幾個本身的得意之做,博客也更新幾篇技術文章吧,技術文章徹底原創有點難度,寫一寫本身學習下來的感悟也不錯的,總之要體驗出本身的持續熱情。
項目能訪問,這個隱含的東西可多了。若是這個是你本身作的,這說明你起碼捨得爲技術花錢、會配置服務器、會部署先後端項目、有使用 linux 的經驗、願意證實項目是真的而不是嘴遁。
基礎:這個沒啥好說的,刷面經,啃書,看別人的面試總結文章,你本身畫一個思惟導圖來查漏補缺。
項目:項目要有難點吧,有的同窗會問了:我沒難點咋辦啊,無中生有也能夠嘛。雖然可能需求就那麼多,可是你能夠繼續精益求精一點啊。好比很簡單一個圖片上傳,可能你以爲行了,需求知足了,可是你在掘金隨便一搜「上傳」,一大堆業務需求就來了呀,什麼大文件上傳、斷點續傳、H5 上傳、上傳前預處理等等,隨便一個都是常見的難點呀。
另外,既然是面試,就須要針對面試好好準備,即便平時水平很強,可是不少問題不專門花時間複習和總結,面試仍是很容易翻車的,也會影響表達。
主動交流:不會就說不會,不要嗯嗯啊啊半天浪費時間,能夠的話問一下「您能夠給一些提示嗎」。若是本身以爲有思路,可是一時半會不知道怎麼說,就先說「能夠給我半分鐘思考一下嗎」。
基礎和項目穿插:問到基礎能夠穿插項目,這樣才真實,而不是個只會背答案的復讀•莫得感情•機。隨便舉個例子,好比問到狀態碼,你說「⋯⋯301 重定向,我以前作的一個項目地址改了,因而在 nginx 裏配置的時候就用到了 ⋯⋯ 它和 302 也是有區別的,⋯⋯」。
注意,面試官問你爲何選擇前端、你在項目中的位置、你對 XXX(技術)的見解的這些問題,可能就是在考察你的潛力了。
這些問題我不想也很差給出什麼答案或者套路,每一個人狀況都不一樣。建議結合自身經歷提早準備一下。
我總結的一句話就是,學習的路子要廣,學完了要有總結和輸出。
Google
搜索英文關鍵詞,若是你看到Stack Overflow
這個字眼,那麼你離解決這個問題已經不遠了。最後,試試工具—時間
設置,保證本身搜到的東西比較新。GitHub
搜索,知乎搜索、B 站搜索、微信搜索以及淘寶搜索。我我的喜歡官方文檔、YouTube、Google、國內各類論壇、GitHub、B 站這個順序來找資料學。互聯網這麼發達,資料實在是太多了,每一個人的習慣也不同,參考參考就好。其次,國外也有不少好的論壇,好比 Medium;YouTube 也有不少conf
能夠看,還有超多的入門教程,用英文關鍵詞搜索就行。
另外要注意的是,掌握了正確的搜索姿式,卻也不要搜上癮了,找到了不錯的、比較新的資料,就能夠開始學習了,不要一直想着再搜搜看有沒有更好的,這樣永遠不會開始學了,收藏夾裏資料卻是一大堆。
前端開發的書單不贅述,知乎豆瓣掘金都有不少推薦。
咱們作前端開發工程師,除開前端開發,首先是工程師。我不想只是搬 🧱 的,平時會看一點別的書。
還有其餘的好書,能夠評論區推薦一下哈。
第一層:學完一個技術,能作個「調包俠」,作出來的東西能跑,知足基本業務需求;
第二層:要求本身去學習所謂「最佳實踐」,能寫出高質量、高性能、可維護的代碼;
第三層:打入底層,瞭解原理,能作優化;
第四層:不只能作好細節,並且能作系統整體架構的設計,這對知識廣度和深度都有很高要求。
這裏碎碎念說幾個點:
咱們天天吃飯的工具—PC,win/macOS 熟練否;
編輯器:快捷鍵、各類提高效率的插件、代碼檢查、格式化等等;
linux 常見的幾個命令;
版本控制 git、以及 GitHub 熟不熟練;
chrome 的調試技巧、性能檢測工具、好用的拓展工具;
…
還有 postman / navicat 等等好用的工具,這些東西會極大提高咱們的工做效率。
學習和遺忘做鬥爭,忘記是正常的,因此咱們須要記錄下來備查。
另外,學習效率金字塔告訴咱們,能像老師同樣教授給他人是效率最高的方式,也就是作輸出。下面給兩個可操做的方式。
github pages
瞭解一下,本身買ECS+玉名(敏感詞)也能夠,能夠搭配 hexo
、 vuepress
或者其餘的,vuepress
適合整理大量的文檔,好比面試題等等。固然技術不重要,關鍵是要寫,博客作的再好看不寫也是白搭。學習這件事和這兩年的經歷,其實遠不是短短几千字能夠寫完的東西。單是搜索效率那一塊就還有不少東西能夠寫的。
這篇文章的目的仍是總結本身的面經,分享學習經歷,能幫助到你們一點點筆者就很知足了。本身也會不按期將寫一些原創文章,能夠關注一下。
收拾行囊,繼續出發。