JavaSE
关键字
限制修饰符
String和StringBuffer用final修饰
- String和StringBuffer都用final修饰,底层都是通过字符数组实现。
- String底层的字符数组被final修饰,所以值不能更改;StringBuffer底层的字符数组没被final修饰,所以值能更改。
- 如果final修饰的是基本数据类型,值不能变;如果是引用类型,地址不能变,值可以变。
- final修饰类(比如String和StringBuffer),只是限定类不可被继承,而非限定了其对象是否可变
static
例子
例1:
有关静态初始化块说法正确的是?ABC
A 无法直接调用静态初始化块
B 在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化
C 静态初始化块既没有访问修饰符,也没有参数
D 在程序中,用户可以控制何时执行静态初始化块
解析:
A 静态初始化块在类加载时完成,无法人为调用。
B 关于JAVA的初始化顺序:父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注:静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
类和接口
- java中,继承优先于接口实现
- java是单继承,但是可以实现多个接口
- 抽象类和接口都不能被实例化
例子
例1:关于抽象类与接口,下列说法正确的有?AC
A 优先选用接口,尽量少用抽象类
B 抽象类可以被声明使用,接口不可以被声明使用
C 抽象类和接口都不能被实例化。
D 以上说法都不对
解析:接口没有构造方法,不能被实例化。但是抽象方法可以有构造方法,不过不是用来实例化对象的,而用来初始化的。
例2:为什么尽量使用接口而非继承?
- java是单继承,但是可以实现多个接口。
- java推荐高内聚低耦合的设计思路,而继承的耦合性太强。
例3:抽象类和接口的区别
- 含有abstract修饰的类是抽象类,接口可以说成是特殊的抽象类。
- abstract class类中的方法不必是抽象的。接口中的方法定义默认为
public abstract
类型,成员变量类型默认为public static final
。 - 抽象类可以有构造方法,接口中不能有构造方法
- 抽象类中的抽象方法的访问类型可以是public,protected。接口中只能是public
- 抽象类中可以包含静态方法,接口中不能包含静态方法
锁
- 对于同步方法,修饰非静态方法 锁的是this 对象,修饰静态方法 锁的是class对象(当前对象的类对象)
- 对于同步代码块,锁的是同步监视器(也就是()中的obj)
例子
例1:关于下面一段代码,以下说法正确的是: (AC)
public class Test {
private synchronized void a() {
}
private void b() {
synchronized (this) {
}
}
private synchronized static void c() {
}
private void d() {
synchronized (Test.class) {
}
}
}
同一个对象,分别调用方法a和b,锁住的是同一个对象
同一个对象,分别调用方法a和c,锁住的是同一个对象
同一个对象,分别调用方法b和c,锁住的不是同一个对象
同一个对象,分别调用方法a、b、c,锁住的不是同一个对象
网络基础
- 1双字=2字=4字节=32位,位是最小的存储单位,也是计算机所能处理的最小的数据项
例子
例1:
off-heap是指那种内存(B)
JVM GC能管理的内存
JVM进程管理的内存
在JVM老年代内存区
在JVM新生代内存
解析:
- off-heap叫做堆外内存,意味着把内存对象分配到jvm的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机)。不属于老年代和新生代。
- JVM GC回收堆和方法区。
- 这样做的结果就是能保持一个较小的堆,以减少垃圾收集对应用的影响,缩短垃圾回收时间。
例2:
Http协议的应答中,哪一个应答码表示请求处理成功?( A)
200
100
400
300
解析:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
操作系统
- 常见的批处理作业调度算法:
先来先服务调度算法(FCFS)
短作业优先调度算法(SPF)
最高响应比优先算法(HRN)
基于优先数调度算法(HPF)
均衡调度算法 - 进程调度算法:
先进先出算法(FIFO)
时间片轮转算法(RR)
最高优先级算法(HPF)
多级队列反馈法 - 空闲分区分配算法:
首先适应算法
最佳适应算法
最坏适应算法 - 虚拟页式存储管理中页面置换算法:
理想页面置换算法
先进先出页面置换算法
最近最久未使用算法(LRU)
最少使用算法(LFU) - 磁盘调度算法:
先来先服务(FCFS)
最短寻道优先(SSTF)
扫描算法/电梯调度算法(SCAN)
循环扫描算法(CSACN)