阿里面试:用过Flutter吗--Flutter架构是怎么样?为什么会比其他如ReactNat ...

打印 上一主题 下一主题

主题 793|帖子 793|积分 2379

这篇文章 从原理层说明他们的区别
求职者: 应该做好被虐的预备。假如看了这篇文章,应付下来根本没有多大的问题
在Flutter诞生之前,已经有许多跨平台UI框架的方案,比如基于WebView的Cordova、AppCan等,尚有使用HTML+JavaScript渲染成原生控件的React Native、Weex等。
  更多面试内容,面试专题,flutter视频 全套,音视频从0到高手开发。
关注GitHub:https://github.com/Timdk857/Android-Architecture-knowledge-2-
免费获取面试PDF合集
VX:【xxTanglin】
1.0 框架架构

反观Flutter

首先看一下Flutter的架构图

1.1 Flutter三层架构

   Framework
Engine
Embedder
  1.Framework使用dart实现,包罗Material Design风格的Widget,Cupertino(针对iOS)风格的Widgets,文本/图片/按钮等底子Widgets,渲染,动画,手势等。此部分的核心代码是:flutter仓库下的flutter package,以及sky_engine仓库下的io,async,ui(dart:ui库提供了Flutter框架和引擎之间的接口)等package。

2.Engine使用C++实现,主要包罗:Skia,Dart和Text。Skia是开源的二维图形库,提供了实用于多种软硬件平台的通用API
3.Embedder是一个嵌入层,即把Flutter嵌入到各个平台上去,这里做的主要工作包罗渲染Surface设置,线程设置,以及插件等。从这里可以看出,Flutter的平台相干层很低,平台(如iOS)只是提供一个画布,剩余的所有渲染相干的逻辑都在Flutter内部,这就使得它具有了很好的跨端一致性。
从架构图可以看出,重新到尾重写一套跨平台的UI框架,包罗UI控件、渲染逻辑甚至开发语言。渲染引擎依靠跨平台的Skia图形库来实现,依靠系统的只有图形绘制相干的接口,可以在最大程度上保证不同平台、不同设备的体验一致性,逻辑处理使用支持AOT的Dart语言,执行服从也比JavaScript高得多
1.2 、万物皆widget

   目前上主流的头脑,都希望将各个ui控件接耦,逐步演变出组件化的头脑。
  Flutter控件主要分为两大类,


  • StatelessWidget
  • StatefulWidget,
StatelessWidget用来展示静态的文本大概图片,假如控件必要根据外部数据大概用户操作来改变的话,就必要使用StatefulWidget。
State的概念也是来源于Facebook的流行Web框架React,React风格的框架中使用控件树和各自的状态来构建界面,当某个控件的状态发生变化时由框架负责对比前后状态差异并且采取最小代价来更新渲染结果。
1.3 绘图根本原理

从下图这里可以看出 Flutter和 React-Native之众的本质区别:React-Native之类只是扩展调用 OEM组件,而 Flutter是自己渲染。
在 Flutter Architecture的表明中,Google还提供了一张更为详尽的图来表明 Flutter的原理:

​ 这张图表明得更清晰一些:Flutter只关心向 GPU提供视图数据,GPU的 VSync信号同步到 UI线程,UI线程使用 Dart来构建抽象的视图结构,这份数据结构在 GPU线程举行图层合成,视图数据提供给 Skia引擎渲染为 GPU数据,这些数据通过 OpenGL大概 Vulkan提供给 GPU。
​ 以是 Flutter并不关心体现器、视频控制器以及 GPU详细工作,它只关心 GPU发出的 VSync信号,尽可能快地在两个 VSync信号之间盘算并合成视图数据,并且把数据提供给 GPU。
1.4 Flutter面试会出现的几个问题

   了解 Flutter的根本概念后,自然有几个疑问亟待解决。
  1.4.1 为什么使用 Dart?能说说其中的缘故起因吗

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到如今。
深知大多数Android工程师,想要提升技能,每每是自己摸索成长大概是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技能停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初志也很简朴,就是希望能够帮助到想自学提升又不知道该从何学起的朋侪,同时减轻各人的负担。







既有得当小白学习的零底子资料,也有得当3年以上履历的小同伴深入学习提升的进阶课程,根本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码课本、实战项目、讲解视频,并且后续会连续更新
假如你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)

面试宝典

面试必问知识点、BATJ历年历年面试真题+解析

学习履历总结

(一)调整好心态
心态是一个人可否乐成的关键,假如不调整好自己的心态,是很难静下心来学习的,尤其是如今这么浮躁的社会,大部分的步伐员的现状就是三点一线,感觉很累,一些大龄的步伐员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越剧烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋。如许的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。
(二)时间挤一挤,订定好计划
一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。另外,订定好学习计划也是很有必要的,有逻辑有条理的复习,先查漏补缺,然后再系统复习,如许才能够做到事半功倍,效果才会立竿见影。
(三)不断学习技能知识,更新自己的知识储备
对于一名步伐员来说,技能知识方面黑白常重要的,可以说是重中之重。**要面试大厂,自己的知识储备一定要非常丰富,若缺胳膊少腿,别说在现实工作当中,光是面试这一关就过不了。**对于技能方面,首先底子知识一定要扎实,包罗自己方向的语言底子、盘算机底子、算法以及编程等等。
一个人可以走的很快,但一群人才能走的更远。岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技能交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技能交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中…(img-XBaI59Ow-1712774448637)]

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表