java复习题9

1、volatile是什么?
volatile是用于修饰属性和静态变量的关键字,当该变量的值变化时,其余访问该变量的线程立即可见。并且禁止指令重排。

2、TCP/IP协议分为几层?
应用层、传输层、网络互联层、网络接口层。

3、什么是端口?常见端口有哪些?
端口,就是应用程序用于数据交互的通道,用于实现程序间的通信。每个应用程序都有固定的端口。
tel协议:23
smtp协议:25
ftp协议:21
http协议:80

4、TCP和UDP的区别是什么?
TCP是比较可靠的传输协议,提供三次握手机制。如果数据在传输过程中有损耗,有遗失,会要求发送方重新发送。从而保证数据的完整性。
UDP是比较不可靠的传输协议。如果数据在传输中有耗损,不会要求重发,优点是速度快。

5、描述三层架构。
三层架构分为表示层、业务逻辑层、数据访问层(持久层)。
数据访问层:完成内存和数据库之间的数据交互。采用DAO模式,建立实体类和数据库表进行映射,也就是哪个类对应哪个表,哪个属性对应哪个列(ORM)。数据访问层的目的,就是完成对象数据和关系数据的转换。

业务逻辑层:完成内存数据的业务处理操作。业务逻辑层采用事务脚本模式。将一个业务中所有的操作封装成一个方法。保证一个业务方法中,所有的数据库更新操作同时成功,或同时失败。不允许出现部分成功,部分失败,这样引起数据混乱的操作。

表示层:完成数据的展示,并提供界面供用户进行数据的录入。表示层采用MVC模式。
M:模型。也就是实体类,负责数据的封装和数据的传输。
V:视图。也就是GUI窗体和GUI组件,负责提供界面和数据进行数据交互,以及数据的展示。
C:控制。也就是事件处理,负责业务流程的控制。

6、什么是事务?事务有什么特点?
事务是用户定义的一个操作序列。事务认为,这些操作序列是一个不可分割的工作单位。
事务的特点:原子性、一致性、隔离性和持久性。

7、类和类的关系有几种?
实现、泛化、依赖、聚合、组合、关联。

8、描述面向对象设计的原则。
单一职责原则:一个类只应该拥有和一个职责相关的业务,不要让一个类承担过多的职责。

开闭原则:软件实体应该面向修改关闭,面向扩展开放。其实现的核心为抽象,将相同的代码抽取出来,便于代码重用;将不同的代码抽取出来,便于功能的扩展。开闭原则是设计原则的核心原则。

依赖倒置原则:面向抽象编程,不要面向具体编程。尽量使用抽象耦合代替具体耦合。

聚合/组合复用原则:尽量使用聚合/组合实现代码复用,少用继承实现代码复用。

接口隔离原则:使用专门的接口比用统一接口好,便于项目的组织和分工。不要让开发者面对自己用不到的方法。

里氏替换原则:父类出现的地方,子类一定可以替换。如果父类方法在子类中发生了畸变,那么应该断开父子关系。

迪米特法则:软件实体之间应该尽量减少交互,不要因为一个类的变化,而导致另一个类的变化。

9、书写单例模式。
立即加载:
public class Singleton {
  private Singleton(){}
  private static Singleton instance = new Singleton();
  public static Singleton getInstance() {
return instance;
}
}

延迟加载:
public class Singleton {
private Singleton(){}
private static class Inner{
private static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return Inner.instance;
}
}

10、项目开发流程。
需求分析、设计、编码、调试、维护。

11、出现异常应该如何解决?常见的五种异常。
出现异常后,应该仔细阅读异常信息,出现的是什么异常,以及出现异常的行号。然后分析出现异常的原因,找到出现异常的地点。

NullPointerException 空指针异常,当对null值进行属性或方法调用时抛出。
ArrayIndexOutOfBoundsException 数组下标越界异常,在访问数组元素时,使用非法下标进行访问时抛出。
ClassCastException 类型转换异常,将一个类型转化为另一个类型时,新的类型不匹配指定对象时抛出。
java.io.FileNotFoundException 文件未找到异常。当操作文件流时,指定文件不存在时抛出。
java.lang.ClassNotFoundException 类未找到的异常。当加载指定路径的类时,类路径书写错误时抛出

你可能感兴趣的:(java,复习题)