我是9月份初面试的,面试了头条、蚂蚁金服、快手等,都或多或少问到了flutter
,通过flutter
对比来展开面试。
我知道的大前端
技术,有RN
、webview
、然后就是flutter
,每种技术解决的痛点:
1、Write once, run anywhere
2、动态更新,避过苹果大大
审核周期长的问题。
3、性能不能拉跨,也就是说不能因为解决前两个问题而降低用户体验。
所以在目前每个大厂都在或多或少的对
flutte有投入,比如我们公司,目前
flutter的CI方案已经落地了,接下来会根据业务有选择性的使用
flutter开发了。
正题如下:
面试官的第一题:自己对比过flutter和RN吗?从什么方面进行对比的,得到了哪些结论?
借鉴文章及自己的总结:
下面对比是借用闲鱼在商品详情页上的性能指标分析:
指标
:CPU占用率
、内存
、FPS
机型
:
iOS:iPhone 5c 9.0.1 / iPhone 6s 10.3.2
Android:Xiaomi 2s 5.0.2 / Sumsung S8 7.0
ios
测试分析如下:
iPhone 5c 9.0.1
image.pngiPhone 6s 10.3.2
image.png在iOS
上结论:
1、Flutter在低端和中端的iOS机型上,FPS的表现都优于RN。
2、CPU的使用上Flutter在低端机上表现略差于RN,中端机型略优于RN。
3、值得注意的是内存上的表现(上图红色箭头区域),Flutter在低端机型上的起始内存和RN几乎一致,在中端机型上会多30M左右的内存(分析为Dart VM的内存)。可以想到这应该是Flutter针对低端和中端机型上内存策略是不一样的,可用内存少的机型,Dart VM的初始内存少,运行时进行分配(这样也可以理解为什么在低端机上带来了更多的CPU损耗),中端机器上预分配了更多的VM内存,这样在处理时会更加的游刃有余,减少CPU的介入,带来更流畅的体验。可以看出,Flutter团队在针对不同机型上处理更加的细腻,目的就是为了带来稳定流畅的体验。
android
测试分析如下:
Xiaomi 2s 5.0.2
image.pngSumsung S8 7.0
image.png注: MFS - Max Frame Space: 指的是去掉buffer之后的两帧的时间差
在android
上结论:
1、Flutter在高低端机的CPU上的表现都优于RN,尤其在低端的小米2s上有着更优的表现
2、Android端在原来FPS基础上增加了流畅度的指标,FPS和流畅度的表现Flutter优于RN
3、Android端的内存也是值得关注的一点,在小米2s上起始内存Flutter明显比RN多40M,RN在测试过程中内存飞涨,Flutter相比之下会更稳定,内存上RN侧的代码是需要调优的,同一套代码Flutter在Android和iOS上并没有很大的差异,但是RN的却要在单端调优,Flutter在这项比拼上又更胜一筹。
比较奇怪的是三星S8上Flutter和RN的初始内存是一致的,猜测是RN在Android高端机型上也会预分配一些内存,具体细节还需要更进一步的研究。
面试官的第二题:啥叫JIT和AOT,他们有啥区别。
1、名字不同。
JIT : Just-in-time 表示一边运行、一边编译。
AOT: Ahead-Of-Time 在运行之前编译。
因此:JIT相当于JS在webview上运行,需要一个虚拟机一边运行一边解释。AOT相当于OC,代码在使用之前就被LLVM编译成机器码了。
上面说到的这个虚拟机叫dart VM
。
2、运行效率不同。
JIT的实时编译肯定会占用运行时资源,各个指标性能会降低。
AOT具有媲美甚至高于native的指标。
3、热更是否支持不同。
JIT运行着dart解释器,其运行的就是dart的源码,所以支持动态下发
AOT运行的是已经编译好的代码,其运行的只能是机器支持的指令序列,连指令都固定了,当然不能热更(dart运行时没有像iOS runtime那种动态寻址。)
面试官的第三题:对于新技术,如何一步一步实现业务落地的。
-
注:我理解这个题,就是考验程序员如何造轮子,实现技术为业务服务的。
虽然Flutter提供了开发框架、IDE等相对丰富的开发工具,但从企业级应用迭代工程角度看,还需要对接大量现有移动端基础设施和工具(如大团队协作、CI、厂内组件库、发布运维基建等)才能够支撑起公司内的业务持续交付、快速迭代和线上运维。所以我们所造的轮子,需要涵盖开发
、调试
、测试
、发布
、线上运维
及工程管理
整套闭环,目标是让拥有基本Flutter
开发技能的同学,快速上手业务开发和迭代。所以整套工具设施围绕工程初始化
、开发
、调试
、构建
、发布
、集成
等标准工作流程搭建。
轮子如下图:
image.png
由此看来,整套ci方案需要做的工作很多,但是面试上能说出来,让面试官清楚我们的思路,就能过。
`
网友评论