前言
在呈现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 的开发框架,它的性能和跨平台成果上满足了我的项目的需要,小伙伴你们感觉呢?欢送评论区探讨噢。
发表回复