栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Scala 面试题

Scala 面试题

Scala 面试题
  • 变量
  • 数据类型
  • Scala 实现 break
  • Scala 实现 continue
  • 高阶函数
  • 匿名函数
  • 闭包
  • 函数柯里化
  • 函数参数
  • 函数至简原则
  • Scala与Java继承方面的区别
  • 单例对象(伴生对象)
  • 特质
  • 集合的使用
  • 集合常用的计算
  • 模式匹配
  • 异常
  • 隐式方法
  • 隐式参数
  • 隐式类
  • 隐式解析机制
  • 泛型

变量

常量:在程序执行的过程中,其值不会被改变的变量

var 修饰的变量可改变,val 修饰的变量不可改

var 修饰的对象引用可以改变, val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。

注意: 能用常量的地方不用变量

数据类型

Scala是完全面向对象的语言,所以不存在基本数据类型的概念,有的只是任意值对象类型(AnyVal)和任意引用对象类型(AnyRef)

  • Scala中一切数据都是对象,都是Any的子类
  • Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
  • Scala数据类型仍然遵守低精度的值类型向高精度值类型自动转换(隐式转换)
  • Scala中的 StringOps 是对Java中的 String 增强
  • Unit,对应 Java 中的 void,用于方法返回值的位置,表示方法没有返回值
  • Unit,是一个数据类型,只有一个对象就是()。而 void 不是数据类型,只是一个关键字
  • Null,是一个类型,只有一个对象就是 null 。它是所有引用类型( AnyRef )的子类
  • Nothing,是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。

分类 :

  • 整数类型: Byte、 Short、 Int、 Long
  • 浮点类型: Float、 Double
  • 字符类型 : Char
  • 布尔类型: Boolean
  • Unit 类型、 Null 类型和 Nothing 类型
Scala 实现 break

循环将立即终止

// 导入以下包
import scala.util.control._

// 创建 Breaks 对象
val loop = new Breaks;

// 在 breakable 中循环
loop.breakable{
    // 循环
    for(...){
       ....
       // 循环中断
       loop.break;
   }
}
Scala 实现 continue

跳过

// 导入以下包
import scala.util.control._

// 创建 Breaks 对象
val inner = new Breaks;

// 循环
for(...){
	//....
	// 在 breakable 中循环
	inner.breakable {
		// 循环中断
		inner.break;
	}
}
}

高阶函数

高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数

object Test {
   def main(args: Array[String]) {
      println( apply( layout, 10) )
   }
   
   // 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
   def apply(f: Int => String, v: Int) = f(v)

   def layout[A](x: A) = "[" + x.toString() + "]"
}
匿名函数

没有名字的函数就是匿名函数

(x:Int)=>{函数体}

x: 表示输入参数类型; Int:表示输入参数类型; 函数体: 表示具体代码逻辑

闭包

闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量 , 可以访问一个函数里面局部变量的另外一个函数

var factor = 3  
val multiplier = (i:Int) => i * factor  
函数柯里化

把一个参数列表的多个参数,变成多个参数列表

def add(x:Int)(y:Int) = x + y
函数参数

函数参数指定默认参数值,使用了默认参数

  • 无需传递参数,调用默认参数值
  • 传递参数,则传递值取代默认值
object Test {
   def main(args: Array[String]) {
        println( "返回值 : " + addInt() );
   }
   
   def addInt(a:Int = 5, b:Int = 7) : Int = {
      var sum:Int = 0
      sum = a + b

      return sum
   }
}
函数至简原则
  1. return可以省略,最后一行代码作为返回值
  2. 函数体只有一行代码,省略花括号
  3. 返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
  4. 有return,则不能省略返回值类型,必须指定
  5. 函数明确声明 unit,return 不起作用
  6. 无返回值类型,省略等号
  7. 函数无参,声明参数列表,调用时小括号可加可不加
  8. 函数没有参数列表,小括号省略,调用时必须省略小括号
  9. 不关心名称,只关心逻辑处理,def 省略
//最后一行代码作为返回值
def f1(name:String): String = {
  name
}

//省略花括号
def f2(name:String): String = name

// 返回值类型省略
def f3(name:String)= name

//return , 返回值类型必须指定
def f0(name:String): String = return name

// 明确声明unit,那么即使函数体中使用return关键字也不起作用

Scala与Java继承方面的区别 单例对象(伴生对象) 特质 集合的使用 集合常用的计算 模式匹配 异常 隐式方法 隐式参数 隐式类 隐式解析机制 泛型
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号