Flutter面试题——面试题整理3
一 面试题汇总
- Dart是值传递还是引用传递?
- 描述Flutter的核心渲染模块三棵树
- flutter 中Widget的分类
- mixin extends implement 之间的关系?
- 简述Dart语言特性
- Dart 中的级联操作符
- Dart 的单线程模型是如何运行的?
- await for 与 stream流
- Stream 与 Future是什么关系?
- Stream 有哪两种订阅模式?分别是怎么调用的?
- Flutter中的Widget、State、Context 的核心概念?是为了解决什么问题?
- Dart异步编程中的 Future关键字?
- Flutter 中的生命周期
- Widget 唯一标识Key
- Flutter是怎么完成组件渲染的?
- PlatformView 以及其原理
- Flutter 线程管理模型
- Flutter状态管理
- isolate是怎么进行通信和实例化的?
- Future还有isolate场景分析?
- Flutter 是如何与原生Android、iOS进行通信的?
- Flutter 绘制流程
- Flutter 的热重载
- Flutter 热更新
- Flutter 动态化方案
二 面试题解答(仅供参考)
2.1 Dart是值传递还是引用传递?
1 | dart是值传递。 |
2.2 描述Flutter的核心渲染模块三棵树
1 | WidgetTree:存放渲染内容、它只是一个配置数据结构,创建是非常轻量的,在页面刷新的过程中随时会重建 |
2.3 flutter 中Widget的分类
1 | 1、组合类:StatelessWidget和StatefulWidget |
2.4 mixin extends implement 之间的关系?
1 | 继承(关键字 extends)、混入 mixins (关键字 with)、接口实现(关键字 implements)。 |
2.5 简述Dart语言特性
1 | 在Dart中,一切都是对象,所有的对象都是继承自Object |
2.6 Dart 中的级联操作符
1 | Dart 当中的 「..」意思是 「级联操作符」,为了方便配置而使用。 |
2.7 Dart 的单线程模型是如何运行的?
1 | Dart 在单线程中是以消息循环机制来运行的, |
2.8 await for 与 stream流
1 | await for一般用在直到Stream什么时候完成, |
2.9 Stream 与 Future是什么关系?
1 | 在 Flutter 中有两种处理异步操作的方式 Future 和 Stream, |
2.10 Stream 有哪两种订阅模式?分别是怎么调用的?
1 | Stream有两种订阅模式:单订阅(single) 和 多订阅(broadcast)。 |
2.11 Flutter中的Widget、State、Context 的核心概念?是为了解决什么问题?
1 | 主要是为了解决多个部件之间的交互和部件自身状态的维护。 |
2.12 Dart异步编程中的 Future关键字?
1 | Dart中,执行一个异步任务使用Future来处理。 |
2.13 Flutter 中的生命周期
2.14 Widget 唯一标识Key
1 | GlobalKey:确保生成的Key在整个应用中唯一,是很昂贵的,允许element在树周围移动或变更父节点而不会丢失状态; |
2.15 Flutter是怎么完成组件渲染的?
1 | 在计算机系统中,图像的显示需要CPU、GPU和显示器一起配合完成CPU负责图像数据计算, |
2.16 PlatformView 以及其原理
1 | Flutter 中通过 PlatformView 可以嵌套原生 View 到 Flutter UI 中, |
2.17 Flutter 线程管理模型
1 | Flutter Engine层会创建一个Isolate,并且Dart代码默认就运行在这个主Isolate上。 |
2.18 Flutter状态管理
1 | Flutter的状态可以分为全局状态和局部状态两种。 |
2.19 isolate是怎么进行通信和实例化的?
1 | 1、isolate实际就是一个隔离的Dart执行的上下文环境(或者容器) |
2.20 Future还有isolate场景分析?
1 | 1、如果一段代码不会被中断,那么就直接使用正常的同步执行就行。 |
2.21 Flutter 是如何与原生Android、iOS进行通信的?
1 | Flutter 通过 PlatformChannel 与原生进行交互,其中 PlatformChannel 分为三种: |
2.22 Flutter 绘制流程
1 | Flutter只关心向 GPU提供视图数据,GPU的 VSync信号同步到 UI线程,UI线程使用 Dart来构建抽象的视图结构, |
2.23 Flutter 的热重载
1 | Flutter 的热重载是基于 JIT 编译模式的代码增量同步。 |
2.24 Flutter 热更新
1 | Android: |
2.25 Flutter 动态化方案
1 | 基本思路: |
三 参考
- 简书—Flutter高级面试题&答案