安卓2024面试题,一文搞定Dart入门,Android插件化+模块化+组件化+热修复

匿名函数

​ 多数函数是有名字的, 比如 main()printElement()。 也可以创建没有名字的函数,这种函数被称为 匿名函数, 有时候也被称为 lambda 或者 closure

​ 如果匿名函数只有一条语句同样可以使用 =>简写

​ 下面例子中定义了一个包含一个无类型参数 item 的匿名函数。 list 中的每个元素都会调用这个函数,打印元素位置和值的字符串。

var list = [‘apples’, ‘bananas’, ‘oranges’];

list.forEach((item) {

print(‘${list.indexOf(item)}: $item’);

});

闭包

​ 闭包:既一个函数对象,即使函数对象的调用在它的原始作用域之外,依然能够访问在它次法作用域内的变量

返回值

所有函数都会返回一个值。 如果没有明确指定返回值, 函数体会被隐式的添加 return null; 语句。

foo() {}

assert(foo() == null);

常用的操作符


类型判定运算符

  • as 将对象强制转换为特定类型

  • is 是否是某种类型,相当于java instanceof

  • is! 是否不是某种类型

条件表达式

  • condition ? expr1 : expr2

如果条件为 true, 执行 expr1 (并返回它的值): 否则, 执行并返回 expr2 的值。

  • expr1 ?? expr2

如果 expr1 是 non-null, 返回 expr1 的值; 否则, 执行并返回 expr2 的值。

级联运算符 (…)

​ 级联运算符 (..) 可以实现对同一个对像进行一系列的操作。

非空调用

​ 如:a?.b 相当于 a == null ? null : a.b

三目赋值运算符

​ 如:a ??= b 相当于 a = a == null ? b : a

整除

​ 如:a ~/ b 等价于 (a /b) as int

控制流程语句


if and else

//和 JavaScript 不同, Dart 的判断条件必须是布尔值,不能是其他类型

if (isRaining()) {

you.bringRainCoat();

} else if (isSnowing()) {

you.wearJacket();

} else {

car.putTopDown();

}

for loops

//方式一var message = StringBuffer(‘Dart is fun’);for (var i = 0; i < 5; i++) { message.write(‘!’);}//方式二candidates.forEach((candidate) => candidate.interview());//方式三var collection = [0, 1, 2];for (var x in collection) { print(x); // 0 1 2}

while and do-while loops

while (!isDone()) { doSomething();}

do { printLine();} while (!atEndOfPage());

break and continue

  • Break:停止循环

  • Continue: 跳转到下一次迭代

switch and case

​ 在 Dart 中 switch 语句使用 == 比较整数,字符串,或者编译时常量。 比较的对象必须都是同一个类的实例(并且不可以是子类), 类必须没有对 == 重写。 枚举类型 可以用于 switch 语句。

  • case 语句中,每个非空的 case 语句结尾需要跟一个 break 语句

assert

  • 如果 assert 语句中的布尔条件为 false , 那么正常的程序执行流程会被中断。

  • assert 语句只在开发环境中有效, 在生产环境是无效的; Flutter 中的 assert 只在 debug 模式 中有效。

异常


​ Dart 代码可以抛出和捕获异常。 异常表示一些未知的错误情况。 如果异常没有被捕获, 则异常会抛出, 导致抛出异常的代码终止执行。

​ Dart 提供了 ExceptionError 类型, 以及一些子类型。 当然也可以定义自己的异常类型。 但是,此外 Dart 程序可以抛出任何非 null 对象, 不仅限 Exception 和 Error 对象。

  • 也可以throw 'beason is null’抛出任意对象

throw FormatException(‘Expected at least 1 section’);throw ‘Out of llamas!’;

  • 使用On来制定类型,catch捕获,try{}on Exception catch(e){}

try { breedMoreLlamas();} on OutOfLlamasException { buyMoreLlamas();}

  • catch函数可以制定1-2个参数,第一个为异常对象,第二个为堆栈信息

try { // ···} on Exception catch (e) { print(‘Exception details:\n $e’);} catch (e, s) { print(‘Exception details:\n $e’); print(‘Stack trace:\n $s’);}

  • 不管是否抛出异常, finally 中的代码都会被执行。 如果 catch 没有匹配到异常, 异常会在 finally 执行完成后,再次被抛出:


​ Dart 是一种基于类和 mixin 继承机制的面向对象的语言。 每个对象都是一个类的实例,所有的类都继承于 Object. 。 基于 * Mixin 继承* 意味着每个类(除 Object 外) 都只有一个超类, 一个类中的代码可以在其他多个继承类中重复使用。

使用类的成员变量

  • 使用 (.) 来引用实例对象的变量和方法

  • 使用 ?. 来代替 . , 可以避免因为左边对象可能为 null , 导致的异常。

  • 使用对象的 runtimeType 属性, 可以在运行时获取对象的类型, runtimeType 属性回返回一个 Type 对象。

类的定义用 class 关键字,如果未显式定义构造函数,会默认一个空的构造函数,这一点与 Java是一样的

通过 构造函数 创建对象。 构造函数的名字可以是 *ClassName* 或者 `ClassName.identifier

构造函数

默认构造函数

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

如果你进阶的路上缺乏方向,可以加入我们的圈子和安卓开发者们一起学习交流!

  • Android进阶学习全套手册

    img

  • Android对标阿里P7学习视频

    img

  • BATJ大厂Android高频面试题

    img

最后,借用我最喜欢的乔布斯语录,作为本文的结尾:

人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值