Scala 小练习 您所在的位置:网站首页 关于cpu的说法下列描述中错误的是什么 Scala 小练习

Scala 小练习

2024-07-14 05:30| 来源: 网络整理| 查看: 265

1、**[primary]**关于和Scala进行交互的基本方式REPL(Read-Eval-Print Loop)说法错误的是? C

A、R 读取(read) B、E 求值(evaluate) C、P 解析(Parse) D、L 循环(Loop)

2、**[primary]**不属于Scala7种数值类型的是? D

A、Char B、Int C、Float D、LongLong

3、**[primary]**如果需要使用scala库中的sqrt函数,如sqrt(2),下列引用包的方式错误的是? B

A、import scala.math._ B、import sqrt C、import math._ D、import math.sqrt

4、**[primary]**Scala关于变量定义、赋值,错误的是?B

A、val a = 3 B、val a:String = 3 C、var b:Int = 3 ; b = 6 D、var b = "Hello World!" ; b = "123"

5、**[primary]**在Scala中如何获取字符串“Hello”的首字符和尾字符?B

A、"Hello"(0),"Hello"(5) B、"Hello".take(1),"Hello".reverse(0) C、"Hello"(1),"Hello"(5) D、"Hello".take(0), "Hello".takeRight(1)

6、**[primary]**下面输出与其他不一致的是?D

A、println("Hello World") B、print("Hello World\n") C、printf("Hello %s", "World\n") D、val w = "World" ; println("Hello $w")  s"${变量}"

7、**[primary]**关于函数def sum(args:Int*) = {var r = 0 ; for(arg

0 to n foreach print

}

B、0->n-1

def countdown(n:Int){

(0 until n).reverse foreach print

}

C、

def countdown(n:Int){

(0 to n).reverse foreach print

}

D、

def countdown(n:Int){

(0 to n-1).reverse foreach print

}

20、**[intermediate]**表达式for(i 5, "penpen" -> 2) B、Map("bookbook" -> 10, "penpen" -> 4) C、Map("book" -> 10, "pen" -> 4) D、Map("book" -> 5, "pen" -> 2 ,"book" -> 5, "pen" -> 2)

26、**[intermediate]**对于val prices = Map("book" -> 5, "pen" -> 2, "sticker" -> 1)结果说法错误的是?D

A、prices("sticker") // 等于 1 B、(prices + ("shoes" -> 30))("shoes")// 等于 30 C、(prices - "pen")("book") // 等于 5 D、prices("sock") // 等于 0  要用getOrElse(key,0)  None  Some

27、**[intermediate]**对于表达式"New York".partition(_.isUpper)将数据进行拆分返回结果正确的是?B

A、("New", "York") B、("NY", "er ork") C、("er ork", "NY") D、("New York", "NY")

28、**[intermediate]**对于表达式

val tokens = "one two three four two two three four".split(" ")

val map = new HashMap[String,Int]

for(key

nums.max -> nums.min // 实际就是2元组

}

C、

def maxmin(nums:Array[Int]) = {

val max = nums.max

val min = nums.min

max,min // 缺少括号

}

D、

def maxmin(nums:Array[Int]) = {

val max = nums.sorted.head // 是最小值

val min = nums.sorted.last // 是最大值

(max,min)

}

30、**[intermediate]**对于拉链操作

val key = Array(1, 2)

val value = Array(“one”,”two”)

val m = key.zip(value).toMap  //   2元Tuple 跟Map 之间转换

返回结果正确的是?A

A、m(1) 等于 “one” B、m(2) 等于 “one”  // two  C、m(“one”) 等于 “1” D、m(“two”) 等于 1

31、**[primary]**scala中,下面的哪个类定义是不正确的?C

A.class Counter{def counter = “counter”} //  如果函数没有入参 可以省略() B.class Counter{val counter = “counter”} // 正常变量定义 C.class Counter{var counter:String} //  变量定义要初始化啊! D.class Counter{def counter () {}}  //  正常定义

32、**[primary]**scala的类在实现属性时,下面说法中错误的是?B

A. var foo: Scala自动合成一个getter 和一个setter B. val foo: Scala自动合成一个getter 和一个setter //  没有set  只有get  C. 可以单独定义foo方法 D. 可以单独定义foo_=方法

33、[primary] 定义类Countter并实例化如下:

Class Countter(name:String){ //  name  没有定义 var  val  则不是类变量 只是主构造函数的局部形参

val a = 1

var b = “counter”

}

val counter = new Countter(“computer”),下列操作正确的是?C

A. counter.name = “cpu” B. counter.a = 2 C. counter.b = “conter2” D. counter.a = counter.b

34、**[primary]**类和单例对象间的差别是?B

A. 单例对象不可以定义方法,而类可以   object 可以定义函数B. 单例对象不可以带参数,而类可以 C. 单例对象不可以定义私有属性,而类可以  object 可以定义私有属性 D. 单例对象不可以继承,而类可以   

35、**[primary]**关于辅助构造器,以下说法正确的是?C

A. 辅助构造器必须调用主构造器 //   辅助构造器 可以调用辅助构造器  但是类的入口必须是 主构造器 B. 辅助构造器的可以直接调用超类的主构造器   只有主构造器可以调用 主构造器 C. 辅助构造器的参数可以是任意多个 D. 辅助构造器的名称和类名相同     this

36、**[primary]**关于主构造器,以下说法错误的是?A

A. 主构造器在每个类都可以定义多个  只有一个 B. 主构造器的参数可以直接放在类名后。 C. 主构造器的会执行类定义中的所有语句。 主要是 变量成为了 主构造器的函数 D. 主构造器中可以使用默认参数。

37、**[primary]**定义类 Class Person(private val name: String){},以下说法正确是?B

A. name是对象私有字段 B. name是类私有字段,有私有的getter方法 C. name是类公有字段,有公有的getter和setter方法 D. name是类私有字段,可以在类内部被改变

38、**[primary]**scala 中,以下说法错误是?C

A. scala 中, 可以在类中定义类。 B. scala 中, 可以在函数中定义函数。 C. scala 中, 不可以在类中定义object。 D. scala 中, 可以在函数中定义类。

39、**[primary]**scala 中,类成员的缺省访问级别是?A

A. public //  scala 中只有public  private两个 B. private C. protected D. 以上都不对

40、**[primary]**以下单例对象,定义错误的是?B

A. object A{var str = ""}。 B. object A(str:String){} // 单例对象 不可以有形参 C. object A{def str = ""} D. object A{val str = ""}

41、**[primary]**scala中,关于包的说法不正确的是?A

A. 包的名称不能重复。 // 可以重复 跟类名一样 不同位置即可 B. 同一个包可以定义在多个文件中。 C. 包路径不是绝对路径。 D. 包对象可以持有函数和变量。package object  名字

42、**[primary]**scala中,关于包的引用错误的是?D

A. 包和其成员可以用import B. 可以引用某个文件夹下的特定文件 C. 可以引用某个文件夹下的所有文件 D. 包引用只能在编译单元的开始处

43、**[primary]**下面关于override修饰符的描述错误的是?D

A. Scala里所有重载了父类具体成员的成员都需要这样的修饰符   B. Scala里如果子类成员实现的是同名的抽象成员则这个修饰符是可选的 C. Scala里如果子类中并未重载或实现什么基类里的成员则禁用这个修饰符 D. Scala里如果子类是抽象类则子类的同名成员不可以使用这个修饰符  可以部分函数override的

44、**[primary]**Scala里,final修饰符的描述正确的是?B

A. 类的声明上添加final修饰符确保成员不被子类重载 B. 类的声明上添加final修饰符把整个类声明为final,这个类不能被继承 C. 类的声明上添加final修饰符确保成员只能被子类重载一次 D. 以上说法都是错误的

45、**[primary]**scala语言中,关于List的定义。不正确的是?C

A. val list = List(1,2,3)。 B. val list = List[Int](1,2,3)。 C. val list = List[String](‘a’,’b’,’c’)。// Char  D. val list = List[String]()。

46、**[intermediate]**定义一个类,定义正确的是?D

A.

class House(name){  变量名类型

def getname = “beijing”

}

B.

class house {

name = “nanjing”  变量名字类型

}

C.

class House {

public var counter:String = “shanghai”  默认就是public 写了public反而错误

}

D.

class house (var name:String){

private def getName = name

}

47、**[intermediate]**Scala类中的公有字段自带getter和setter,类class Persen{var age=0} ,age字段默认定义的方法是?D

A. getter ,setter B. getAge, setAge C. age, age_ D. age, age_=   //  jd-gui  反编译下就知道了   

48、**[intermediate]**关于辅助构造器,以下说法不正确的是?D

A. 辅助构造器的名称为this。 B. 辅助构造器的定义要调用已定义的辅助构造器或主构造器。 C. 辅助构造器可以有任意多个 D. 辅助构造器必须要带参数

49、**[intermediate]**Scala中的类,以下说法正确的是?B

A. Scala中,类内部的不是从构造器定义的代码,都会在主构造器中执行 B. Scala中,类内部的不是字段的部分或者方法定义的代码,都会在主构造器中执行 C. Scala中,类内部的所有的代码,都会在主构造器中执行 D. 以上说法都是错误的。

50、**[intermediate]**scala 中,类和它的伴生对象说法错误的是?B

A. 类和它的伴生对象定义在同一个文件中。 B. 类和它的伴生对象可以有不同的名称。 C. 类和它的伴生对象可以互相访问私有特性。 D. 类和它的伴生对象可以实现既有实例方法又有静态方法。

51、**[intermediate]**关于对象的apply方法,正确的是?A

A. apply方法返回的是伴生类的对象。 B. apply方法不可以带参数。 C. apply方法返回的是Unit。 D. apply方法定义在类里面。

52、**[intermediate]**scala中,关于引入语句的说法不正确的是?D

A. 引入语句可以引入包、类和对象。 B. 引入语句可以出现在任意位置。 C. 引入语句可以重命名。 D. 引入语句不可以隐藏特定成员。import  a.b.{ d=>_,_} b 下面除去 d 都引入

53、**[intermediate]**对于下述代码说法正确的是?A

class Cat extends Animal{}

A. Cat是Animal的子类。 B. Animal是Cat的子类 C. Cat是Animal的超类 D. Animal一定是抽象类

54、**[intermediate]**scala中的类,下面说法正确的是?A

A. scala 中,使用extends进行类的扩展。 B. scala 中, 声明为final的类可以被继承。 C. scala中,超类必须是抽象类。 D. scala中,抽象类可以被实例化。

55、**[intermediate]**scala中,下列描述错误的是?B

A. Scala里,字段和方法属于相同的命名空间。 B. Scala一共有四个命名空间。// 2个 C. Scala里,字段可以重载无参数方法。 D. Scala类和特质属于相同的命名空间。

56、**[intermediate]**下面定义的代码和哪个选项是等效的?D

class ArrayElement(x123: Array[String]) extends Element{

val contents: Array[String] = x123

}

A.

class ArrayElement(var x123: Array[String])extends Element{

val contents: Array[String] = x123

}

B.

class ArrayElement( val x123: Array[String] )extends Element{

val contents: Array[String] = x123

}

C.

class ArrayElement(var contents: Array[String])extends Element

D.

class ArrayElement( val contents: Array[String] )extends Element

57、**[intermediate]**类定义如下,描述不正确的是?C

abstract class Element

{

def contents: Array[String]

}

A. Element是一个抽象类。 B. Element不能实例化。 C. Contents成员定义错误,没有初始化。 D. contents方法是类Element的抽象成员。

58、**[intermediate]**scala语言中,下面描述正确的是?D

A. scala中,Float是Double的子类。 B. scala中,Int是Long的子类。 C. scala中,Double是AnyRef的子类 D. scala中,Long是AnyVal的子类   //  自己多看scala 继承图

59、**[intermediate]**Scala中,下面的代码执行正确的是? C

A. val list = 1 :: 2 :: 3。缺少:::Nil B. val list = 1.::(2).:: (3).::(Nil) C. val list = 1 :: “s” :: “b” :: Nil。 D. var list = 1 ::: 2 ::: 3 ::: Nil  两个不是三个, list之间才是三个

60、**[intermediate]**类ArrayElement定义如下,它的子类定义正确的是?B

class ArrayElement(val str:String){

def height =1

}

A.

class LineElement(str: String) extends ArrayElement{  父类入参没有

def width = str.length

}

B.

class LineElement(s: String) extends ArrayElement(s) {

def width = str.length

}

C.

class LineElement(str: String) extends ArrayElement(str){

def height =1    重载了 没有override

 

}

D.

class LineElement(s String) extends ArrayElement{  父类参数没有

def str = s

}

61、**[primary]**对于由scala.io.Source.fromFile创建的Source对象的使用以下描述正确的是?A

A. 在使用完此Source对象后,需要调用close方法来释放相关资源。 B. 可以使用此Source对象向其指定的文件中写入内容。 C. 可以修改此Source对象所指定的文件名称。 D. 以上说法均不正确。

62、**[primary]**在正则表达式中,如下哪个符号用于匹配单个字符?B

A. . B. ? C. * D. +

63、**[primary]**在正则表达式中,如下哪个符号用于匹配一次或多次?D

A. . B. ? C. * D. +

64、**[primary]**可以正确匹配" 12340 "的正则表达式是?C

A. "\s+[0-9]+\s+".r B. ""\s+[0-4]+\s+".r C. """\s+\d+\s+""".r   D. 以上均不正确。

65、**[primary]**如下选项中,不能做为Scala标识符的是?C

A. `type` B. |> C. 2K D. hello

66、**[primary]**下述关于中置表达式(a 操作符 b)的描述错误的是?B

A. 其中的“操作符”代表一个带有两个参数的方法(一个隐式的参数和一个显式的参数)。 B. 中置表达式,一定可以提高代码的可阅读性。 C. Scala在当方法只有一个参数时,可以省略点号、以及括号,从而形式上变成中置表达式。 D. 通常可以将此中置表达式修改为"a.操作符(b)",若此操作符具有右结合性则应修改为"b.操作符(a)"。

67、**[primary]**有关操作符结合性的描述不正确的是?D

A. 操作符的结合性决定了它们是从左到右求值还是从右到左求值。 B. |操作符是左结合的。 C. 以冒号结尾的操作符是右结合的。 D. 赋值操作符是左结合的。val  a = 123 从右到左

68、**[primary]**以下代码的执行结果的描述正确的是?C

object Name {

def unapplySeq(input: String): Option[Seq[String]] = {

if(input.trim == "") None else Some(input.trim.split("\\s+"))

     }

}

val Name(xing, ming) = " Yuan Jianzheng " 自动调用match  unapplySeq

A. 编译过程报错。 B. 运行过程中报错。 C. 执行后,xing的结果是"Yuan",ming的结果是"Jianzheng"。 D. 以上描述全部错误。

69、**[primary]**以下关于闭包描述错误的是?D

A. 闭包是一个函数,其返回值依赖于声明在函数包部的一个或多个变量。 B. 通常来讲,可以将闭包看作是可以访问一个函数里面局部变量的另一个函数。 C. 对于def mulBy(factor: Double) = (x: Double) => factor * x; val triple = mulBy(3);,函数triple是一个闭包。 D. 对于def mulBy(factor: Double) = (x: Double) => 3 * x; val triple = mulBy(3);,函数triple是一个闭包。

70、**[primary]**有关柯里化描述错误的是?D

A. 柯里化是指将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数作为参数的函数。 B. 有时,使用柯里化将某个函数参数单拎出来,可以提供更多用于类型推断的信息。 C. 将函数def add(x: Int, y: Int) = x + y,变形为def add(x: Int)(y: Int) = x + y的过程是一个柯里化过程。 D. 柯里化是多参数列表函数的特例。

71、**[primary]**高阶函数是指?C

A. 在程序中应该首先被定义的函数。 B. 将函数作为参数,并返回结果为函数的函数。 C. 函数参数为函数或返回结果为函数的函数。 D. 执行时间长的函数。

72、**[primary]**以下选项中,哪一个可以在Scala中定义一个按名调用(call-by-name)的函数?B

A. def functionOne(x: Int) B. def functionOne(x: => Int)  这个是正规的其余都写的不对, C. def functionOne(x: -> Int) D. def functionOne(x: Name)

73、**[primary]**如下代码执行结果是?A

def someCurring(y: Int):(Int) => Int = {

def s(y:Int) = 2*y

s //  该函数的返回值为函数,理解下就懂了

}

val result = somCurring(4)(3)

A. 6 B. 4 C. 8 D. 9

74、**[primary]**集合可以分为三大类,以下描述中不是这三大类的是?A

A. 列表(List) B. 序列(Seq) C. 集(Set) D. 映射(Map)

75、**[primary]**以下对集合的描述有误的是?D

A. Set是一组没有先后次序的值。 B. Map是一组(键,值)对偶。 C. 每个Scala集合特质或类都有一个带有apply方法的伴生对象,可以用此方法来构建该集合中的实例。 D. 为了顾及安全性问题,Scala仅支持不可变集合而不支持可变集合。immutable  mutable 都支持一般

76、 **[primary]**如下的操作中,哪一个不能将val names = List("Petter", "Paul", "Mary")中的相应地字符串全部变成大写?D

A. names.map(_.toUpperCase) B. for (name

val testName = "test"

}

A. log.realName并不是期望的"test.log"。 // null.log B. 可以通过val log = new MyClass {val testName = "test";} with TestLog,来达到log.realName的值为"test.log"。 C. 可以通过将TestLog中的realName定义修改为,lazy val realName = testName + ".log",来达到log.realName的值为"test.log"。lazy模式 D. 以上描述最多有两个描述正确。

89、**[intermediate]**对于以this: 类型 =>代码开始定义的特质,描述错误的是?D

A. 此描述叫作“自身类型(self type)”,表示此特质只能被混入指定类型的子类中。 B. 在此特质的方法中,可以调用上述类型中所具有的任何方法。 C. 此类型,可以是一个方法的集合,如{def getMessage(): String}用于表示此特质可以被混入任何拥有getMessage方法的类中。 D. 以上描述最多有两个描述正确。

90、**[intermediate]**Scala将特质翻译成JVM的类和接口的描述错误的是?D

A. 只有抽象方法的特质被简单地变成一个Java接口。 B. 如果特质中包含具体方法,则Scala会帮我们创建出一个伴生类,该伴生类用静态方法存放特质的方法。// 试验然后用jd-gui看源码就懂了 C. 特质中的字段对应到接口中的抽象的getter和setter方法。 D. 以上描述至少有一个是错误的。

91、**[intermediate]**对于一元操作符下述描述错误的是?B

A. "+"、"-"、"!"、"~"这四个操作符可以作为前置操作符,出现在参数之前。 B. 前置表达式"操作符 a",可以表示为"a.unary_操作符(1)"。//  !a    a.unary_! C. 如果此操作符出现在参数之后,那么它就是一个后置操作符,如"a 操作符"。 D. 后置表达式"a 操作符",可以表示为"a.操作符()"。

92、**[intermediate]**有关操作符优先级的描述不正确的是?C

A. *=的优先级低于+。 B. >的优先级高于&。 C. 后置操作符的优先级高于中置操作符。 D. %的优先级高于+。

93、**[intermediate]**对于f(arg1, arg2, ...)描述有误的是?D

A. 若其未出现在赋值表达式的左侧,若f是函数或方法,则其只是对其的调用。 B. 若其未出现在赋值表达式的左侧,且f不是函数或方法,则其等同于f.apply(arg1, arg2, ...)。 C. 若其出现在赋值表达式的左侧,如"f(arg1, arg2, ...) = value",则其等同于f.update(arg1, arg2, ..., value)。 D. 以上描述至少有一个是错误的。

94、**[intermediate]**以下关于Scala中函数的描述错误的是? B

A. 函数是“头等公民”,就和数字一样。 B. 可以将函数赋值给变量,如val fun = scala.math.ceil。 //  val fun = scala.math.ceil _ C. 支持非具名函数,也即匿名函数。 D. 可以将函数作为参数,传递给其它函数。

95、**[intermediate]**对集(Set)进行操作"Set(2, 0, 1) + 1 + 1 - 1"之后的结果为?C

A. Set(2, 0, 1, 1) B. Set(2, 0, 1) C. Set(2, 0) D. 已上均不正确。

96、**[intermediate]**下述方法中,哪一个不能将"val tmp = List(1, 2, 3)"中的所有元素求和,并将最终结果6返回?D

A. tmp.foldLeft(0)(_ + _) B. tmp.reduceLeft(_ + _) C. (0 /: tmp)(_ + _) D. tmp.scanLeft(0)(_ + _)  // 仅仅是浏览而已

97、**[intermediate]**下面有关val f: PartialFunction[Char, Int] = {case '+' => 1; case '-' => -1}的描述有误的是?D

A. f是一个偏函数,且其参数类型为Char、返回类型为Int。 B. f('-')的结果是返回-1。 C. f.isDefinedAt('0')的结果是返回false。true  or  false D. f('0')在执行时由于没有对应的case语句,故会返回一个任意Int值。//  直接报错了

98、**[intermediate]**在下述代码基础上,不能正确执行的操作是?C

case class Currency(value: Double, unit: String)

val amt = Currency(29.95, "EUR")

A. amt.copy(value = 19.2) B. amt.copy()C. amt.copy("CHF") D. amt.copy(unit = "CHF")

99、**[intermediate]**对于下述代码,哪个描述是正确的(偏函数)?A 

val one: PartialFunction[Option[Int], String] = {

case Some(_) => "one"

}

A. one.isDefinedAt(Some(1)) == true B. one.isDefinedAt(1) == true C. one.isDefinedAt(Some(100)) == false D. one.isDefinedAt(None) == true

100、**[intermediate]**在对htmlText进行匹配时,应该使用哪一种case语句?B

def getHtml(url: String): Try[String] = {...}

val myUrl = "http://justtest.org"

val htmlText = getHtml(myUrl)

val result = htmlText match {

???

}

A. case Some(x) =>   case None(x) => B. case Success(v) =>   case Failure(e) => C. case String(x) =>   case Url(y) D. case Try1(v) =>   case Try2(v) =>



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有