5.8 小测验

(1) Scala是纯粹的OOP和函数式编程语言吗?

  a) 是的,Scala是纯粹的OOP语言,也是纯粹的函数式编程语言。

  b) 否,Scala是纯粹的OOP语言,但不是纯粹的函数式编程语言。

  c) 否,Scala是纯粹的函数式编程语言,但不是纯粹的OOP语言。

  d) 否,Scala既不是纯粹的OOP语言,也不是纯粹的函数式编程语言。

(2) 下面的代码能够通过编译吗?如果不能,请说明原因。

  1. class A { def method1 = {} }
  2. trait B { def method2 }
  3. trait C { def method3 }
  4. abstract class D extends A with B with C { }

  a) 是的,这些代码能够通过编译并正确地运行。

  b) 否,要实现特质,必须使用关键字implements

  c) 否,D类没有实现A类和/或特质BC的方法。

  d) 答案b和c都对。

(3) 下面的类定义有什么问题?

  1. public class A

  a) 这个类能够通过编译,没有任何问题。

  b) 这个类不能通过编译,因为没有指定类体(= { })。

  c) 这个类不能通过编译,因为Scala中没有访问限定符public

  d) 答案b和c都对。

(4) 在函数式编程中,哪种设计模式最适合用来计算只包含Int值的数组的元素和?

  a) 映射设计模式。

  b) 过滤设计模式。

  c) 归约设计模式。

  d) 以上答案都不对。

(5) 在多线程程序中,对单例对象的可修改变量进行修改是安全的吗?

  a) 是的,这种说法完全正确,因为Scala会确保每个线程都有自己的单例数据副本。

  b) 不对,对于多个线程使用的单例对象,对其可修改的变量进行修改是不安全的。