Java面试题基础汇总(一)

1.    Java支持的数据类型:byte short int long float double Boolean char 。自动装箱:Java编译器在基本数据类型和对应的对象包装类型之间做的一个转换。

2.    方法覆盖:子类重新定义父类,方法的名,参数列表,返回类型相同。方法重载:相同的方法名,不同的参数和返回值。

3.    构造方法:Java中新创建变量的时候,会调用的。不支持复制构造方法。但是有克隆机制,可以用来复制引用。

4.    不支持多继承,只支持单继承,接口支持多继承。

5.    Java支持创建接口和抽象类,但是,接口中不能有方法的实现,类只可以继承一个抽象方法,类可以不实现接口的所有方法,抽象类可以在不提供接口方法实现的情况下实现接口,接口中变量都是final,方法默认都是public,接口绝对抽象,不能被实例化。

6.    值传递是对基本变量而言,不改变原变量的值,引用传递一般对于对象型变量而言,传递对象地址的副本。

7.    进程是执行着的应用程序,线程是内部的执行序列,一个进程可以有多个线程,咸亨划分小雨进程。进程占用资源,线程共享资源,进城之间通信比较困难,线程之间通信方便。

8.    继承Thread类,实现runnable接口。一般使用较多的事runnable接口这种方式。线程池Executor的方式。

9.    创建,等待,运行,阻塞

10.  同步方法:用this或者当前class对象作为锁,同步代码块可以选择以什么来加锁。

11.  监视器内部如何做到线程同步:监视器和锁在Java虚拟机中一块使用,监视器监视同步代码块,确保只有一个线程执行同步代码块。

12.  死锁:多个进程争用资源造成的一种僵局,互斥,不剥夺,请求保持,循环等待。

13.  集合类框架:指定了一组叫做元素的对象,Collection代表一组对象,Set不包含重复元素,List有顺序的collection,map可以把key映射到value。分为两类:map,collection,其中set和list接口继承了collection,一个有序,一个无序,而arraylist和linkedlist实现了list接口,hashset实现了set接口,hashmap和hashtable实现了map接口,并且hashtable是线程安全的,而hashmap性能更好。

14.  Cloneable 和Serializable跟具体的实现相关,因此应该由具体的实现来决定。克隆或者序列化。

15.  迭代器:提供了很多集合元素进行迭代的方法,可以通过迭代器的remove方法删除底层元素。

16.  Iterator的安全失败是对底层集合做拷贝,不受原集合修改的影响,快速失败会抛出异常,安全失败的永远不会抛出这类异常。

17.  Hashmap是非线程安全的,hashtable是线程安全。Hashmap的键和值都允许null存在,而hashtable则不允许,hashmap效率高,hashmap适用于单线程,但是现在一般都用hashmap。

18.  数组array,数组列表arraylist,一个静态一个动态。Arraylist和linkedlist实现的方式不同,一个机遇索引的数据接口,底层是数组,二另一个是以元素列表的形式存储数据,插入删除相对更快。

19.  CompareTo方法的compareble接口,给两个对象排序,返回负数0,只是Comparable是在集合内部的方法实现排序,Comparator是在集合外部实现排序。

20.  垃圾回收不会发生在永久代,如果永久代超过了临界值就会发生垃圾回收。

21.  两种异常:受检查的异常和不受检查的异常,不受检查的异常不需要在方法或者构造函数上声明。

22.  Throw用于方法内部,Throws用于方法声明上,Throw后面跟异常对象,Throws后边跟异常类型,Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型。

23.  Servlet用来处理客户端请求并产生动态网页的Java类,用来处理表单提交的数据产生动态内容,在无状态的http协议下管理状态信息。


猜你喜欢

转载自blog.csdn.net/mr_ming_/article/details/79611557