Flutter中文社区Flutter圈子Flutter

如何让Flutter为你的面试加分

2019-10-21  本文已影响0人  面朝对象_春暖花开
我是9月份初面试的,面试了头条、蚂蚁金服、快手等,都或多或少问到了flutter,通过flutter对比来展开面试。
我知道的大前端技术,有RNwebview、然后就是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.png
iPhone 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.png
Sumsung S8 7.0
image.png

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那种动态寻址。)

面试官的第三题:对于新技术,如何一步一步实现业务落地的。

轮子如下图:


image.png

由此看来,整套ci方案需要做的工作很多,但是面试上能说出来,让面试官清楚我们的思路,就能过。

`

上一篇 下一篇

猜你喜欢

热点阅读