美文网首页
Scala面试题

Scala面试题

作者: 你值得拥有更好的12138 | 来源:发表于2020-04-12 16:58 被阅读0次

scala语言的特点:

  • 集成了面向对象和函数式编程
  • 函数式编程是将计算机的运算视为函数运算
  • 链式编程

Scala中的String是可变的还是不可变的

  • 它的底层就是Java的String,所以是不可变的
什么是闭包

函数捕获自由变量的,闭包=代码+非局部变量

简述隐式转换的作用

当我们引入第三方包,但是不能修改代码时。可以使用隐式转换增加新的功能,类似与Java的装饰器模式,必须保证当前环境下只有能被识别

什么是柯里化

接受一个多参数的函数转换为多个单参数的函数列表

作用:

  • 简化了主函数的复杂度
  • 提高了主函数的自闭性
  • 提高了主函数的抽象能力

Scala中特质的调用链

从右到左,从下到上,如果中间有没有调用super的,调用链就停止在这里

Scala的协变,逆变,非变

首先定义的一个Trait Q[T]{}

  • 协变 : 如果 A 是B的子类,那么Q[A] 是 Q[B]的子类,Q这样定义Trait Q[+T]{}
  • 逆变: 如果A是B的子类,那么Q[B]是Q[A]的子类,Q这样定义Trait Q[-T]{}
  • 非变: 没有任何从属关系,Q这样定义Trait Q[T]{}

Object的作用

  • 伴生对象
  • 作为工具类或者放置常量
  • 高效共享单个不可变的实列
  • 单例模式

trait(特质)和abstract class(抽象类)的区别?

trait 使用 extends with实现多继承

trait中可以定义实例方法

trait可以有构造函数,但只能是无参数的

trait可以直接使用with混入对象

trait可以继承class

case class (样本类)是什么?

一种语法糖

默认实现是伴生对象

默认实现了apply,unapply,tostring,equals,copy,hashcode

可以使用==比较内容

由于实现了apply方法,可以不使用new 关键字实例化

样本类中的参数默认是val关键字,不可以修改

伴生对象是什么?

它由在同一个源文件中同名的class,object组成。

object可以访问class中的私有变量

不能private[this]变量

可以实现JAVA中的静态变量的效果

类也可以访问伴生对象中的私有方法

Scala类型系统中Nil, Null, None, Nothing四个类型的区别?

Nil表示空类型的List ,等同与List[Nothing]

Null是AnyRef的子类,由唯一的实例对象null

Nothing是所有类型的子类,没有实例对象

None是Option的子类

尾递归

正常递归,每一次递归步骤,需要保存信息到堆栈里面,当递归步骤很多时,导致堆栈溢出。 尾递归就是为了解决上述问题,在尾递归中所有的计算都是在递归之前调用, 编译器可以利用这个属性避免堆栈错误,尾递归的调用可以使信息不插入栈,从而优化尾递归。 使用 @tailrec 标签可使编译器强制使用尾递归。

高阶函数

高阶函数指能接受或者返回其他函数的函数,scala中的filter map flatMap函数都能接受其他函数作为参数

相关文章

  • Scala面试题

    scala语言的特点: 集成了面向对象和函数式编程 函数式编程是将计算机的运算视为函数运算 链式编程 Scala中...

  • Scala学习笔记

    1 Scala入门 scala Hello World Scala变量 Scala变量 Scala字符串 Scal...

  • 2018-09-19

    在弄scala 关于scala问题 maven install 编译不了scala 添加 scala 插件 ...

  • scala 学习笔记-持续更新中

    学习列表: scala官方文档 scala cheat twitter Scala 课堂 有趣的 Scala 语言...

  • 【Spark学习笔记】Scala语法

    学习列表: scala官方文档 scala cheat twitter Scala 课堂 有趣的 Scala 语言...

  • Scala前言

    基本信息 Scala官方中文参考文档: Scala Documentation Scala是什么: Scala是一...

  • scala

    教程 Scala官方文档 Scala 菜鸟教程 Scala 课堂 SBT 中文文档 手册 Scala Api Ja...

  • Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍...

  • scala akka模拟spark master worker通

    pom文件 Master.scala代码 Worker.scala代码 RemoteMessages.scala ...

  • 类结构

    Scala类结构 scala和python类似,scala中所有值都是继承自Any,包括函数。所以在scala之中...

网友评论

      本文标题:Scala面试题

      本文链接:https://www.haomeiwen.com/subject/hdlbmhtx.html