面试5- se

来源:互联网 发布:怎样制做淘宝原图 编辑:程序博客网 时间:2024/06/06 09:39

1、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

(1)Overload是重载的意思,Override是覆盖的意思,也就是重写。

A.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

B.重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,这相当于把父类中定义的那个完全相同的方法给覆盖了。


2、abstract class和interface有什么区别?

含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

下面比较一下两者的语法区别:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。


3、String是最基本的数据类型吗?

不是,基本数据类型包括byte、int、char、long、float、double、boolean和short。


4、String 和StringBuffer的区别

String和StringBuffer,它们可以储存和操作字符串,String类表示内容不可改变的字符串。而StringBuffer类表示内容可以被修改的字符串。


5、error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。


6、请写出你最常见到的5个runtime exception。

NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException(类转换异常),ClassnotfoundException

一个整数“除以零”时,抛出ArithmeticException异常


7、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

 

有两种实现方法,分别是继承Thread类与实现Runnable接口

synchronized关键字修饰同步方法

 

8、sleep() 和 wait() 有什么区别?

    sleep是线程类(Thread)的方法,导致此线程暂停执行,指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,调用wait方法导致本线程放弃对象锁

9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

(1)如果数据将在线程间共享。(例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,)必须进行同步存取。

(2)当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。


10、启动一个线程是用run()还是start()? .

启动一个线程是调用start()方法,使线程就绪状态。一个线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码。

 

11、线程的基本概念、线程的基本状态以及状态之间的关系

 

线程:是进程中的一个执行控制单+元,执行路径

      一个进程中至少有一个线程在负责控制程序的执行


12、线程的生命周期


新建  -- start() --> 获取cpu的执行权  --》 执行---> run() 方法结束 --> 死亡

sleep()  需要等待

同步阻塞 获取锁

wait 需要 notify()


13、List、Map、Set三个接口,存取元素时,各有什么特点?

(1)  首先,List与Set它们都是单列元素的集合,Set无序且不重复

(2)  List 以特定次序来存储元素,可有重复元素

(1)       Map是双列的集合,Map 保存的键值对,键不能重复

 

14、说出ArrayList,Vector,LinkedList的存储性能和特性

ArrayList和Vecto底层实现是数组,查询快,增删慢

LinkedList底层实现是链表,查询慢,增删快


15、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

1.  把java对象变成字节流的形式进行传输,就是序列化。