Java面向对象常见面试题

发布于:2024-03-23 ⋅ 阅读:(155) ⋅ 点赞:(0)
序号 问题 详细答案
21 什么是java序列化,如何实现java序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
 序列化的实现:将需要被序列化的类实现Serializable接口
 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流
22 java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?  答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便
23 HashTable和HashMap区别 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
24 怎么遍历HashMap集合 首先要通过keySet()方法得到键的集合,再得到键集合的迭代器,进行迭代,通过get(key)得到值
25 Collection与Collections区别  Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
26 什么叫单例模式 私有化构造方法,只有在本类中才可以new 那个对象,通过一个方法返回出去public class Singleton {
  private static Singleton instance = null;
private  Singleton(){}
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}
27 什么叫工厂模式 工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
28 创建线程的方式,以及分别怎么启动线程 有两种实现方法,分别是继承Thread类与实现Runnable接口。继承Thread 可直接用对象.start()方法启动线程,实现Runnable接口的可以定义一个Thread类的对象,通过构造方法把实现Runnable接口的类的对象初始化进去,用Thread类对象.start()方法启动线程。
29 通讯的方式有几种,以及区别 UDP 和 Tcp/Ip   UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!通信效果高,但也正因为如此,它的可靠性不如TCP协议高。 UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接,适用于一次传输大量数据,对可靠性要求高的应用环境。
30 什么是多态,举例在代码那些地方用到了 相同的操作不同的实现,例如在方法重载重写及接口的实现。
31 list与普通数组的区别 前者的长度是动态的,类型为object,后者在申明是需确定长度且类型是一致的。
32 string stringbuffer StringBuilder 有什么区别 String是“字符串常量”,也就是不可改变的对象。                  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。                                      StringBuffer:线程安全的,StringBuilder:线程非安全的
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
33 流按方向划分分为?按传送的内容划分分为? 方向划分:输入输出流。     内容分为:字节流,字符流,对象流                  
34 访问修饰符有哪些?分别的作用? public :能被所有的类(接口、成员)访问。
protected:只能被本类、同一个包中的类访问;如果在其他包中被访问,则必须是该成员所属类的子类。
private:成员变量和方法都只能在定义它的类中被访问,其他类都访问不到。对成员变量的进行获取和更改,一般用get(),set() ,public 方法。实现了Java面向对象的封装思想。
缺省:访问权限与protected相似,但修饰类成员时不同包中的子类不能访问。
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到