Java面试题总结一

来源:互联网 发布:sql语言 编辑:程序博客网 时间:2024/05/22 13:57

Java语言在当前开发语言排行中,仍旧占有很大比重。对于是不是选择学习Java,还没有上车的小伙伴们,赶快上车吧。以下是参考设计模式的书,总结的Java中常见的一些面试题,作为一些小的技术点,如下:

1.接口和抽象类的区别是什么

   抽象类可以有实例方法,并实现默认的功能。而接口只能声明常量和实例方法,但并不能实现默认功能,且所有方法都是抽象的。一个类可以声明为抽象类,即使其并没有包含任何的抽象方法,这样做只是为了防止被实例化。

  一个接口只有公共成员对象,没有具体实现,一个抽象类和一般的类一样,具有具体的成员,但一般还会包含至少一个抽象方法(包含抽象方法的一定是抽象类,但是抽象类并不一定包含抽象方法)

public abstract class TestAbstrctClass{    //抽象类中 不一定包含抽象方法    abstract void methodOne();        //也可以包含普通方法    public void methodTwo(){            }}//接口中定义的方法都是 抽象方法,定义的变量都是 常量public interface TestInterface{    public int methodOne();    public float methodTwo();}

2.在Java中垃圾回收的目的是什么,在什么情况下使用?

垃圾回收的目的是识别并丢弃程序中不再使用(超出范围)的对象,对保证系统资源的再利用,当一个Java对象被当做垃圾进行回收时,说明使用它的程序已经不再使用该对象了。


3.什么是值传递什么是引用传递?

  引用传递是指通过传递对象的地址,而不是通过传递对象的值实现的,传值是指通过对对象数值的复制来进行传递。


4.什么是HasMap 和什么是 Map?

  Map是一个接口,而hasMap是实现这个接口的类。


5.HashMap 和 HashTable 的区别是什么?

  除了没有对线程同步和允许空值之外,HashMap 大体相当于 HashTable(HashMap允许键值均为null,而hashTable不允许),HashMap并不保证映射的顺序将随时间保持恒定,HashMap是非同步的,而hashTable是同步的。


6.Vector 和 ArrayList的区别是什么?

   Vector 是同步的,ArrayList是非同步的。


7.Swing 和 Awt 有什么区别?

   Awt 是重组件,Swing是轻组件,因此Swing比Awt运行得更快。


8.构造函数和方法之间的区别是什么?

  构造函数是用来实例化对象的成员函数,它本身于类的名字相同。但没有返回类型,并且使用new 操作符调用。方法是一个类的普通成员函数,他有自己的名字 一个返回类型,通过操作符.来调用。


9.什么是迭代器?

  Java集合类中能够通过java.util.Iterator接口遍历集合内容。这个接口允许我们依次查询集合中的对象,并对每个对象进行相应的操作。

  使用迭代器时需要注意,迭代器本身包含一个在获取迭代器时集合内容的快照,一般不宜在使用迭代器遍历集合时对集合进行修改。


10.final修饰的作用什么?

   一个final类不允许被扩展,一个final方法在类集成中不允许被继承,一个final变量,不允许修改它的值。


11.Java中static的修饰符的作用是什么?

   一个类可以存在很对的实例,类中的对象也会存在多个实例,但是使用statis修饰的内部静态类只有一个。这就是我们可以直接使用内部静态类而不用创建这个类的实例。

  静态方法是一种隐式的final修饰符。因为重写是基于对象类型的,而静态方法会附加到静态类中,而不能作为独立的对象存在。

  一个在父类中的静态方法可以被封装在子类中的静态方法中,前提是原先的方法没有被final修饰。我们不能使用一个非静态的方法来重写一个静态方法,换句话说 就是我们不能使用子类中的实例方法修改静态方法。


12.什么是重写?

    在类中定义一个方法,之后再子类中使用相同的名称,返回类型和参数重新定义了这个方法,那么再子类中的这个方法就是重写父类的方法。这就是重写。


13.如果将main方法声明为private,会发生什么?

   程序能够完全编译,但是在运行时会报:Main method is not public 的提示信息。


14.将main方法中的static 修饰符去掉会发生什么?

  程序能够编译,但是在运行时会抛出一个NoSuchMethodError的错误。


15.如果将public static void 替换成static public void,会发生什么?

  能够正常编译和运行。


16.如果不给main方法提供字符串参数,会发什么什么?

   程序能够编译,但是在运行时会报NoSuchMethodError的错。


17.main方法中字符串参数的第一个参数是什么?

   字符串数组是空的,他没有任何参数。这不同于C/C++的程序名称作为第一个参数。


18.如果我们不提供命令行参数,然后在main方法的字符串属猪会是空还是null?

  他是空的,不是null.


19.如何用一行代码证明数组是null不是空?

  打印length值,如果打印是0表示是空,如果是null 将会打印出NullPointException的异常。


20.要运行Java程序,需要配置哪些环境变量?

  需要配置Path  和 ClassPath