1. 程式人生 > 其它 >前端工作2年,既因Flutter拿下阿里鹹魚offer!背後的努力值得我們學習

前端工作2年,既因Flutter拿下阿里鹹魚offer!背後的努力值得我們學習

前言

在出現Flutter 起,有不少網際網路大廠投入實踐,先是有閒魚團隊大規模引入 Flutter,後有飛豬、百度貼吧、今日頭條、西瓜視訊、美團外賣、京東商城等團隊在多個場景下落地了 Flutter 專案。而我一個大學室友看準了風口,工作兩年了,決定轉戰Flutter,目標阿里鹹魚,這對於他來說是個挑戰,在Flutter這方面知識還是有所欠缺,就疫情那會為準備面試在家學習Flutter,學的腦袋嗡嗡的,好在最後拿到了阿里鹹魚offer。

Flutter面試準備

簡單看一個框架知識點肯定是不行,就瞭解了Flutter是什麼,怎麼用,優缺點等,當然瞭解是對的,要是去面試還得深入點。在系統學習Flutter這塊,室友是看視訊和電子書學習,詳細是詳細,就是有點費腦子。

視訊學習

視訊教學分為理論知識、進入實戰、進階提升三部分。

理論知識
這部分講到認識檢視、佈局與列表、狀態管理、路由與導航、執行緒與非同步UI、Dart基礎快速入門、表單輸入與富文字、Flutter入門基礎知識、專案結構、資源、依賴和本地化、什麼是宣告式UI視訊、Flutter除錯技巧、學習構建Flutter等內容,綜合來說,理論知識這部分主要是講開發工具選擇與開發環境搭建指南、上手Flutter、Flutter理論知識瞭解,並單個視訊都有相應文字版的文件講解,更方便學習和理解。

進入實戰
這部分是講到了APP導航框架與常用功能實現,比如APP首頁框架搭建-Scaffold與PageView、APP首頁框架搭建-專案實踐、輪播圖Banner功能開發 、自定義AppBar實現滾動漸變等內容,這個視訊內容還是得反覆看,才能消化。

進階提升
這部分內容視訊可以說是重中之重,重頭戲吧,涉及到網路程式設計與資料儲存技術相關經驗和技巧、玩轉列表元件、Flutter,Native混合開發、App首頁功能開發、搜尋模組開發、開發包和外掛開發、智慧AI語音搜尋模組實現、打包釋出Flutter應用等內容,真不虧是進階,慢慢啃下來把。

小編光和小夥伴們說的內容就有這麼多,但遠遠還不止哦,既然要學習就不要停留在表面。

電子書學習

室友整理些有關Flutter的電子書,包括了Flutter官方文件詳細翻譯、Flutter技術進階、Flutter跨平臺開發全套電子書、Flutter基礎學習PDF、Flutter技術入坑指南總結(阿里閒魚)等,可以先從Flutter技術入坑指南總結看起,比較好接受,再看Flutter官方文件詳細翻譯時,就會比較好懂不會覺得乏味了。

個人學習心得:不管是看視訊還是電子書學習,一定要做筆記,把重要的、不會不懂的點等記錄下來,做的筆記梳理成自己的腦圖或文件,這個過程也是加深對內容的印象和理解。

Flutter面試

面試時有關Flutter問的面試題不多,好在面試前端做了準備,還是要了解下iOS或者Android的原生相關知識,小編把被問到的及小編整理的面試題及答案列舉一部分,看看關於Flutter都會問什麼。

1.Flutter 是什麼
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生使用者介面。 Flutter可以與現有的程式碼一起工作。在全世界,Flutter正在被越來越多的開發者和組織使用,並且Flutter是完全免費、開源的。

Flutter 特性有哪些?
快速開發(毫秒級熱過載)

  • 絢麗UI(內建漂亮的質感設計Material Design和Cupertino Widget和豐富平滑的動畫效果和平臺感知)
  • 響應式(Reactive,用強大而靈活的API解決2D、動畫、手勢、效果等難題)
  • 原生訪問功能
  • 堪比原生效能

3. Flutter 和 Dart的關係是什麼?
Flutter是一個使用Dart語言開發的跨平臺移動UI框架,通過自建繪製引擎,能高效能、高保真地進行移動開發。Dart囊括了多數程式語言的優點,它更符合Flutter構建介面的方式。

4. Dart 語言的特性?

  • Productive(生產力高,Dart的語法清晰明瞭,工具簡單但功能強大)
  • Fast(執行速度快,Dart提供提前優化編譯,以在移動裝置和Web上獲得可預測的高效能和快速啟動。)
  • Portable(易於移植,Dart可編譯成ARM和X86程式碼,這樣Dart移動應用程式可以在iOS、Android和其他地方執行)
  • Approachable(容易上手,充分吸收了高階語言特性,如果你已經知道C++,C語言,或者Java,你可以在短短几天內用Dart來開發)
  • Reactive(響應式程式設計)

5. Dart的一些重要概念?

  • 在Dart中,一切都是物件,所有的物件都是繼承自Object
  • Dart是強型別語言,但可以用var或 dynamic來宣告一個變數,Dart會自動推斷其資料型別,dynamic類似c#
  • 沒有賦初值的變數都會有預設值null
  • Dart支援頂層方法,如main方法,可以在方法內部建立方法
  • Dart支援頂層變數,也支援類變數或物件變數
  • Dart沒有public protected private等關鍵字,如果某個變數以下劃線(_)開頭,代表這個變數在庫中是私有的

6. dart是值傳遞還是引用傳遞?
引用傳遞

7.Widget 和 element 和 RenderObject 之間的關係?

  • Widget是使用者介面的一部分,並且是不可變的。
  • Element是在樹中特定位置Widget的例項。
  • RenderObject是渲染樹中的一個物件,它的層次結構是渲染庫的核心。

8. mixin extends implement 之間的關係?
繼承(關鍵字 extends)、混入 mixins (關鍵字 with)、介面實現(關鍵字 implements)。這三者可以同時存在,前後順序是extends -> mixins -> implements。
Flutter中的繼承是單繼承,子類重寫超類的方法要用@Override,子類呼叫超類的方法要用super。
在Flutter中,Mixins是一種在多個類層次結構中複用類程式碼的方法。mixins的物件是類,mixins絕不是繼承,也不是介面,而是一種全新的特性,可以mixins多個類,mixins的使用需要滿足一定條件。

9. 使用mixins的條件是什麼?
因為mixins使用的條件,隨著Dart版本一直在變,這裡講的是Dart2.1中使用mixins的條件:
mixins類只能繼承自object
mixins類不能有建構函式
一個類可以mixins多個mixins類
可以mixins多個類,不破壞Flutter的單繼承

10.Flutter main future mirotask 的執行順序?
普通程式碼都是同步執行的,結束後會開始檢查microtask中是否有任務,若有則執行,執行完繼續檢查microtask,直到microtask列隊為空。最後會去執行event佇列(future)。

11.Future和Isolate有什麼區別?
uture是非同步程式設計,呼叫本身立即返回,並在稍後的某個時候執行完成時再獲得返回結果。在普通程式碼中可以使用await 等待一個非同步呼叫結束。
isolate是併發程式設計,Dartm有併發時的共享狀態,所有Dart程式碼都在isolate中執行,包括最初的main()。每個isolate都有它自己的堆記憶體,意味著其中所有記憶體資料,包括全域性資料,都僅對該isolate可見,它們之間的通訊只能通過傳遞訊息的機制完成,訊息則通過埠(port)收發。isolate只是一個概念,具體取決於如何實現,比如在Dart VM中一個isolate可能會是一個執行緒,在Web中可能會是一個Web Worker。

12.Stream 與 Future是什麼關係?
Stream 和 Future 是 Dart 非同步處理的核心 API。Future 表示稍後獲得的一個數據,所有非同步的操作的返回值都用 Future 來表示。但是 Future 只能表示一次非同步獲得的資料。而 Stream 表示多次非同步獲得的資料。比如介面上的按鈕可能會被使用者點選多次,所以按鈕上的點選事件(onClick)就是一個 Stream 。簡單地說,Future將返回一個值,而Stream將返回多次值。Dart 中統一使用 Stream 處理非同步事件流。Stream 和一般的集合類似,都是一組資料,只不過一個是非同步推送,一個是同步拉取。

篇幅原因,為不影響小小夥伴閱讀感受,只列舉了12道題目,更多面試題已整理成文件,會發出來共享檔案的。

Flutter專案

這版塊就得看小夥伴個人是否需要了,可能安卓小夥伴會需要些,前端小夥伴也可以看看,我把Flutter專案都編輯成了一個文件,直接點選標題就可獲取文件噢,先看看都有什麼專案吧。

專案小編就沒有具體展開來講了,都詳細寫在文件中,有哪裡沒有看懂的,建議搭配Flutter學習那個版塊內容看看哈哈哈。

結尾

不管是出自對Flutter感興趣還是對移動端感興趣去學,Flutter是值得每個前端學習的,學習之前建議先鞏固前端的基礎知識,尤其是瀏覽器原理。

現階段越來越多前端開發可能會有 App 相關的業務,這是大前端的趨勢,而Flutter 是更接近 App 的開發框架,它的效能和跨平臺效果上滿足了專案的需求,小夥伴你們覺得呢?歡迎評論區討論噢。

注:文章中小編學習Flutter的視訊學習、電子書學習、Flutter面試題、專案等資料共享給小夥伴們,直接點選這裡就可以喔