Scala面试问题


什么是Scala?

Scala是一种高级语言,静态类型的语言,它支持OOPS概念以及功能性编程概念。Scala语言是用Java编写的(可选)。

这可能会说服访调员询问静态类型语言和动态类型语言之间的区别。

在静态类型语言中,类型检查在编译时完成,而在动态类型语言中,类型检查在运行时完成。

这将是任何Scala面试中的第一个问题。请记住,面试官并不是在寻找一个出色的开箱即用的答案。像这样的简单答案会很好。

什么是Scala REPL?

Scala REPL是Read-Evaluate-Print-Loop。它是为Scala设计的命令行解释器。

Val和var类型的变量有什么区别?

Val - Immutable var - Mutable

在Scala中可以使用switch语句吗?

不,Scala代替switch使用了match语句,该语句类似于switch语句。

Scala是否支持框架的使用?

是的,Scala支持使用Play框架,Akka框架等框架。

什么是Scala中的流?

由于Scala支持延迟评估,因此Streams只是延迟列表。流中的元素被懒惰地求值(仅在需要时)。流是由#::运算符构造的。

  • 什么是Scala中的元组?我们如何访问元组的元素?
  • 元组是异构元素的集合。
  • 它可以存储不同类型的数据。
  • 它本质上是一成不变的。
  • 元组的类型由它具有的元素的类型定义。
  • 要访问元组的元素,请使用下划线语法。例如。tup._1,i._2等。

解释Scala中方法定义的语法

def 'method_name' ('parameters':'return_type_parameters') : ('return_type_of_method') = {
    'method_body'
     return 'value'
}
  1. def关键字定义方法
  2. camel_case中方法的名称
  3. 方法参数
  4. 参数的返回类型
  5. 该返回类型 的方法的
  6. Assignment_symbol(=)(可选)
  7. 方法主体

Scala中的tail()方法是什么?

tail()方法与head()方法正好相反。它返回除第一个元素外的所有元素。

定义高阶函数

高阶函数将其他函数用作参数或返回结果。

val number_list = List(1, 22, 333) 
// Method 
def addOne = (num: Int) => num + 1

// A higher order function
val result = number_list.map(num => multiplyValue(num))

该地图功能最常用的一个内置在Scala中的高阶函数。

在Scala中定义特征?举个例子。

特质类似于具有部分实现的接口。在scala中,特征是抽象和非抽象方法的集合。

一个特征可以具有所有抽象方法,也可以具有某些抽象方法和一些非抽象方法。

在特征中声明的变量在实现该特征的类中内部实现,但是如果已声明但未初始化的变量被认为是抽象的。

trait Player{
    def sports()
}
class Cricketer extends Player{
    def sports(){
        println("I play Cricket")
    }
}
object MainObject{
    def main(args:Array[String]){
        var player = new Cricketer()
        player.sports()
    }
}

什么是匿名函数?如何声明一个?

匿名函数是没有名称的函数。Scala使用轻量级语法来声明匿名函数。

// An anonymous function to concatenate two strings
var concatenate = (str1:String, str2:String) => str1 + str2

期权在Scala中的作用是什么?地图的get方法中如何使用Options?

该 选项代表可选值。的情况下,选择要么实例有些 或 无。

如果找到了与给定键相对应的值,Scala的Map的get方法将生成Some(value);如果未在Map中定义给定的键,则将产生None(值)。

val medals = Map("Gold" -> "Brazil", "Silver" -> "Germany", "Bronze" -> "Nigeria")
medals.get( "Gold" ) //Some(Brazil)
medals.get("Diamond") //None

如何运行一个简单的Scala程序?

1.使用scalac- scalac Dzone.scala编译代码

2.使用scala-scala Dzone运行代码

for循环如何使用yield?

对于for循环的每次迭代,yield都会生成一个要记住的值。当for循环完成运行时,它将返回所有产生的值的该集合。返回的集合的类型与您要迭代的类型相同,即,如果在Map上完成迭代,则将返回Map,如果在List上进行迭代,则将返回列表。

在Scala中定义Nil,None和Nothing?

  • Nil-代表一个空列表。
println(Nil) //Output - List()
  • None-选项正好有2个子类-一些和无。无表示该方法无结果。
  • Nothing-这是特质。它是一切的子类型。没有Nothing的实例。

我们在哪里得到Scala这个名字?

根据Scala的官方文档:

该名称来自两个来源。首先,“ Scala”是意大利语中的“楼梯”一词,由于Scala可帮助您提升为更好的编程语言,因此它是适当的。Scala徽标是楼梯的抽象。此外,斯卡拉代表SCA拉布勒LA nguage,因为Scala的概念很好地扩展到大型程序。

Scala中所有类的超类是什么?

所有类的超类都是scala。

Scala中的Function和Method有什么区别?

Scala支持功能和方法。方法和函数的语法相同。

两者的主要区别:

  • 甲方法可以在这意味着一个方法与对象相关联Scala的类或性状来定义。我们可以通过使用Class的实例来调用方法。没有对象就无法直接使用方法。

  • 函数在Scala包中定义。它们与类别或特质无关。就像Java的静态方法一样,可以在不使用对象的情况下调用它们。 感谢您的阅读.....也祝您面试顺利。


原文链接:codingdict.com