1. 下面关于Dart语言说法正确的是?
-
A、Dart是少数同时支持JIT和AOT的语言之一。
-
B、Dart中的Isolate共享内容,属于多线程模型。
-
C、Dart中在创建对象的时候,需要先查找可用内存。
-
D、Dart语言跟JavaScript一样,是一门解释型的语言。
2. 下面关于变量定义的说法正确的是?
-
A、Dart中可以使用var来声明一个变量,表示该变量类型可以随意更改。
-
B、Dart中可以使用dynamic来声明一个变量,表示该变量类型交给编译器去推断决定,确定后无法更改类型。
-
C、Dart中使用静态类型声明变量后,该变量的类型无法再次更改。
-
D、Dart中使用Object声明一个变量,表示该变量类型是Object类型,后期无法更改其类型。
3. 下面关于常量定义说法错误的是?
-
A、const表示变量在编译期间就确定的值。
-
B、final定义的变量是在运行时确定值。
-
C、
const list = [1,2,3];list[0]=10;
该行代码会报错。 -
D、
final list = [1,2,3];list[0]=10;
改行代码会报错。
4. 关于变量的默认值说法正确的是?
-
A、在Dart语言中,基础类型的默认值是undefined,复杂类型的默认值是null。
-
B、在Dart语言中,所有未初始化的变量默认值都是null。
-
C、在Dart语言中,数字类型变量,未初始化的默认值是0。
-
D、在Dart语言中,String类型变量,未初始化的默认值为''。
5. 关于数字类型说法正确的是?
-
A、字符串
'123'
不能转换成int类型123
。 -
B、字符串类型
'123.123'
不能转换成double类型123.123
-
C、
int
类型和double
类型都是num的子类型。 -
D、
123.123.ceil()
返回值是一个int类型的123
6. 下面关于字符串类型说法错误的是?
-
A、可以使用单引号、双引号创建字符串。
-
B、字符串拼接可以使用
+
操作符。 -
C、两个字符串拼接,中间的操作符不可以省略。
-
D、可以使用
${expression}
将表达式的结果解析到字符串中。
7.创建多行字符串的方法正确的是?
-
A、var s1 = ''' 我可以 创建 多行字符串。 ''';
-
B、var s2 = """ 我可以 创建 多行字符串。 """;
-
C、以上两项都正确
-
D、以上两项都不正确
8. 关于布尔类型说法正确的是?
-
A、布尔类型字面量有true和false。
-
B、在Dart中使用bool显式声明一个布尔类型,其默认值为false。
-
C、可以将一个null隐式转换成一个布尔类型。
-
D、可以将undefined音声转换成布尔类型。
9. 下面选项中正确的是?
-
A、bool isTure; if(isTure){ print('是真的!'); }
-
B、var isTure; if(isTure){ print('是真的!'); }
-
C、bool isTure = false; if(isTure){ print('是真的!'); }
-
D、var str = '是真的!' print( str ? str : '是假的!');
10. 下面关于Dart语言中list的操作错误的是?
List list = [1, 2, 3, 4, 5];
-
A、print(list.first); // 1
-
B、print(list.last); // 5
-
C、print(list.slice(2,3)); // [3]
-
D、print(list.join('|')); // 1|2|3|4|5
11. 关于Dart语言中map类型的描述错误的是?
-
A、map类型是一个关联键和值的对象。
-
B、map类型中每个键只能出现一次。
-
C、map类型可以通过构造函数来创建。
-
D、map类型的键只能为String类型。
12. 关于Dart语言中函数的使用错误的是?
-
A、函数是一等公民。
-
B、箭头函数没有返回值。
-
C、函数的参数分为普通参数和可选参数。
-
D、函数的可选参数分为可选位置参数和可选命名参数。
13. 关于Dart语言中,函数的参数描述正确的是?
-
A、函数可以作为返回值使用。
-
B、函数可以赋值给一个变量。
-
C、函数可以当作另一个函数的参数使用。
-
D、以上都正确。
14. 关于Dart语言中,函数可选参数描述错误的是?
-
A、可选位置参数使用[]来标记。
-
B、可选命名参数使用{}来标记。
-
C、可选参数可以同时是可选位置参数和可选命名参数。
-
D、可选参数可以使用=来设置默认值
15. 关于Dart语言中,main函数的描述错误的是?
-
A、每个Dart程序必须要有一个main函数作为程序的入口点
-
B、在启动程序的时候,可以对main函数进行传参。
-
C、两项都正确。
-
D、两项都不正确。
16. 下边表达式结果正确的是?
-
A、var a = 1; print(a++); // 2
-
B、var a; print( a ?? 10); // 10
-
C、var a; print(a?.length); // 0
-
D、var a; print( a ? a: 0); // 0
17. 下边运行结果正确的是?
-
A、bool isRaining; if(isRaining){ print('带伞'); }else { print('阳光明媚'); } // 阳光明媚
-
B、String isRaining = 'true'; if(isRaining){ print('带伞'); }else { print('阳光明媚'); } // 带伞
-
C、两项都正确。
-
D、两项都不正确。
18. 下面关于运行结果正确的是? var list = []; for(var i = 0; i< 2; i++) { list.add(()=print(i)); } list.forEach((c)=>c());
-
A、0 1
-
B、0 0
-
C、1 1
-
D、2 2
19. 关于Dart语言中异常处理描述错误的是?
-
A、异常的抛出使用throw关键字。
-
B、异常捕获会阻止异常传播。
-
C、异常抛出只能是异常对象或者错误对象。
-
D、处理抛出多种异常类型代码,可以指定多个catch子句。
20. 下面关于类的描述,正确的是?
-
A、定义一个普通类,该类型没有父类。
-
B、获取对象类型可以是用type属性。
-
C、所有的实例变量都会生成隐式getter和setter。
-
D、类的构造函数名何以是类名构造函数和命名构造函数。
21. 下面关于类的描述错误的有?
-
A、使用构造函数创建对象的时候,必须使用new关键字。
-
B、如果没有声明构造函数,则该类没有构造函数。
-
C、子类的构造函数可以从父类继承。
-
D、根据Dart代码风格,只有在命名冲突的时候才会使用this。
22. 下面关于抽象类的描述正确的有?
-
A、抽象类使用abstract关键字定义。
-
B、抽象类可以进行实例化。
-
C、抽象方法只能定义在抽象类中。
-
D、可以直接调用继承自抽象类中的抽象方法。
23. 下面关于Dart语言中隐式接口的说法正确的是?
-
A、定义接口应该使用interface关键字。
-
B、实现一个接口使用implements关键字。
-
C、一个类可以实现多个接口。
-
D、类A实现B接口,可以直接使用B接口中的方法。
24. 下面关于静态成员描述正确的有?
-
A、静态成员使用static关键字修饰。
-
B、可以通过实例对象来访问类的静态成员。
-
C、类内部可以直接访问静态成员。
-
D、静态方法不对实例对象进行操作,所以无法访问该实例对象。
25. 下面关于泛型描述正确的有?
-
A、适当指定泛型可以生成更好的代码。
-
B、使用泛型可以减少代码重复
-
C、在实现泛型类型时,可以使用extends限制其参数类型。
-
D、泛型参数可以在函数的返回类型、参数类型、局部变量类型中使用。
26. 下面关于库的描述,正确的有?
-
A、使用import来导入库
-
B、import只能导入整个库。
-
C、Dart支持延迟加载库。
-
D、import可以导入库的一部分。
27. Dart语言中,关于类型定义typedef的描述正确的有?
-
A、typedef目前只能用于函数。
-
B、当函数类型赋值给变量时,typedef会保留类型信息。
-
C、typedef是类型的别名,不能用于函数类型检查。
-
D、typedef只能保留函数返回值类型,不能保留函数参数类型。
28. 下面关于元数据注解描述正确的是?
-
A、元数据注解以@开头。
-
B、元数据注解@后边跟编译时常量的引用和常量构造函数的调用。
-
C、Dart里边只定义了deprecated和override两个元数据常量。
-
D、我们可自定义元数据,使用的时候调用其普通构造函数实例化即可。
29. 关于Dart语言的注释,描述正确的有?
-
A、单行注释以// 开头。
-
B、多行注释以/开头,/结尾。
-
C、Dart编译器会忽略所有注释文本。
-
D、文档注释中[]会在词法范围内解析。
30. 下面关于枚举类型描述正确的有?
-
A、枚举类型是一种特殊的类型,定义后可以动态为其添加成员。
-
B、枚举类型的长度是可变的。
-
C、在switch语句中使用enum,如果没有处理enum所有值,将会得到一个警告。
-
D、枚举类型表示固定数量的常量值。
31. 使用dynamic声明的变量,可以将其他类型的值赋值给该变量。
- A、正确
- B、错误
32. Dart语言中,一切皆Object,所以一个变量使用Object声明后,可以赋值任意类型的值。
- A、正确
- B、错误
33. var声明的变量,一旦赋值后,其类型就不能再次更改。
- A、正确
- B、错误
34. 在类中,定义的实例变量,都会隐式的添加getter和setter方法。
- A、正确
- B、错误
35. 类的工厂构造函数中,可以访问当前实例this。
- A、正确
- B、错误
36. Dart语言中,所有的类都隐式定义了一个接口。
- A、正确
- B、错误
37. 想让类A支持类B的API,而不继承B的实现,那么需要实现B接口中所有的属性和方法。
- A、正确
- B、错误
38. 子类中可以覆盖父类的实例方法、getter和setter,使用@override注解来重写某个成员。
-
A、正确
-
B、错误
39. 在类中,还可以重写某一些操作符,使用operator关键字修饰操作符。
-
A、正确
-
B、错误
40. mixin是在多个类层次结构中重用类代码的一种方式。
答案选项
-
A、正确
-
B、错误
41. 计算下面表达式的结果:
5 ~/ 2 = () //2
42. 在switch语句中,每个非空的case子句都以()结束。
break
43. 将下面表达式的转换成int类型的值()
var str = '10010';
int.parse(str);
44. 在使用类成员时,为了避免左侧操作数为空时异常,可以使用()代替(.)。
?.
45. 定义一个可调用类,只需要实现该类的()方法即可。
call
46. 要使用mixin,需要在()关键字后边加上一个或多个mixin名称。
with
47. 如果导入两个具有冲突标识符的库,可以为一个或者两个库指定一个前缀。指定库前缀使用()关键字。
as
48. Dart属于()线程模型,通过()实现高并发。
1:单
2:事件循环/EventLoop/Event Loop
49. Dart事件循环包含两个队列,分别是()、()。
1:事件队列/EventQueue/Event Queue
2:微任务队列/MicrotaskQueue/Microtask Queue
50. 如果要确保在抛出异常时运行某些业务代码,可以使用()子句。
finally
51. 采用同步生成器的方式,生成0-50的序列。
Iterable<int> syncGenerator([int n = 50]) sync* {
int i = 0;
while(i <= n) yield i++;
}
main(List<String> args) {
print(syncGenerator()); //同步生成器
}
52. 采用异步生成器的方式生成100以内的偶数序列。
Stream <int> asyncGenerator([int n = 100]) async* {
int i = 0;
while(i < n) yield i += 2;
}
main(List<String> args) {
asyncGenerator().listen(print); //异步生成器
}
53. 采用 同步/异步 生成器生成12项斐波那契额数列。
//同步生成器
Iterable<int> syncGenerator([int n = 12]) sync* {
int i = 1;
while(i <= n) yield Feb(i++);
}
//异步生成器
Stream <int> asyncGenerator([int n = 12]) async* {
int i = 1;
while(i <= n) yield Feb(i++);
}
int Feb(int n) {
if (n < 2) return n;
return Feb(n - 1) + Feb(n - 2);
}
main(List<String> args) {
print(syncGenerator()); //同步生成器
asyncGenerator().listen(print); //异步生成器
}