java面试题

面向对象的特征有哪些方面? 

- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 

- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。

- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。

- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。方法的重写Overriding和重载Overloading是Java多态性的不同表现。

 

HashMap和LinkedHashMap的区别

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap。
Map主要用于存储健值对,根据键得到值,因此不允许键重复,但允许值重复。

     //使用迭代器遍历Map的键,根据键取值 
        Iterator it = map.keySet().iterator(); 
        while (it.hasNext()){ 
             key = it.next(); 
            value = map.get(key); 
           System.out.println("key: " + key + "; value: " + value ); 
        } 


** 
* 判断map是否包含某个键 
* @param map 
* @param key 
* @return 
*/ 
public static boolean containsKey(Map map, Object key){ 
      if (map != null){ 
           return map.containsKey(key); 
      } 
     return false; 

 

** 
* 判断map是否包含某个值
* @param map 
* @param key 
* @return 
*/ 

public static boolean containsValue(Map map, Object value){ 
        if (map != null){ 
            return map.containsValue(value); 
        } 
        return false; 

 

LinkedHashMap,键和值可以为null,可以使插入的顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。也可以是基于访问顺序,其中一个构造器:

 

java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
  答:字节流,字符流。
  字节流继承于InputStream OutputStream,
  字符流继承于Reader Writer。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

 

什么是java序列化,如何实现java序列化?
  答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。
  可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
  序列化是为了解决在对对象流进行读写操作时所引发的问题。
  序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,
  implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造
  一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以
  将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

 

面向字节的输入输出类的基类是Inputstream和Outputstream。
面向字符的输入输出类的基类是Reader和Writer。

 

posted on 2016-03-14 12:26  赵磊磊  阅读(267)  评论(0编辑  收藏  举报

导航