Flutter面试题

flutter 知识点总结(一)

2020-12-03  本文已影响0人  喜剧收尾_XWX

文档参考 https://zhuanlan.zhihu.com/p/102193331
请直接参考原文


1.Dart中的..表示什么意思?

Dart中的..表示 级联操作符,为了方便配置而使用。...不同的是调用..后返回的this.而.返回的则是该方法的返回值。

2.Dart的作用域

Dart是没有publicprivate关键字的,默认就是公开的,私有变量使用下划线_开头

3.Dart是不是单线程模型?是如何运行的?

运行流程图

4.Dart是如何实现多任务并行的

Isolate可以把它理解为Dart中的线程。但它又不同于线程,更恰当的说应该是微线程。它与线程最大的区别就是不能共享内存,因此也不存在锁竞争问题,两个Isolate完全是两条独立的执行线,且每个Isolate都有自己的事件循环,它们之间只能通过发送消息通信,所以它的资源开销低于线程。

Isolate交互

5.说下Dart异步编程中的Future关键字?

在dart编程中,经常会使用Future来处理异步或者延时处理等任务操作。在dart的每一个isolate中,执行的优先级为:Main-MicroTask-EventQueue

6.说下Dart异步编程中的Stream数据流

7. await for如何使用?

await for是用来不断获取stream流中的数据,然后执行循环体中的操作。它一般用在直到stream什么时候完成,并且必须等待传递完成后才能使用,不然会阻塞。

Stream<String> stream = new Stream<String>.fromIterable(['不开心', '面试', '没', '过']);
main() async{
    await for(String s in stream){
    print(s);
  }
}

8.说下mixin机制?

9.介绍下flutter框架,以及优缺点

google退出的跨平台UI框架,可以快速在Android、ios上构建应用

优点

缺点

10.介绍下flutter的理念架构

flutter的理念架构
flutter自下而上分为EmbedderEngineFramework三层。

11.flutter的EngineFramework作用

12.介绍下Widget、State、Context概念

13.简述StatelessWidgetStatefulWidget

14.StatefulWidget生命周期

生命周期

创建并打开:initState->didChangeDependencies->build.
横竖屏切换:didUpdateWidget->build 当前值保留
离开页面:deactivate->dispose 重新进入init重新初始化
热重载执行:reassemble->didUpdateWidget->build
调用setState->build

15.说下Widgets、RenderObjects和Elements的关系

16.什么是状态管理,你了解那些状态管理框架?

Flutter中的状态和前端React中的状态概念是一致的。React框架核心是组件化,应用由组件搭建而成,组件最重要的概念就是状态,状态是一个组件的UI数据模型,是组件渲染的数据依据。
Flutter的状态分为全局状态和局部状态两种。推荐使用Google退出的Provider

17.简述Flutter的绘制流程

flutter绘制流程

Flutter只关心向GPU(图形处理器)提供视图数据,GPU的vsync(垂直同步)信号同步到UI线程,UI线程使用dart来构建抽象的视图结构,这份数据结构在GPU线程进行图层合成。,这些数据提供给skia引擎渲染为GPU数据,这些数据通过openGL或者Vulkan提供给过给GPU

18.简述Flutter的线程管理模型

flutter Engine层的架构示意图

19. Flutter是如何与原生Android、iOS进行通信的?

flutter 通过PlatformChannel与原生进行交互,其中PlatformChannel分为如下三种:

同时 Platform Channel 并非是线程安全的

20.简述Flutter的热重载

上一篇下一篇

猜你喜欢

热点阅读