scala概念

devtools/2025/1/15 14:20:49/

val声明变量和var声明变量的不同?

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

trait与class的相同点和不同点?

它们的相同点在于都能包含抽象和非抽象成员,且不能直接实例化。

区别在于抽象类的构造方法可传参,而特质的构造方法不能。

一个类实现多个特质后,所涉及的多个构造器的执行顺序是?

所有特质被构造完毕,子类被构造。 构造器的顺序是类的线性化的反向 

private修饰的属性的访问权限和protected修饰的属性在访问权限上有相同和不同?

封装性privateprotected 都是封装的一部分,用于限制类成员的访问,以保护类的内部状态和行为。

继承:如果一个类继承了另一个类,那么继承类可以访问父类的protected成员,但不能访问private成员。

不同点

  1. 访问范围

    private:被private修饰的属性或方法只能在定义它们的类内部被访问。它们对子类和其他类都是不可见的。protected:被protected修饰的属性或方法可以被定义它们的类、同一个包中的其他类以及子类访问。它们对不同包中的非子类是不可见的。
  2. 子类访问private:子类不能访问父类的private成员,即使它们在同一个包中。protected:子类可以访问父类的protected成员,无论它们是否在同一个包中。包访问private:不允许包访问,即同一个包中的其他类也不能访问。protected:允许包访问,即同一个包中的其他类可以访问。接口实现privateprivate成员不能被接口的实现类访问,因为它们对所有外部类都是不可见的。protected:如果一个类实现了一个接口,那么这个类的protected成员可以被实现该接口的其他类访问。
  3. 隐式转换函数的特点是那些?如何让理解隐式转换?
  4. 自动性单向性安全性上下文依赖,可预测性,可能导致性能损失,可能隐藏错误
  5. 理解隐式转换的关键在于:
  6. 熟悉语言规则,注意上下文,性能考量代码,可读性,显式转换,避免数据丢失,测试和调试
  7. 解释一下正则表达式:1[3-8]\\d{9}.r的含义?
  8. 正则表达式 1[3-8]\d{9}.r 匹配的字符串以数字 "1" 开头,紧接着是一个3到8之间的数字,然后是任意9个数字,最后以字母 "r" 结尾
  9. 正则表达式中常见的量词及含义?
  10. *(星号):

    • 表示前面的元素可以出现0次或多次。
  11. +(加号):

    • 表示前面的元素至少出现1次或多次
  12. ?(问号):

    • 表示前面的元素可以出现0次或1次。
  13. {n}(花括号):

    • 表示前面的元素恰好出现n次。
  14. {n,}

    • 表示前面的元素至少出现n次。
  15. {n,m}

    • 表示前面的元素至少出现n次,但不超过m次。
  16. *?+???(懒惰量词):

    • 这些量词与它们对应的贪婪量词相同,但它们是懒惰的,即尽可能少地匹配字符。
  17. |(竖线):

    • 表示逻辑“或”,用于匹配两个或多个选项中的一个。
  18. ^(脱字符号):

    • 表示匹配输入字符串的开始位置。
  19. $(美元符号):

    1. 表示匹配输入字符串的结束位置
    2. ListBuffer和List的区别?
    3. 可变性

      • ListBuffer:是一种可变的集合
      • List:是一种不可变的集合
    4. 性能

      • ListBuffer:由于其可变性,ListBuffer在添加和删除元素时通常比List更高效,尤其是在集合大小频繁变化的情况下
      • List:由于其不可变性,List在遍历和头部操作(如访问第一个元素)时通常更高效。
    5. 懒加载

      • List:Scala的List是懒加载的
      • ListBufferListBuffer不是懒加载的,它存储的是元素的物理集合。
    6. 使用场景

      • ListBuffer:当你需要一个可以动态修改的集合,并且关心添加和删除操作的性能时,ListBuffer是一个好选择。
      • List:当你需要一个不可变的集合,并且关心遍历和头部操作的性能时,List是更好的选择。
    7. 其他操作

      • ListBuffer提供了一些额外的操作,如removeinsert等,这些在List中是不可用的。
    8. 内存使用

      • ListBuffer可能会使用更多的内存,因为它需要存储额外的信息来支持其可变操作。
    9. 线程安全

      • ListBuffer不是线程安全的,而List由于其不可变性,天然是线程安全的。
      • 如何处理代码中的异常?
      • 精确捕获:只捕获你能够处理的异常,而不是所有异常。
      • 资源管理:使用finally块或try-with-resources语句(Java 7+)来确保资源(如文件句柄、数据库连接)被正确关闭。
      • 避免空的Catch块:不要仅仅捕获异常而不做任何处理,至少应该记录异常信息。
      • 不吞没异常:不要捕获异常后不进行任何处理或不向上抛出。
      • 用户友好的消息:向用户提供错误信息时,避免显示技术性或模糊的消息。
      • 日志记录:记录异常信息,这对于调试和监控程序运行状态很有帮助。
      • 自定义异常:创建自定义异常类,以提供更具体的异常信息。
      • 异常链:在自定义异常时,可以通过构造函数传递原始异常,以保留原始异常堆栈信息
      • 什么是泛型?在scala中如何使用泛型?
      • 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效 地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景 是集合及集合中的方法参数,


http://www.ppmy.cn/devtools/150697.html

相关文章

【2025最新】机器学习类计算机毕设选题80套,适合大数据,人工智能

【2025最新】机器学习类型计算机毕设选题 1-10套 基于Spring Boot的物流管理系统的设计与实现 基于机器学习的虚假招聘信息的分析与预测 基于机器学习的影响数据科学家职业变动因素的分析与预测 基于Spring Boot的历史文物交流平台的设计与实现 基于机器学习的肥胖影响因素的分…

平台介绍-快速开发上手指南

1、平台及其之上的应用限定了4个开发语言:: 业务后台:Java AI/大数据/爬虫等:Python PC前端:VueElmentUI 移动前端:UniApp 平台不推荐上述之外的语言、组件等。平台卖给甲方后,甲方可能会放开这个限制,这个我们无…

YOLOV8涨点技巧之MCA多维协作注意力模块

1. 算法设计:基于 MCA 的 YOLOv8 优化 1.1 总体架构 YOLOv8 的优化算法在原有架构的基础上,引入了 MCA 模块,以增强特征提取能力和目标定位精度。MCA 模块被嵌入到 YOLOv8 的主干网络(Backbone)和特征金字塔网络(FPN)中,用于捕捉多维度的上下文信息。 1.2 MCA 模块设…

Android硬件通信之 USBManager通信

一 简介 1.1 USB是一种常见的设备端接口,在PC端,移动端等上面应用非常的广泛,这就涉及到USB设备与主机端的通信。下面就讲下Android设备上的USB通信流程。 1.2 在android提供了USBManager接口来管理USB设备,USBManager类是Andro…

「蓝桥杯题解」数字接龙

前言 这个是我的 ac 代码,里面的注释是用自己的话写的。因为我看蓝桥杯官方题解文字和代码分离,代码部分没有注释,看着巨难受,所以自己写了一版。感觉他们的视频解析也挺水的(小声 题目链接 代码 import java.util…

openmetadata二次开发之前端汉化

目录 1.背景 1.1 设置默认的语言为中文,应该如何修改代码 1.2 将未做国际化的页面做汉化,应该如何修改代码 1.3 配置连接信息的指导教程,应该如何汉化 2. 设置默认的语言为中文 2.1 查看源码当前项目为react构建的项目,使用的国际化插件为react-i18next和i18next 2.…

数据结构------树

前言:前面我们学习了栈和队列。今天我们来学习一种新的数据结构---------树。 首先我们来了解一下树的概念。 1.树的概念与结构 前面我们学习过的顺序表,栈都是一种顺序结构。链表,队列是链式结构。今天学习的树也是一种链式结构。它是由n…

infinitetensor训练营-cuda1

一、基础概念剖析: 1、延迟:发送内存请求——>实际完成数据移动所需的时间。可以理解为家到公司的距离 2、带宽:单位时间移动数据量,即数据传输的速度。可以理解为家到公司中间马路的宽度 我们这里举个例子,计算机…