曾經老師看不起的前端開發,現在卻斬獲多份大廠 offer,最終走進阿里

相信你們看到這樣疑惑的標題,必定會有不少的問號。什麼是前端開發?爲什麼會被老師看不起?又如何走進阿里的?前端

別急,咱們一個一個來回答。git

回答這些問題以前,我先作個自我介紹,我是來自中南林業科技大學計算機科學與技術專業的一個很普通的大三同窗。我是一名很普通的前端玩家,憑藉過人的運氣,最終在 2020 年春季校園招聘,斬獲了阿里騰訊等多家互聯網大廠的實習 offer,並最終選擇走進阿里。github

什麼是前端開發?

在軟體架構和程序設計領域,前端是軟體系統中直接和用戶交互的部分,然後端控制着軟件的輸出。將軟體分爲前端和後端是一種將軟體不一樣功能的部分相互分離的抽象。web

—— 引用自維基百科面試

維基百科的解釋已經至關到位:前端是軟件系統中直接和用戶交互的部分算法

那麼試想一下平時咱們用的軟件,哪些是與你直接接觸的?編程

沒錯,就是你看到的可操做的部分。你網上衝浪看到的每個網頁,你用過的每個小程序,你手機上安裝的每個 APP,甚至電腦上安裝的客戶端程序,均可以被稱爲前端。小程序

前端是一個大且寬泛的概念,涉及到的知識以及體系衆多,光網頁開發語言,就要學習至少 3 門(HTML,CSS,JavaScript),更別說小程序、APP 和客戶端了。除此以外,數據結構和算法、計算機網絡,前端的工程化、性能優化等知識也是必不可少的。後端

伴隨網絡帶寬不斷提升和瀏覽器、WebView 的不斷髮展,前端業務日益複雜化和多元化,前端開發已經由以 WebPage 模式爲主轉變爲以 WebApp 模式爲主了,朝着界面美觀、交互豐富且性能更好的方向大步邁進。瀏覽器

爲什麼會被老師看不起?

曾幾什麼時候,在某次操做系統的課堂上,老師說了一句:前臺(前端)一個初中生花一個星期就能學會,大家還專門去搞這個是很丟臉的。

可想而知,我是多麼不堪。一個初中生花一個星期就能學會的內容,我卻花了一年多的時間去學習和沉澱。同時也說明了一個問題:科班的老師對於前端開發廣泛存在偏見。

存在偏見是能夠理解的:

  • 大多數科班的老師醉心於教學和學術研究,已經不多去關注技術的發展,對前端還存在只是切圖的刻板印象。

  • 前端近幾年的發展十分迅猛,發生了許多翻天覆地的變化。

衆所周知,前端開發者一般都被人稱爲切圖仔,這也是不少前端開發者對本身的稱呼。事實確實如此,不少前端開發者都還停留在簡單的切圖的階段。從設計師處拿到設計稿,而後用代碼來還原設計稿。這確實是不少前端開發者在工做中作的事情。這也致使了前端開發,在科班的老師眼裏是如此的不堪。

可是除了切圖之外,前端開發者還須要掌握哪些技能呢?

前端知識圖譜

數據結構和算法能夠說是全部開發者必備的技能了,同時也是一門大而廣的學科,篇幅限制就不展開了。

本人也才疏學淺,暫時只能整理出這麼些知識點了。面試可能會考察到的知識點,就是前端開發者除了切圖,還須要掌握的知識點或技能,有些屬於應用層面,有些則須要深刻原理。

如今還敢說一個初中生一個星期就能學會嘛

更況且,在阿里,切圖的工做大部分均可以使用 AI 自動完成,AI 甚至還能夠實現部分交互邏輯,那麼做爲一名前端開發者,有什麼技能是 AI 沒法替代的?

imgcook 由設計稿一鍵智能生成代碼

雙十一模塊 79.34% 的代碼是怎樣智能生成的

如何走進阿里?

衆所周知,阿里是國內最頂尖的互聯網公司,擁有着國內甚至世界範圍內頂尖的技術,由全球最大的電子商務需求驅動。而我加入的淘系技術團隊,被稱爲東半球體量最大,實力最強的前端團隊

那麼我是如何披荊斬棘,最終走進阿里的呢?後面都是滿滿的乾貨,建議精讀

走進阿里 = 50% 基礎 + 20% 項目 + 10% 思考總結 + 10% 面試技巧 + 10% 運氣

這就是走進阿里的公式。

50% 基礎

基礎是很是重要的。

萬丈高樓平地起。

若是基本的語言使用還存在問題,那麼第一輪就會被篩,就更不可能有後面的故事了。

基礎的學習,知識點都在上面的思惟導圖裏面,裏面列出的每個二級分支,都屬於必知必會的,就不詳細講了,這裏主要介紹一下一些我看過的還不錯的基礎知識書籍:

  • HTML & CSS:《HTML5 與 CSS3 基礎教程》(我叫它兔子書,由於封面上有一隻兔子)
  • JavaScript:《JavaScript 高級程序設計》(又稱 JS 紅寶書)、《ES6 標準入門》、《你不知道的 JavaScript》(不建議初學者看,且建議看英文原版)
  • 數據結構 & 算法:《啊哈!算法》(生動有趣)、《學習 JavaScript 數據結構與算法》(很是基礎的算法教程)
  • 計算機網絡:《計算機網絡》(謝希仁著)、《圖解 TCP/IP》(反覆看,最好二刷甚至三刷)、《圖解 HTTP》(反覆看,最好二刷甚至三刷)
  • React:React 官方文檔、《深刻淺出 React 和 Redux》
  • Vue:Vue 官方文檔、《深刻淺出 Vue.js》
  • Node.js:《深刻淺出 Node.js》(不建議硬啃)

我猜到有些同窗可能會說這麼多書上哪找,我就幫大家省去找書和買書的時間吧:

密碼:70zc

20% 項目

項目是證實你動手能力的重要憑據。基礎知識學完了,學紮實了以後,就要開始動手作項目了。把書本上學到的基礎知識,一行一行寫到代碼裏面,加深本身印象的同時,你會發現一句話:

紙上學來終覺淺。

不少同窗不知道上哪找項目,也不知道作什麼項目,這裏我給幾點建議:

  1. 不建議再作什麼仿餓了麼仿美團仿攜程了,也別再作什麼後臺管理系統了,這種類型的項目,面試官看一眼就知道沒有技術含量,也不會有本身的思考。由於這種類型的項目,大多數狀況下省略了需求分析和文檔製做的過程,僅僅只是編碼實現。這種類型的項目只適合學習使用,並不適合應聘,除非你在此基礎上加入了不少技術性的內容。好比使用一些新特性對項目進行重構,併產出了很多技術上的總結和思考。
  2. 跟招聘要求契合度不高的項目能夠作,但不建議寫在簡歷上。好比你找前端的工做,搬了一個 Java 的課程設計到簡歷上,就不合適了。
  3. 建議緊跟時事,作一些與時事相關的項目。好比新型冠狀病毒肺炎疫情可視化地圖、疫情期間沒法出門雲祭祖的小程序(笑)之類的。
  4. 建議嘗試接一些公司企業或是老師的項目。一般狀況下,這些項目都會具備必定的挑戰性,且有時間要求,但收益也會至關可觀(對於學生來講)。在作項目的過程當中你會了解到整個開發的具體流程:需求對接-原型設計-編碼實現-文檔製做-測試發佈,這對我的的成長是很是有幫助的。
  5. 建議先加入一些中小型公司,作一些難度不大的項目,學習公司對代碼風格和質量、工程化、性能優化方面的要求,同時嘗試將其引入到本身的項目中。

舉一個很簡單的例子:目前市面上對於咱們學校課表支持自動導入的 APP 很少,可是課表又是剛需,怎麼辦?

這個時候就能夠本身作一個,作項目的過程當中確定也會遇到一些問題,服務了同窗們的同時,豐富了本身的簡歷,提高了本身的實踐能力。參考學校 @倪小白同窗 的例子,他的林大課表就作的很不錯。

10% 思考總結

項目作完了,必需要思考總結。咱們作的每個項目,不管是否可以搬上簡歷,都要按期作思考總結。最好每週總結一次,若是作不到每週一次就兩週一次,時間跨度不要太長,實在沒空一個月作一次總結,但不能不作。

項目總結一般分這麼幾個部分:

  1. 上週的開發過程當中遇到了哪些問題?
  2. 問題如何解決的?
  3. 涉及到哪些知識?
  4. 有沒有更好的方法?

上面這些是每週作的思考總結,當項目徹底作完結項的時候,也要對整個項目作思考總結:

  • 技術棧:項目用到了哪些技術,簡單羅列一下。
  • 體驗&交互:項目總體的體驗如何,動畫效果是否流暢,交互方式是否人性化,出現問題是告警是否豐富,有沒有還作的不夠的地方。
  • 性能:頁面首次加載時間爲多少,發起網絡請求到可交互的時間是多少,是否存在過分的迴流重繪,有沒有能夠優化的地方。
  • 開發效率:項目是如何推動的,若是是團隊項目,質量是如何把控的,若是是單人項目,效率是如何把控的。
  • 工程化:自動化部署,打包構建優化,代碼規範,commit 規範等。

10% 面試技巧

面試技巧雖然說只佔 10%,可是事實上,面試技巧直接影響到了你基礎和項目部分的發揮。

首先咱們要明確什麼是面試?又爲何會有面試?

面試是面試官經過相互交流來了解求職者的方式。面試產生的緣由是用人單位須要在較短期內快速肯定求職者的各方面能力以及潛力。

那麼,既然明確了什麼是面試以及面試產生的緣由,咱們就應該能明白一點:

面試是一個雙向選擇的過程。

縱使大部分同窗都是拼了命的想要拼進大公司,認爲面試只是公司單向選擇的過程。但事實上,你在不知不覺中也在對公司作了選擇。

大部分的互聯網公司的實習生面試流程都至少有 3 輪2 輪技術面 + 1 輪 HR 面

這是比較基本的面試流程,可是事實上大廠一般都會有 4-5 輪3-4 輪技術面 + 1 輪 HR 面

那咱們把面試流程進行拆解,一般是這樣的一個流程:

  • 1-2 面一般是基礎考察,從各個方面考察你的基礎知識是否紮實,基本不會涉及到你的項目,基本上會圍繞你簡歷上的技能樹提問。
  • 3-4 面一般是動手能力考察,結合你的項目,考察你對項目的理解,在項目中遇到的問題,如何解決的,以及一些對項目的思考沉澱。其中也會穿插一些跟項目相關的基礎知識。
  • HR 面一般是問一些我的性格,學習生活狀況或者家庭狀況等比較私人化的問題,固然,不排除從奇怪的角度提問的狀況。

流程大體是這樣,那麼咱們來說一些技術面的技巧:

  • 自我介紹必定要提早準備好,必定要有亮點,體現你與其餘同窗不一樣的地方,你的優點是什麼,給面試官留下必定印象的同時,也能讓面試官順着你的優點準備後續的問題。舉個例子,若是你以爲你在面試阿里以前,有其餘公司的實習經歷,並且公司規模不小,這段經歷是你的優點。那麼你就能夠在自我介紹的時候明確告訴面試官。面試官就頗有可能在後續的提問環節中對你這段實習經歷發問,這樣就能在面試一開始就把面試的節奏把握在本身的手中。

  • 面試官全部的問題,基本上都是圍繞你的簡從來提的,或是從簡歷上延伸出來的。因此不熟悉的知識別往簡歷上寫!比較熟悉的知識點寫了解,很是熟悉的知識點寫熟悉,熟練使用但不瞭解原理的寫熟練使用。這樣面試官看了你的簡歷描述,就不會在你不擅長的方向爲難你。

  • 遇到面試官提問你不會的狀況怎麼辦?答案是,實話實說直接說不會。這樣可以讓面試官快速肯定你的知識和能力範圍。若是你似懂非懂,非要說一些不必定正確的答案,那麼你就犯了班門弄斧的大錯了。做爲一名實習生/應屆生,缺少工做經驗,不可能面面俱到,有不懂的再正常不過了,面試官絕對不會由於偶爾一兩個知識點不會而掛了你。固然,這也有例外,那就是必知必會的知識點你不會

  • 當面試官連續兩個問題你都沒能答上來,或者都答得沒讓面試官滿意,這個時候你就要當心了。這種狀況說明你的面試節奏已經被面試官所掌控,一般狀況下這場面試就提早宣告涼了。可是!咱們有技巧,從新將面試節奏掌握在本身手裏。咱們大能夠直接跟面試官說:xxx 我確實瞭解的不夠深刻,從此必定努力補上,您能夠問我其餘知識點,好比 xxx 我就瞭解的比較深刻。一般狀況下,面試官聽到你這麼一說,他頗有可能會對你的這個「深刻」的程度感興趣,因而會接着你的話說一句:嗯好,那你跟我講講 xxx 吧。就這樣,話鋒一轉,面試節奏又回到了你的手上,這個時候你就能夠拿出你提早準備好的殺手鐗,說到就連面試官都不瞭解的地步!固然,不排除有些面試官可能比較缺少經驗,或者就是要硬剛,那就莫得辦法了(哭泣)。

  • 面試結束以後通常會有一個時間面試官容許你向他提問,這個時候應該提一些什麼問題?答案是,能夠提問你在此次面試沒有回答好的知識點,與面試官一同交流,又或是提問一些你最近的遇到的問題或者你本身的思考,與面試官一塊兒討論。總之,這個環節你要表現出一個學習者的態度,這一點很重要!縱使你在面試中的表現不是那麼驚豔,但若是你在這個時候表現出的態度很是誠懇,是一個不錯的加分項。由於實習生/應屆生招聘,尤爲是實習生招聘,面試官更加看重的是一個學習的能力

  • 最後的一點,是我我的以爲最重要的,就是無論面試的時候多緊張,必定要笑!必定要笑!必定要笑!笑能很大程度緩解本身的緊張,也能給面試官帶來一個積極樂觀的好印象。

目前我掌握的面試技巧大概就這麼多了,若是各位看官們還有其餘的奇技淫巧,歡迎點擊在 GitHub 上編輯此頁補充!

10% 運氣

說實話,運氣強求不得(笑哭)。

有些時候面試官正好問到你很是熟悉的部分,那麼面試結果一般都是很不錯的,相反就會特別沮喪。

心態

心態應該是整個面試流程中最最重要的了。

還記得前面說的那句話嗎?

面試是一個雙向選擇的過程。

若是你在某一次面試中,面試官給的壓力很大,而且最後還沒能經過,你確定會很是很是沮喪,甚至會懷疑人生,這個時候心態很是容易發生變化,自信心崩潰。

咱們只須要知道一點:

公司沒有選擇你,並不必定是由於你能力不行,更大的緣由是你沒達到公司對某方面的技能要求,記住,僅僅只是某方面

好比公司想招一個對 React 技術棧更加了解的同窗,而你的技術棧是 Vue,那麼你經過的機率可能會比其餘瞭解 React 技術棧的同窗要低一點,但這並不表明你的能力比了解 React 技術棧的同窗差。

保持自信的態度,不斷面試不斷總結,查漏補缺,必定會有好結果的,由於:

若是你本身都對本身的能力產生了懷疑,就沒有人能相信你了!

跟我一塊兒面試阿里的 @17 級地信 1 班羅霽鑫 小夥伴就是一個很是好的例子:

起初他不是頗有信心,由於本身是非科班的,並且學校出身也很差,已經準備考研準備了好幾個月了。

後來我把淘系內推的連接發給了他,問他要不要試一試,反正試一試最多耽誤一個月考研,而後他鼓起勇氣試了一下。

最後的結果你們應該都能猜到,咱們都進了終面並最後走完了全部的流程,拿到了阿里的 offer。

最後的最後

我爲何會取一個如此有爭議的標題呢?

我並非想懟那些對前端開發存在偏見的人,而是想讓你們知道:

前端實際上是一個很是綜合的方向,並無想象中那麼簡單。前端在近些年也很是熱門,伴隨着 5G 技術的發展,前端必定會更加受歡迎。

任何一個職業都有它存在的理由,還請不要戴着有色眼鏡看待!

最後就引用一句話:(掘金好像有敏感詞限制)

咱們都在努力奔跑,咱們都是追夢人。

送給你們一張壁紙,它一直是我電腦和 iPad 的壁紙:

壁紙

致學弟學妹

插播一條廣告,目前我在學校的ACM 編程愛好者運營技術工做室,正在召集一批對前端感興趣的學弟學妹,爲前端的發展貢獻一點點小小的力量。

我和 @17 級地信 1 班羅霽鑫 同窗兩我的是今年咱們學校進入阿里的前端實習生,但咱們但願這只是前端在咱們學校的開始而不是結束。

咱們會帶一批喜歡前端的學弟學妹,併爲你們提供學習指導,等你們到了須要找實習的時候,咱們還能夠爲你們提供各類互聯網大廠的內推資格

若是你也想加入東半球實力最強的前端團隊,能夠加我阿里師兄的微信:wuxiaorui86,我和 @17 級地信 1 班羅霽鑫 同窗兩我的就是在師兄的幫助下走到最後的!若是已經有幸加入了東半球實力最強的前端團隊,師兄還會輔導你的轉正答辯,轉正率幾乎 100%

若是文件連接失效了或者想加入軟件協會又或是跟我同樣的追夢人的話能夠關注咱們的公衆號:Hello FE,咱們會按期在公衆號發一些本身的學習心得~

公衆號

除了個人這篇文章,個人同門師兄弟也作了總結,面向非科班的同窗:

還有面向在技術選擇方面存在顧慮的同窗:

@阿聯

相關文章
相關標籤/搜索