JavaSE复盘2

Collection接口的接口对象集合(单列集合)

  • List接口:元素按照先后有序保存,可重复
    • LinkList接口实现类,链表,随机访问,没有同步,线程不安全
    • ArrayList接口实现类,数组,随机访问,没有同步,线程不安全
    • Vector接口实现类,数组,同步,线程安全
  • Set接口:仅接收一次,不可重复,并做内部排序
    • HashSet使用hash表(数组)存储元素
      • LinkedHashSet链表维护元素的插入次序
    •  TreeSet,底层为二叉树,元素排好序

Map接口键值对的集合(双列集合)

  • Hashtabel接口实现类,同步,线程安全
  • Hashmap接口实现类,没有同步,线程不安全
    • LikedHashMap双向链表和哈希表实现
    • WeakHashMap
  • TreeMap红黑树对所有的key进行排序
  •  IdentifyHashMap

HashMap允许空键值对

HashTable不允许空键值对

当重载构造方法时,可以使用关键字(this)来指代本类中的其他构造方法,而使用关键字(super)来指代父类构造方法。

this:

调用构造器,必须放在构造器的首行

访问本类中的属性或方法,如果本类没有此属性或方法则从父类中继续查找

super:

调用父类构造器,必须放在子类构造器的首行

直接访问父类中的属性或方法

关于sleep()和wait(),以下描述错误的一项是()
A.sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
B.wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
C.sleep不释放对象锁,wait释放对象锁
D.sleep是线程类 (Thread) 的方法,wait是Object类的方法

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Obiect类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法 (或notifyAll) 后本线程才进入对象锁定池准备获得对象锁进入运行状态。

外部类不能直接使用内部类的成员和方法

要调用的话:先创建其外部类对象,然后创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

内部类对象始终可以访问其外部类对象,同时这也是为什么在外部类作用范围之外向要创建内部类对象必须先创建其外部类对象的原因。

JavaSE复盘2_第1张图片

关于静态成员变量的说法,正确的是()

A.如果拥有访问权限,可以用类直接访问静态成员变量

B.静态成员变量不能用对象访问

C.静态成员变量必须利用构造方法进行初始化。

D.静态成员变量的访问权限控制符只能是public

下面关于SDK,JVM,JRE和JDK之间的关系,表示正确的是:

JavaSE复盘2_第2张图片

1.JVM – java virtual machineJVM就是我们常说的java虚拟机

2.JRE – java runtime environmentJRE是指java运行环境

3.JDK – java development kitJDK是java开发工具包

4.SDK是Software Development Kit 一般指软件开发包

                        内存空间

btye                8位(1字节)

short               16位(2字节)

int                    32位(3字节)

long                 64位(4字节)

浮点型数据中:小数默认为double类型

float f1 = 13.23f;

double d1 = 4562.12;

重载出现在同一个类中:

方法名 : 必须相同

方法的修饰符可以不相同

main 方法也可以被重载

形参列表: 必须不同(形参类型或个数或顺序 ,至少有一样不同 ,参数名无要求)

返回类型: 无要求 

下面有关线程的哪些叙述是正确的?

A.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行.

B.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面

C.一个线程可能因为不同的原因停止并进入就绪状态

D.一旦一个线程被创建,它就立即开始运行。 

线程进入就绪状态的情况:

  1. 创建线程后,调用线程的start()方法。
  2. 当前线程sleep()方法结束。
  3. 其他线程join()结束。
  4. 等待用户输入完毕。
  5. 当前线程时间片用完。
  6. 线程在执行中,调用当前线程的yield方法。
  7. 某个线程拿到对象锁。
  8. 锁池里的线程拿到对象锁后,进入就绪状态。

线程创建后,进入NEW(初始)状态,调用start方法后,进入READY(就绪)状态,系统分配给该线程时间片后,线程才开始运行

关于Java中的数组,下面哪些描述是正确的?
A两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
B数组是一个连续的存储结构
C可以二维数组,且可以有多维数组,都是在Java中合法的
D数组长度是可以动态调整的

E数组是一个对象,不同类型的数组具有不同的类
F个固定长度的数组可类似这样定义: int array[100]

在equals中比较的是两个对象的地址是否相同。因为是两个不同的数组所以会运行结果为false

Arrays.equals()会比较两个数组中的每个元素的值。当两个数组的为对象数组时候,会逐个遍历

下面能让线程停止执行的有()
A. notifyAll();
B. yield();//当前正在被服务的对象觉得cpu的服务质量不好,提前退出
C.synchronized()//对象锁
D. wait();//当前正在被服务的线程需要睡一会,醒来继续被服务
E. sleep();//导致此线程暂停执行指定时间
F. stop();//这个方法将终止所有未结束的方法,包括run方法

G. notify();

关于Java的类方法(静态方法),下列叙述错误的有()
A.在类方法中可用this来调用本类的类方法
B.在类方法中只能调用本类中的类方法
C.在类方法中可直接调用本类的实例方法
D.在类方法中绝对不能调用实例方法

E.在类方法中可直接调用本类中的类方法

静态方法中是可以通过类的实例来调用非静态方法的。

下列关于抽象类和接口的描述,正确的是?
A.接口中可以定义public变量
B.抽象类中可以定义构造方法
C.一个类继承一个抽象类,必须重写该抽象类中的所有方法
D.抽象类中可以存在非抽象的方法
E.抽象类中只能存在public方法
F.一个类可以继承多个类
G.接口中可以出现protected方法

一个类只能继承一个父类

Java版本小于1.8的前提下,Java特性中,abstract class和interface有什么区别()
A.抽象类中不可以包含静态方法,接口中可以包含静态方法
B.抽象类可以有构造方法,接口中不能有构造方法
C.抽象类中可以有普通成员变量,接口中没有普通成员变量
D.一个类可以实现多个接口,但只能继承一个抽象类

关于继承的说法,错误的是0
A.子类只能继承父类的成员方法,而不继承成员变量

B.子类只能继承父类public成员变量和成员方法

C.子类能继承父类的非私有成员变量和成员方法

D.子类能继承父类的私有成员变量和成员方法 

你可能感兴趣的:(JavaSE面试题,java,开发语言)