1. scala语言有什么特点?什么是函数式编程?有什么优点?

  • scala同时具有⾯向对象和函数式编程的多种编程范式。
  • 函数式编程是一种编程范式,主要思想就是将程序写成一系列函数嵌套的形式,让程序的条例更清晰,灵活性更强。

2. 什么是scala中的闭包?

  • 闭包(closure /ˈkloʊʒər/)
  • 闭包就是能够读取其他函数内部变量的函数。
val a = 3
def add(b:Int) = a + b
// add就是是一个闭包COPY

3. 什么是scala中的纯函数?有什么好处?

  • 是什么

    • 纯函数(Pure Function /pjʊr/ /ˈfʌŋkʃn/)所有的输入通过参数传递到函数内部,所有的输出通过返回值传递到函数外部;
    • 闭包或者带有打印语句的函数为非纯函数。
  • 好处
    • 无状态,线程安全,不需要线程同步;
    • 纯函数相互调用组装起来的函数,还是纯函数;
    • 应用程序或者运行环境(Runtime)可以对纯函数的运算结果进行缓存,运算加快速度。
//纯函数  输入都来自参数  输出都通过返回值
def f1(a:Int,b:Int) = a + b
//非纯函数
val x = 1
// 输入变量x不是通过参数输入
def f2(y:Int) = x + y
// 除了返回值还包含打印语句
def f3(x:Int) = {println(x)x+1
}COPY

4. 什么是scala中的模式匹配?

  • 类似java中的swich-case;
  • scala的模式匹配包括了⼀系列的匹配选项,匹配选项以关键字case为单位,每个匹配选项包括⼀个模式或多个表达式,如果匹配成功将执行或返回=>后面的表达式;
val x:Any = 1
val res = x match {case x:Int => "这是一个Int"case x:String => "这是一个String"case _ => "这是一个非Int,非String的对象"
}COPY

5. case class和class的区别

  • case class是一个样例类;

    1. 样例类默认将主构造器的参数使用val声明,即作为类的成员属性;
    2. 样例类默认添加伴生对象和全参的apply方法,方便对象构建;
    3. 样例类默认添加伴生对象和全参的unapply方法,方便模式匹配和属性提取;
    4. 样例类默认实现了toString,equals,hashcode,copy⽅法;
  • class是一个不具有上述样例类特点的普通类

6. 什么是scala中的隐式转换

  • scala中通过implicit关键字修饰的变量、函数或者类,在调用时,不用显式书写调用过程的一种语法。

7. 什么是scala中的伴生类和伴生对象

  1. 在scala中,object与class名字完全相同,且声明在同一个scala源代码文件中,那么该对象被称为该类的伴⽣对象,该类被称为该对象的伴⽣类;
  2. 伴⽣对象和伴⽣类可以互相访问其私有成员。

8. scala和java的区别

区别 Scala Java
变量声明 scala:使用var或val声明,类型可以省略不写,编译器通过赋值自动推断类型 需要在变量前明确声明变量类型
返回值 可以省略return关键字,编译器根据代码块最后一行自动返回 需要显式使用return关键字
结束符 非必要使⽤分号作为结束符 必须使用分号作为语句结束符
循环 for中可以使用守卫,但没有continue和break关键字 没有守卫语法有continue和break关键字
通配符 _ *
构造器 主构造器直接跟在类的声明之后,辅助构造器命名为this,辅助构造器必须直接或间接调用主构造器 构造器名称与类名一致
内部类 scala实例化的内部类是不同的,可以使⽤类型投影,例如 Outer#Inner表示Outer的Inner类 内部类从属于外部类
接口 scala中接口称为特质(trait),特质中可以写抽象⽅法,也可以写具体的⽅法。且类可以实现多个特质;特质中未被实现的⽅法默认就是抽象的;⼦类的实现或继承统⼀使⽤extends关键字,如需实现或继承多个使⽤with关键字拼接;特质中可以有构造器特质可以继承普通的类,并且这个类称为所有继承trait的父类 java中的接口(interface),接口中的⽅法只能是抽象⽅法,不可以写具体包含⽅法体的⽅法;接口中不能有抽象的属性,且属性的修饰符都是public static final;类实现接口需要使⽤implements关键字,实现多个接口,需要用逗号隔开;接口中不可以有构造器;接口不可以继承普通的类
赋值 scala中的赋值语句返回结果是unit,不可以串联,例如x=y=1,x没有被赋值为1 x=y=1,这样没问题

9. 什么是scala的高阶函数

  • 一个函数作为其他函数的参数
  • 一个函数作为其他函数的返回值
//例如
//函数作为参数
def f1(f:Int => Int,x:Int) ={f(x)
}
//函数作为返回值
def f1(x:Int) : Int => Int ={(y:Int) => x + y
}COPY

10. 隐式参数使用的优先顺序是什么

  1. 当前类声明的implicits ;
  2. 导入包中的 implicits;
  3. 外部域(声明在外部域的implicts);
  4. 继承的父类中的;
  5. 所属包对象中的;
  6. 伴生对象的以上作用域。

11. Option类型的定义和使用场景?

  • 在Java中, null是⼀个关键字,不是⼀个对象,当开发者希望返回⼀个空对象时,却返回了⼀个关键字,为了解决这个问题, Scala建议开发者返回值是空值时,使⽤Option类型,在Scala中null是Null的唯⼀对象,会引起异常, Option则可以避免。 Option有两个⼦类型, Some和None(空值)。

12. Unit类型是什么?

  • Unit代表没有任何意义的值类型,类似于java中的void类型,他是anyval的⼦类型,仅有⼀个实例对象"( )"

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

  • Null是⼀个trait(特质),是所以引⽤类型AnyRef的⼀个⼦类型, null是Null唯⼀的实例。
  • Nothing也是⼀个trait(特质),是所有类型Any(包括值类型和引⽤类型)的⼦类型,它不在有⼦类型,它也没有实例,实际上为了⼀个⽅法抛出异常,通常会设置⼀个默认返回类型。
  • Nil代表⼀个List空类型,等同List[Nothing]。
  • None是Option的一个实例,代表空结果集的返回。

关注微信公众号【飞哥大数据】,回复666 获取2022年100+公司面试真题,以及spark与flink面试题汇总

大数据scala面试题汇总相关推荐

  1. 【2020大数据应用赛试题】Spark分析处理

    文章目录 2020大数据应用赛试题 任务一.Spark技术栈有哪些组件?简述其功能,及应用场景. 任务二.本题目使用spark进行数据分析 数据说明 题目 题目一 题目二 题目三 题目四 2020大数 ...

  2. 大数据常见面试题----冲!!!

    大数据常见面试题 一.Hadoop生态 1.1 HDFS 1.1.1 hdfs读写流程 1.1.2 NameNode.DataNode的作用 1.3 hive 1.3.1 hive中内部表.外部表的区 ...

  3. 大数据Scala编程.问题集(02)

    大数据Scala编程.问题集(02) by 高焕堂 洞庭国际智能硬件检测基地 & 中云大数据中心(IDC) 首席架构师 微博:@高焕堂_台北 Q-02: Scala语言的trait具有什么设计 ...

  4. 机器学习及大数据经典算法笔记汇总

    机器学习及大数据经典算法笔记汇总 一.总结 二.机器学习及大数据算法 机器学习及大数据经典算法笔记汇总 一.总结 前面的博文,介绍了很多TensorFlow 以及 DeepLeaning 的算法.这里 ...

  5. 大数据常见面试题 Hadoop篇(2)

    大数据常见面试题 Hadoop篇(1)_后季暖的博客-CSDN博客1)序列化和反序列化序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输.反序列化就是将收到字 ...

  6. 大数据常见面试题 Hadoop篇(1)

    目录 1.描述一下hdfs的写流程 读流程? 2.详细讲解一下hdfs的体系结构 3.如果一个datanode出现宕机,恢复流程是什么样的? 4.通常你是如何解决Haddop的NameNode宕机的, ...

  7. 2018年全球大数据公司全景画像汇总

    伟大的力量,伟大的责任,2018年全球大数据公司全景画像汇总.在未来不掌握数据的公司,如盲人般看不到未来,更无从去谈理想与发展了.如今无论是互联网巨头,创业新贵,中国到全世界,都已经有无数技术公司投身 ...

  8. 【面试题】京东大数据面试真题汇总,收藏必备

    今年冬天冷的好慢,现在空气中吹的风还是暖的... 京东大数据面试题 _ hive中都有哪些join操作? left join:以左侧为主表,返回记录与主表记录数相同,关联不上的字段为空. right ...

  9. 大数据开发面试题总结-超详细

    1.文件上传: 总结: 客户端上传请求--->namenode检查,返回响应--->客户端真正的文件上传请求,包括文件名,文件大小--->namenode返回上传节点--->客 ...

  10. 史上最全,100+大数据开源处理工具汇总

    本文除了一些常用的大数据工具,还总结汇总了其他大数据工具,几乎是最全的大数据工具的总结. 如果你想入门大数据,可以对他们进行简单的了解. 如果你想学习自己熟悉意外的大数据工具,可以看这篇文章. 如果你 ...

最新文章

  1. Spring Boot 2.3.0 发布:支持Java14、打包Docker镜像、优雅关机配置...
  2. biztalk adapter for mysql_BizTalk Schedule Adapter的使用
  3. 位置式PID与增量式PID的介绍和代码实现
  4. 在 Web 应用中增加用户跟踪功能
  5. python爬虫之图片
  6. x390更换开机_ThinkPad X390怎么装win10系统|ThinkPad X390用u盘重装win10系统教程-系统城...
  7. (备忘)打开office2010总是在配置进度
  8. python远程执行shell 防止注入脚本_解决 window 上python远程执行shell paramiko 下令 Permission denied...
  9. Modelsim仿真tcl脚本与wave.do文件
  10. 测试身体素质健康的软件,《体质健康测试与评价》手机应用(App)的开发及应用...
  11. 拥抱ROS2系列:ROS2概述和实践入门(一)
  12. 深入浅出Hibernate 笔记一(面向应用的持久层设计)
  13. 程序员哀叹:专科都是几十万的年薪,互联网的泡沫要破了
  14. linux虚拟机上挂载U盘
  15. 简单聊聊智能硬件的固件测试
  16. 机器学习基础--各种学习方式(18)--核方法和多核学习
  17. CISSP-D7-运营安全
  18. Python连载(0011): 十分钟理解元组
  19. 横图图片广告代码html,jQuery网页底部固定横幅图片广告代码
  20. TFT液晶屏是怎样诞生的?

热门文章

  1. amend用法 git 信息_详解git commit --amend 用法
  2. 5G 网络的移动性管理上下文对比介绍
  3. 掘进机数字孪生,掘进机远程智能控制
  4. matlab gpa排名,GPA如何决定申请排名多少的大学?(附TOP100大学要求)
  5. 9、IPA通路分析相关网页教程
  6. Docker文档资料
  7. iMazing 2.11.7 WinMac 中文版 — iOS设备管理工具
  8. Python组合数据类型
  9. 时间差之天数计算python123
  10. 单片机第1季:零基础学51单片机-蜂鸣器介绍