前言
在呈现 Flutter 起,有不少互联网大厂投入实际,先是有闲鱼团队大规模引入 Flutter,后有飞猪、百度贴吧、今日头条、西瓜视频、美团外卖、京东商城等团队在多个场景着落地了 Flutter 我的项目。而我一个大学室友看准了风口,工作两年了,决定转战 Flutter,指标阿里咸鱼,这对于他来说是个挑战,在 Flutter 这方面常识还是有所欠缺,就疫情那会为筹备面试在家学习 Flutter,学的脑袋嗡嗡的,好在最初拿到了阿里咸鱼 offer。
Flutter 面试筹备
简略看一个框架知识点必定是不行,就理解了 Flutter 是什么,怎么用,优缺点等,当然理解是对的,要是去面试还得深刻点。在零碎学习 Flutter 这块,室友是看视频和电子书学习,具体是具体,就是有点费脑子。
视频学习
视频教学分为理论知识、进入实战、进阶晋升三局部。
理论知识
这部分讲到意识视图、布局与列表、状态治理、路由与导航、线程与异步 UI、Dart 根底疾速入门、表单输出与富文本、Flutter 入门基础知识、我的项目构造、资源、依赖和本地化、什么是申明式 UI 视频、Flutter 调试技巧、学习构建 Flutter 等内容,综合来说,理论知识这部分次要是讲开发工具抉择与开发环境搭建指南、上手 Flutter、Flutter 理论知识理解,并单个视频都有相应文字版的文档解说,更不便学习和了解。
进入实战
这部分是讲到了 APP 导航框架与罕用性能实现,比方 APP 首页框架搭建 -Scaffold 与 PageView、APP 首页框架搭建 - 我的项目实际、轮播图 Banner 性能开发、自定义 AppBar 实现滚动突变等内容,这个视频内容还是得重复看,能力消化。
进阶晋升
这部分内容视频能够说是重中之重,重头戏吧,波及到网络编程与数据存储技术相干教训和技巧、玩转列表组件、Flutter,Native 混合开发、App 首页性能开发、搜寻模块开发、开发包和插件开发、智能 AI 语音搜寻模块实现、打包公布 Flutter 利用等内容,真不亏是进阶,缓缓啃下来把。
小编光和小伙伴们说的内容就有这么多,但远远还不止哦,既然要学习就不要停留在外表。
电子书学习
室友整顿些无关 Flutter 的电子书,包含了 Flutter 官网文档具体翻译、Flutter 技术进阶、Flutter 跨平台开发全套电子书、Flutter 根底学习 PDF、Flutter 技术入坑指南总结(阿里闲鱼)等,能够先从 Flutter 技术入坑指南总结看起,比拟好承受,再看 Flutter 官网文档具体翻译时,就会比拟好懂不会感觉乏味了。
集体学习心得:不论是看视频还是电子书学习,肯定要做笔记,把重要的、不会不懂的点等记录下来,做的笔记梳理成本人的脑图或文档,这个过程也是加深对内容的印象和了解。
Flutter 面试
面试时无关 Flutter 问的面试题不多,好在面试前端做了筹备,还是要理解下 iOS 或者 Android 的原生相干常识,小编把被问到的及小编整顿的面试题及答案列举一部分,看看对于 Flutter 都会问什么。
1.Flutter 是什么
Flutter 是谷歌的挪动 UI 框架,能够疾速在 iOS 和 Android 上构建高质量的原生用户界面。Flutter 能够与现有的代码一起工作。在全世界,Flutter 正在被越来越多的开发者和组织应用,并且 Flutter 是完全免费、开源的。
Flutter 个性有哪些?
疾速开发(毫秒级热重载)
- 壮丽 UI(内建丑陋的质感设计 Material Design 和 Cupertino Widget 和丰盛平滑的动画成果和平台感知)
- 响应式(Reactive,用弱小而灵便的 API 解决 2D、动画、手势、成果等难题)
- 原生拜访性能
- 堪比原生性能
3. Flutter 和 Dart 的关系是什么?
Flutter 是一个应用 Dart 语言开发的跨平台挪动 UI 框架,通过自建绘制引擎,能高性能、高保真地进行挪动开发。Dart 囊括了少数编程语言的长处,它更合乎 Flutter 构建界面的形式。
4. Dart 语言的个性?
- Productive(生产力高,Dart 的语法清晰明了,工具简略但功能强大)
- Fast(执行速度快,Dart 提供提前优化编译,以在挪动设施和 Web 上取得可预测的高性能和疾速启动。)
- Portable(易于移植,Dart 可编译成 ARM 和 X86 代码,这样 Dart 挪动应用程序能够在 iOS、Android 和其余中央运行)
- Approachable(容易上手,充沛排汇了高级语言个性,如果你曾经晓得 C ++,C 语言,或者 Java,你能够在短短几天内用 Dart 来开发)
- Reactive(响应式编程)
5. Dart 的一些重要概念?
- 在 Dart 中,一切都是对象,所有的对象都是继承自 Object
- Dart 是强类型语言,但能够用 var 或 dynamic 来申明一个变量,Dart 会主动推断其数据类型,dynamic 相似 c#
- 没有赋初值的变量都会有默认值 null
- Dart 反对顶层办法,如 main 办法,能够在办法外部创立办法
- Dart 反对顶层变量,也反对类变量或对象变量
- Dart 没有 public protected private 等关键字,如果某个变量以下划线(_)结尾,代表这个变量在库中是公有的
6. dart 是值传递还是援用传递?
援用传递
7.Widget 和 element 和 RenderObject 之间的关系?
- Widget 是用户界面的一部分, 并且是不可变的。
- Element 是在树中特定地位 Widget 的实例。
- RenderObject 是渲染树中的一个对象,它的层次结构是渲染库的外围。
8. mixin extends implement 之间的关系?
继承(关键字 extends)、混入 mixins(关键字 with)、接口实现(关键字 implements)。这三者能够同时存在,前后程序是 extends -> mixins -> implements。
Flutter 中的继承是单继承,子类重写超类的办法要用 @Override,子类调用超类的办法要用 super。
在 Flutter 中,Mixins 是一种在多个类层次结构中复用类代码的办法。mixins 的对象是类,mixins 绝不是继承,也不是接口,而是一种全新的个性,能够 mixins 多个类,mixins 的应用须要满足肯定条件。
9. 应用 mixins 的条件是什么?
因为 mixins 应用的条件,随着 Dart 版本始终在变,这里讲的是 Dart2.1 中应用 mixins 的条件:
mixins 类只能继承自 object
mixins 类不能有构造函数
一个类能够 mixins 多个 mixins 类
能够 mixins 多个类,不毁坏 Flutter 的单继承
10.Flutter main future mirotask 的执行程序?
一般代码都是同步执行的,完结后会开始查看 microtask 中是否有工作,若有则执行,执行完持续查看 microtask,直到 microtask 列队为空。最初会去执行 event 队列(future)。
11.Future 和 Isolate 有什么区别?
uture 是异步编程,调用自身立刻返回,并在稍后的某个时候执行实现时再取得返回后果。在一般代码中能够应用 await 期待一个异步调用完结。
isolate 是并发编程,Dartm 有并发时的共享状态,所有 Dart 代码都在 isolate 中运行,包含最后的 main()。每个 isolate 都有它本人的堆内存,意味着其中所有内存数据,包含全局数据,都仅对该 isolate 可见,它们之间的通信只能通过传递音讯的机制实现,音讯则通过端口 (port) 收发。isolate 只是一个概念,具体取决于如何实现,比方在 Dart VM 中一个 isolate 可能会是一个线程,在 Web 中可能会是一个 Web Worker。
12.Stream 与 Future 是什么关系?
Stream 和 Future 是 Dart 异步解决的外围 API。Future 示意稍后取得的一个数据,所有异步的操作的返回值都用 Future 来示意。然而 Future 只能示意一次异步取得的数据。而 Stream 示意屡次异步取得的数据。比方界面上的按钮可能会被用户点击屡次,所以按钮上的点击事件(onClick)就是一个 Stream。简略地说,Future 将返回一个值,而 Stream 将返回屡次值。Dart 中对立应用 Stream 解决异步事件流。Stream 和个别的汇合相似,都是一组数据,只不过一个是异步推送,一个是同步拉取。
篇幅起因,为不影响小小搭档浏览感触,只列举了 12 道题目,更多面试题已整顿成文档,会收回来共享文件的。
Flutter 我的项目
这版块就得看小伙伴集体是否须要了,可能安卓小伙伴会须要些,前端小伙伴也能够看看,我把 Flutter 我的项目都编辑成了一个文档,间接点击题目就可获取文档噢,先看看都有什么我的项目吧。
- 我的项目一:Flutter – 实现支付宝、微信领取
- 我的项目二:京东技术的 Flutter 实际之路
- 我的项目三:Flutter 实现一个酷炫带动画的列表型多选日历组件
- 我的项目四:Flutter 仿滴滴出行 App
- 我的项目五:阿里闲鱼 Flutter 架构演进和实际
- 我的项目六:Flutter 的原理及美团的实际
我的项目小编就没有具体开展来讲了,都具体写在文档中,有哪里没有看懂的,倡议搭配 Flutter 学习那个版块内容看看哈哈哈。
结尾
不论是出自对 Flutter 感兴趣还是对挪动端感兴趣去学,Flutter 是值得每个前端学习的,学习之前倡议先坚固前端的基础知识,尤其是浏览器原理。
现阶段越来越多前端开发可能会有 App 相干的业务,这是大前端的趋势,而 Flutter 是更靠近 App 的开发框架,它的性能和跨平台成果上满足了我的项目的需要,小伙伴你们感觉呢?欢送评论区探讨噢。