type
status
date
slug
summary
tags
category
icon
password
😀
前言: “快乐的秘诀就是停止胡思乱想”——Poze

📝 双体Java高级部分内容考前复习

前言

记忆的方法

  • 被动输入 --记忆的起点 10%的效果 但必不可少
  • 主动输出 --记忆的深化构建 80%的效果 只比教学他人低10%
  • 教学他人 --记忆的化为己有
  • 总结:*多动嘴巴,就会调动各种感官。越大声效果越好

押题/运用

面向对象

1. final+

  • 判断
    • String类是使用final修饰的,不能被继承。
    • Object类中getClass使用final修饰的,无法被覆盖。
  • 选择
    • public static final double PI = 3.14159265358979323846;​ public static void main(String[] args) { PI = 3.14; System.out.println(PI); }
    • 执行上面代码,结果是(?)
  • 答案
特性/功能
抽象类(Abstract Class)
接口(Interface)
关键字
abstract
interface
方法
可以有抽象方法和具体方法
只能有抽象方法(Java 8之前),可以有默认方法和静态方法(Java 8及以后)
变量
可以有各种类型的变量
只能有常量(public static final
构造函数
可以有构造函数
没有构造函数
实例化
不能被实例化
不能被实例化
继承
只能继承一个抽象类
可以实现多个接口
访问修饰符
可以有各种访问修饰符
默认是public

2. 抽象类

  • 选择
    • 下面哪个说法是正确的? A. 抽象类可以被实例化。 B. 抽象类必须包含抽象方法。 C. 抽象类可以有构造函数。 D. 抽象类不能有构造函数。
    • 如果一个类继承了抽象类但没有重写其抽象方法,那么这个类应该是: A. 具体类 B. 抽象类 C. 接口 D. 枚举类
    • 答案

3. 接口

  • 选择
    • 下面哪个说法是正确的? A. 接口可以有构造函数。 B. 接口中的变量默认是public、static和final的。 C. 接口可以包含具体方法。 D. 接口只能实现一个。
    • 在Java中,一个类可以实现多少个接口? A. 一个 B. 两个 C. 多个 D. 不能实现接口
    • 答案

4. 枚举和内部类

  • 选择
    • 下面哪个说法是正确的? A. 枚举值可以定义在类中的任何位置。 B. 枚举类型的构造函数可以设置为public。 C. 内部类不能访问外部类的私有成员。 D. 枚举类型的实例变量可以在构造函数中初始化。
  • 填空
    • 枚举类型的构造函数默认是__的。
    • 内部类可以分为四种类型:成员内部类、__和****
  • 答案

综合题

  • 选择
    • (多选)下面哪个不能被实例化? A. 具体类 B. 抽象类 C. 接口 D. 枚举类
    • 答案

IO流

1.字节输入输出流

  • 选择题
    • 下面哪个方法属于字节输入流的操作? A. read() B. write(int) C. read(char[]) D. write(byte[])
    • 答案
  • 判断题
    • InputStreamOutputStream 是抽象类,不能被实例化。
    • InputStreamread() 方法可以读取多个字节。
    • 答案

2. 字符输入输出流

  • 选择题
    • 下面哪个方法属于字符输入流的操作? A. write(int) B. read(char[]) C. write(char[]) D. read(byte[])
    • 答案
  • 判断题
    • Writerwrite(String) 方法可以向输出流写入一个字符串。
    • 答案

3. 文件流

  • 选择题
    • 以下哪个方法用于创建文件夹? A. createNewFile() B. delete() C. mkdir() D. listFiles()
    • 答案

4. 异常处理

  • 选择题
    • 下面哪个异常通常由 IO 类库的方法抛出? A. NullPointerException B. IOException C. ArithmeticException D. IndexOutOfBoundsException
    • 答案
  • 判断题
    • IOException 是所有 IO 操作相关异常的父类。
    • 所有的 IOException 都必须被捕获或声明抛出。
    • 答案

综合题

  • 选择题
    • 下面哪个流可以用于处理字符? A. InputStream B. OutputStream C. Reader D. File
    • 答案

总结

  • InputStream/OutputStream 用于处理字节
  • Reader/Writer 用来处理字符
  • InputStream/OutputStream 可转换为 Reader/Writer,转换流可以指定读文件或者写文件所需的编码
  • 以上所提类均为抽象类,不能实例化,需要 new 其子类如 FileXXXX 类、BufferedXXXX
  • 向下转型是将父类对象转换为其子类类型,有可能会导致不安全
  • 字节输入输出流的末位是 1,字符输入输出流的末位是 null

集合框架

1. 泛型

  • 选择题
    • 关于 Java 泛型,以下说法正确的是: A. 泛型可以用于基本类型,如 int、char。 B. 泛型信息在运行时仍然保留。 C. 泛型的主要目的是在编译时进行类型检查。 D. 泛型不可以使用增强for循环。
  • 判断题
    • 泛型在编译后会进行类型擦除。
    • 泛型可以用于方法的返回类型。
    • 答案

2. Collection接口

  • 选择题
    • 关于 Collection 接口,以下说法正确的是: A. Collection 是一个具体类。 B. Collection 可以直接实例化。 C. Collection 是一个接口,表示一组对象。 D. Collection 没有提供基本的集合操作方法。
    • 答案
  • 判断题
    • Collection 接口提供的方法包括 addremovecontains 等。
    • 答案

3. List接口

  • 选择题
    • 关于 List 接口,以下说法正确的是: A. List 中的元素是无序的。 B. List 中的元素可以重复。 C. List 中的元素不可以重复。 D. List 接口不能实现 ArrayListLinkedList
    • 答案
  • 判断题
    • ArrayList 使用数组实现,不适合随机访问。
    • LinkedList 使用链表实现,适合频繁插入和删除操作。
    • 答案
  • 代码题
    • 使用 ArrayList 实现一个列表,并向列表中添加元素 "A"、"B"、"C",然后使用增强 for 循环遍历并打印所有元素。

4. Set接口

  • 选择题
    • 关于 Set 接口,以下说法正确的是: A. Set 中的元素是有序的。 B. Set 中的元素可以重复。 C. Set 中的元素不可以重复。 D. Set 接口不能实现 HashSetTreeSet
    • 答案
  • 判断题
    • HashSet 基于 HashMap 实现,元素无序且不重复。
    • TreeSet 基于 TreeMap 实现,元素有序且不重复。
    • 答案

5. Map接口

  • 选择题
    • 关于 HashMap 类,以下说法正确的是: A. HashMap 不能存储键为 null 的键值对。 B. HashMap 是线程安全的。 C. HashMap 基于哈希算法实现Map 接口。 D. HashMap 是有序的。
    • 答案
  • 判断题
    • HashTable 中的键和值都不可以为 null
    • HashMap 中的值可以为 null,可以有多个值为 null。
    • 答案

综合题

  • 选择题
    • 以下哪个集合类保证元素的顺序? A. HashSet B. TreeSet C. LinkedList D. HashMap
    • 答案
  • 判断题
    • TreeSet 保证元素的自然顺序或根据提供的比较器排序。
    • LinkedList 只实现了List接口。
    • 答案

多线程

1. 进程

  • 判断
    • 进程是资源管理的最小单位。
    • 进程包含一个或多个线程。
  • 选择
    • 下面哪个说法是正确的? A. 进程共享内存空间。 B. 进程是程序执行的最小单位。 C. 进程有独立的内存空间。 D. 进程没有独立的内存空间。
    • 答案

2. 线程

  • 判断
    • 线程是程序执行的最小单位。
    • 线程不拥有独立的栈空间。
  • 选择
    • 下面哪个说法是正确的? A. 线程有独立的地址空间。 B. 同一个进程之间的线程共享堆上的内存空间。 C. 线程是资源管理的最小单位。 D. 线程不能有自己的堆栈和局部变量。
    • 答案

3. 实现多线程的第一种方式

  • 填空
    • 实现多线程的第一种方式是继承 __ 类,重写 __ 方法,并调用 __ 方法启动线程。
    • 答案

4. 实现多线程的第二种方式

  • 填空
    • 实现多线程的第二种方式是实现 __ 接口,创建 __ 类对象,并调用 __ 方法启动线程。
    • 答案

5. 线程的静态方法

  • 填空
    • 使用 __ 方法返回当前线程实例。
    • 使用 __ 方法使当前线程休眠。
    • 使用 __ 方法暂停当前线程的执行。
    • 使用 __ 方法打印当前线程的调用栈。
    • 答案

6. 多线程同步控制

  • 填空
    • 线程不安全:当多个线程需要对___变量进行读写操作时,可能会发生冲突。
    • 同步的常见方式是 __
  • 判断
    • Vector 是线程安全的。
    • HashTable 是线程不安全的。
  • 选择
    • 下面哪个说法是错误的? A. Vector 用 ArrayList 替代。 B. HashTable 用 HashMap 替代。 C. Vector 是线程安全的。 D. HashMap是线程安全的。
    • 答案

7. 同步块与同步方法

  • 选择
    • 下面哪个说法是不正确的? A. 同步块使用synchronized 关键字放在代码块前定义。 B. 同步方法锁定调用该方法的对象。 C. 同步块中的对象称为监视器对象。 D. 同步方法使用synchronized 关键字在方法声明中定义。
    • 答案

8. 死锁

  • 判断
    • 死锁是指多个线程相互等待对方释放资源,从而都无法继续执行。
  • 简答
    • 描述造成死锁的原因
  • 答案

9. 线程的通信状态

  • 填空
    • 线程有五种状态:创建、__、执行、__、死亡。
  • 选择
    • 下面哪个说法是不正确的? A. 线程在创建状态时没有分配资源。 B. 线程在就绪状态时分配了所有资源。 C. 线程在阻塞状态时等待用户输入。 D. 线程在死亡状态时结束。
    • 答案

10. 线程优先级

  • 填空
    • Thread 类中定义的常量有 NORM_PRIORITY(值为 __),MAX_PRIORITY(值为 __),MIN_PRIORITY(值为 __)。
  • 选择
    • 下面哪个说法是不正确的? A. 线程优先级的范围是 1 到 10。 B. 线程优先级越高越先被调用,然后才调用优先级低的线程。 C. 优先级相同的线程会被随机调用。 D. 优先级相同的线程总是并发执行。
    • 答案

知识扩展

面向对象

1. final

  • 概念final 是 Java 的关键字,用于表示某个类、方法或变量一旦定义,就无法改变。
  • 扩充
    • final 修饰类:该类不能被继承,如 String 类。
    • final 修饰方法:该方法不能被子类重写,如 Object 类的 getClass() 方法。
    • final 修饰变量:该变量一旦赋值后不能再更改,如 public static final double PI

2. 抽象类

  • 概念:抽象类使用 abstract 关键字修饰,不能被实例化,通常用于表示抽象概念或行为。
  • 扩充
    • 可以包含抽象方法(无方法体)和具体方法。
    • 子类必须实现所有抽象方法,除非子类也是抽象类。
    • 抽象类可以有构造函数,用于初始化其子类。

3. 接口

  • 概念:接口是一个完全抽象的类,只能声明方法,而不能实现方法(Java 8 之后允许默认方法和静态方法)。
  • 扩充
    • 接口中的变量默认是 public static final,方法默认是 public
    • 接口可以被多个类实现,一个类可以实现多个接口。
    • Java 8 引入了接口的默认方法和静态方法。

4. 枚举和内部类

  • 概念:枚举用于定义一组固定的常量,而内部类是定义在其他类内部的类。
  • 扩充
    • 枚举的构造函数默认是 private,不能被外部实例化。
    • 内部类有四种类型:成员内部类、局部内部类、匿名内部类、静态内部类。它们能访问外部类的成员变量和方法。

IO流

1. 字节输入输出流

  • 概念:字节流用于处理二进制数据,InputStreamOutputStream 是所有字节流的抽象基类。
  • 扩充
    • read() 方法用于从输入流读取单个字节数据,返回值为读取的字节或 1(表示流的末尾)。
    • write(int) 方法用于向输出流写入一个字节数据。

2. 字符输入输出流

  • 概念:字符流用于处理字符数据,ReaderWriter 是所有字符流的抽象基类。
  • 扩充
    • read(char[]) 方法用于从输入流中读取字符并存储到数组中。
    • write(String) 方法用于向输出流写入字符串。

3. 文件流

  • 概念:文件流用于文件的读写操作。
  • 扩充
    • File 类提供文件的创建、删除等功能,mkdir() 用于创建目录。

集合框架

1. 泛型

  • 概念:泛型允许在编译时检查类型安全,避免类型转换异常。
  • 扩充
    • 泛型的类型信息在运行时被擦除,称为“类型擦除”。
    • 泛型可以用于类、方法的定义,也可以作为方法的返回类型。

2. Collection接口

  • 概念Collection 是 Java 集合框架的根接口,表示一组对象。
  • 扩充
    • 常用实现类包括 ListSet 等,提供集合的基本操作如 add()remove()contains() 等。

3. List接口

  • 概念List 是有序的集合,允许重复元素。
  • 扩充
    • ArrayList 基于数组实现,适合随机访问。
    • LinkedList 基于链表实现,适合频繁的插入、删除操作。

4. Set接口

  • 概念Set 是不允许重复元素的集合。
  • 扩充
    • HashSet 基于 HashMap 实现,元素无序。
    • TreeSet 基于 TreeMap 实现,元素有序。

5. Map接口

  • 概念Map 表示键值对的集合,不能包含重复的键。
  • 扩充
    • HashMap 允许 null 键和 null 值,基于哈希算法实现。
    • Hashtable 是线程安全的,不允许 null 键和值。

多线程

1. 进程与线程

  • 概念
    • 进程是资源分配的最小单位,每个进程有独立的内存空间。
    • 线程是程序执行的最小单位,同一进程的线程共享进程的内存空间。

2. 实现多线程的方式

  • 扩充
    • 第一种方式:继承 Thread 类,重写 run() 方法,调用 start() 启动线程。
    • 第二种方式:实现 Runnable 接口,创建 Thread 对象,并调用 start() 启动线程。

3. 线程同步

  • 概念:多线程环境下,为了防止线程间的资源冲突,常使用同步机制。
  • 扩充
    • 同步块通过 synchronized 关键字定义,确保某段代码同一时间只能被一个线程执行。
    • VectorHashtable 是线程安全的类。

4. 死锁

  • 概念:多个线程相互等待对方持有的资源,导致所有线程都无法继续执行。
  • 扩充
    • 解决死锁的办法包括资源有序分配、避免锁嵌套等。

5. 线程优先级

  • 概念:线程的优先级范围从 1 到 10,默认优先级是 5。
  • 扩充
    • 优先级较高的线程会被优先调度,但不保证绝对的优先执行。
相关文章
软考专项:上午题 #1 计算机系统实习专项----天讯瑞达实习过程的一些日记(含开发和职场)
Loading...