大数据笔试真题集锦——第十七章Scala面试题

本文汇总了25道关于Scala的面试题,涵盖介绍、懒加载、元组、隐式转换、闭包、Option类型、模式匹配、伴生类和对象、尾递归等多个核心概念,旨在帮助理解Scala在大数据领域的应用和关键特性。
摘要由CSDN通过智能技术生成

第十七章目录

第十七章 Scala

17.1 scala介绍一下

​Scala 是一种多范式语言,它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机 (Java Virtual Machine) 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言,相对于Java而言,Scala的代码更为精简(减低犯错),而且功能更为广泛(Scala其实是Scalable Language 的简称,意为可扩展的语言),许多Scala的特性和语法都是针对Java的不足和弱点来设计的。

17.2 关于scala,你有什么想说的吗?scala可以用在哪些方面呢?

​Scala的特点是有很多函数程式语言的特性(例如ML,Miranda, Scheme,Haskell),譬如惰性求值,list comprehension, type inference, anonymous function, pattern matching 等等,同时也包含 Object-Oriented 的特性(OO 能与 FP 混合使用是 Scala 的亮点)。此外,许多相似于高级编程语言的语法也渗入其中(例如 Python),不仅提高了 Scala 代码的可读性,维护、修改起来也较为省时省力。

​scala语言主要在于Spark开发中进行使用,代码编写简洁方便,并且执行效率很高,相比较Java语言来说,代码可以减少几倍,还很灵活。

17.3 scala懒加载问题怎么处理?

​使用Lazy关键字进行懒加载操作

​在一些情况中我们经常希望某些变量的初始化要延迟,并且表达式不会被重复计算。就像我们用Java实现一个懒汉式的单例。如:

打开一个数据库连接。这对于程序来说,执行该操作,代价式昂贵的,所以我们一般希望只有在使用其的引用时才初始化。(当然实际开发中用的是连接池技术)
为了缩短模块启动时间,可以将当前不需要的某些工作推迟执行。
保证对象中其他字段的初始化能优先执行。

17.4 Scala有break吗,Case class了解吗,哪里用到过?

​Scala没有break操作,但是可以实现break原理,需要创建Breaks对象实现内部的break方法就可以像java一样跳出语句,但是在模式匹配过程中不需要跳出匹配模式,因为模式匹配只能匹配其中一个结果值。

​case class代表样例类,它和class类比较来说,可以不需要序列化,而class需要序列化操作,和object很类似,但是不同的是object不能传入参数,而case class可以带入参数,一般在做转换操作传参使用,比如DataSet操作的时候,转换RDD或者DataFream操作时候,可以使用case class进行参数的传递。

17.5 元组

  1. 元组的创建
val tuple1 = (1, 2, 3, "heiheihei")

println(tuple1)
  1. 元组数据的访问,注意元组元素的访问有下划线,并且访问下标从1开始,而不是0
val value1 = tuple1._4

println(value1)
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值