总结Java常见的面试题

1.面向对象的特征有哪些?

(1)抽象    (2)继承    (3)封装     (4)多态

 

2.final,finally,finalize的区别?

final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可被继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,比如关闭文件等。 

 

3.Collection和Collections的区别:

Collection是集合类的上级接口,继承他的接口主要有Set和List。

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

 

4. & 和 && 的区别:

& 是位运算符,表示按位与运算。

&& 是逻辑运算符,表示逻辑与(and)。

 

 5.是否可以在static环境中访问非static变量?

静态方法中可以直接调用同类中的静态成员,但是不能直接调用非静态成员。

如果希望在静态方法中用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。

public class Helloworld{
    String name = "i  am China";  //非静态变量name
    static String hobby = "i am OK";  //静态变量hobby
    public static void print(){
        System.out.println(hello.name);
        System.out.println(hobby);
    }
    //在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
    public void show(){
        System.out.println(name);
        System.out.println(hobby);
    }
    //静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
    public static void main(String[] args){
        Helloworld hello = new Helloworld();
        hello.show();
        print();
    }
}

6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

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

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

  • 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
  • 类可以实现很多个接口,但是只能继承一个抽象类
  • 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
  • 抽象类可以在不提供接口方法实现的情况下实现接口。
  • Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
  • Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
  • 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的
  • 8.进程和线程的区别是什么?
  • 进程是执行着的应用程序,而线程是进程内部的一个执行程序。一个进程可以有多个线程。线程又叫做轻量级进程。

9.什么是死锁(deadlock)?

两个进程都在等待对方执行完毕才能继续往下执行的时候就会发生了死锁。结果就是两个进程都陷入了无限等待中。

10.Java集合类框架的基本接口有哪些?

java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:

·Collection:代表一组对象,每一个对象都是它的子元素。

·Set:不包含重复元素的Collection。

·List:有顺序的collection,并且可以包含重复元素。

·Map:可以把键(key)映射到值(value)的对象,键不能重复。

11.Java中HashMap的工作原理是什么?

Java中的HashMap是以键值对(key-value)的形式储存元素的。HashMap需要一个hash函数,它使用hashCode()和equales()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中适合的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重要的特性是它的容量(capacity),负载因子(load factor)和扩容极限(threshold resizing)。

12.Array和ArreyList的不同点是什么?

·Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。

·Array大小是固定的,ArrayList的大小是动态变化的。

·ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等。

·对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

13.Java中垃圾回收有什么目的?什么时候进行垃圾回收?

垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。

猜你喜欢

转载自specterxu.iteye.com/blog/2349056