flutter面试题

1、两个状态树分别是什么,并写出其对应的生命周期:

  • StatefulWidget:
    正常情况:initState -> didChangeDependencies -> build ->deactivate->dispose
    JIT热更新时:reassemble ->build
  • StateLessWidget:
    build
  • 其中didChangeDependencies方法
    不仅在initState后执行,在InheritedWidget,provider共享状态树 数据发生变化时也执行。

2、mixin extends implements 之间的关系:

extends: 继承单个类
implements:dart没有关键词interface,可用抽象类
mixin: 类似多继承,mixin多个时,按继承的最后类来实现。

3、flutter使用了两种编译方式,分别是什么:

  • JIT (just in time) 即时编译,用在flutter 热更新上:
    吞吐量高,有运行时性能加成,可以跑得更快,并可以做到动态生成代码等,但是相对启动速度较慢,并需要一定时间和调用频率才能触发 JIT 的分层机制。
  • AOT (Ahead Of Time)运行前编译,用在构建apk:
    内存占用低,启动速度快,可以无需 runtime 运行,直接将 runtime 静态链接至最终的程序中,但是无运行时性能加成,不能根据程序运行情况做进一步的优化

4、在树中是如何做到数据共享的:

本质上都是经过数据共享(InheritedWidget)来实现,
数据发生变化时,会把所有子节点树依赖数据共享树都更新。

源码地址:
https://github.com/azhansy/flutter_knowledge

你可能感兴趣的:(flutter面试题)