flutter 面試題

因為近來公司需要新招flutter的小伙伴,需要我來出一套面試題并面試。我現在整理出來分享給大家。

目前我就想整理出來flutter的,未來會陸續更新ios 和Android native的部分。

1. dart是什么,和flutter有什么關系?

? ? dart是一種面向對象語言,dart是flutter的程序開發語言。

2. main()和runApp()函數在flutter的作用分別是什么?有什么關系嗎?

? ? main函數是類似于java語言的程序運行入口函數

? ? runApp函數是渲染根widget樹的函數

? ? 一般情況下runApp函數會在main函數里執行

3. 什么是widget?? 在flutter里有幾種類型的widget?分別有什么區別?能分別說一下生命周期嗎?? ? ? ??

????widget在flutter里基本是一些UI組件

????有兩種類型的widget,分別是statefulWidget 和 statelessWidget兩種

????statelessWidget不會自己重新構建自己,但是statefulWidget會????

4. Hot Restart 和 Hot Reload 有什么區別嗎?

? ? Hot Reload比Hot Restart快,Hot Reload會編譯我們文件里新加的代碼并發送給dart虛擬機,dart會更新widgets來改變UI,而Hot Restart會讓dart 虛擬機重新編譯應用。另一方面也是因為這樣,?Hot Reload會保留之前的state,而Hot Restart回你重置所有的state回到初始值。

5. 在flutter里streams是什么?有幾種streams?有什么場景用到它?

? ??Stream?用來處理連續的異步操作,Stream?是一個抽象類,用于表示一序列異步數據的源。它是一種產生連續事件的方式,可以生成數據事件或者錯誤事件,以及流結束時的完成事件

? ??Stream?分單訂閱流和廣播流。

? ? 網絡狀態的監控

6.? 簡單說一下在flutter里async和await?

? ? await的出現會把await之前和之后的代碼分為兩部分,await并不像字面意思所表示的程序運行到這里就阻塞了,而是立刻結束當前函數的執行并返回一個Future,函數內剩余代碼通過調度異步執行。

? ? async是和await搭配使用的,await只在async函數中出現。在async 函數里可以沒有await或者有多個await。

7. future 和steam有什么不一樣??

????在 Flutter 中有兩種處理異步操作的方式?Future?和?Stream,Future?用于處理單個異步操作,Stream?用來處理連續的異步操作。

8. 什么是flutter里的key? 有什么用?

? ? key是Widgets,Elements和SemanticsNodes的標識符。

? ? key有LocalKey 和 GlobalKey兩種。

? ?LocalKey?如果要修改集合中的控件的順序或數量。GlobalKey允許 Widget 在應用中的任何位置更改父級而不會丟失 State。

9. 在什么場景下使用profile mode?

? ? profile model 是用來評估app性能的,profile model 和release mode是相似的,只有保留了一些需要評估app性能的debug功能。在模擬器上profile model是不可用的。? ??

10. 怎么做到只在debug mode運行代碼?

? ??foundation有一個靜態的變量kReleaseMode來表示是否是release mode

11. 怎么理解Isolate?? ?

? ???isolate是Dart對actor并發模式的實現。 isolate是有自己的內存和單線程控制的運行實體。isolate本身的意思是“隔離”,因為isolate之間的內存在邏輯上是隔離的。isolate中的代碼是按順序執行的,任何Dart程序的并發都是運行多個isolate的結果。因為Dart沒有共享內存的并發,沒有競爭的可能性所以不需要鎖,也就不用擔心死鎖的問題

12. 列舉在flutter的狀態管理方案?

????Scoped Model

? ? Redux

? ? BLoC

? ? RxDart

????provider

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。