flutter面试题

作者: azhansy | 来源:发表于2022-06-22 18:59 被阅读0次

    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面试题

        本文链接:https://www.haomeiwen.com/subject/crluvrtx.html