职友集java面试题_Java面试题

2015-05-27 06:30:01

阅读( 207 )

1、Java中的异常处理机制的简单原理和应用

原理:每当产生异常后,如果没有程序进行相应的异常处理,则程序将出现中断的现象。那么,此时实际上一旦产生一个异常后,JVM会抛出一个异常类的实例化对象。如果此时使用了try语句进行捕获的话,则可以进行异常处理。如果没有的话,则交给JVM进行处理,当try语句捕获到了异常后,会与catch 中的异常类型进行匹配,如果匹配成功,则使用此catch语句进行处理。

应用:在所有有throws关键字的地方加入 try …catch ,如果按照一个标准做法的话,try ,catch ,finally ,throw ,throws 关键字应该一起使用。

2、 垃圾回收的优点和原理,并考虑两种回收机制。

将无用的对象空间进行释放。

两种回收:自动回收,手工调用System.gc()方法,实际上相当于调用了Runtime.getRuntime().gc()方法。

3、 Error与Exception有什么区别

Error表示是由JVM进行处理的,是JVM出错。

Exception是可以由程序进行处理的,使用try…catch进行处理。

4、 谈谈final,finally,finalize的区别

final是定义常量,方法,类的,声明的方法不能被覆写,声明的类不能被继承。

finally是异常的统一出口。

finalize是垃圾回收前的收尾工作,是Object类中定义的。

5、 Anonymous Inner Class(匿名内部类)是否可以extends(继承)其他类,是否可以

implements(实现)interface(接口)?

允许继承和实现,因为匿名内部类就是在抽象类和接口的基础之上发展起来的。

6、 Static Nested Class和Inner Class的区别

使用static声明的内部类就是外部类,可以通过外部类.内部类直接访问。

普通的内部类是不能够直接被外部所访问的,需要通过外部类实例再找到内部类实例。

7、 HashMap和HashTable的区别

HashMap:

新类。

采用异步处理方式,性能较高,但是属于非线程安全。

允许设置null。

HashTable

旧类。

采用同步处理方式,性能较低,但是属于线程安全。

不允许设置null,否则将出现NullPointerException。

8、 GC是什么?为什么要有GC?

GC是垃圾收集。

使用GC可以进行垃圾空间的释放操作。

9、 String s = new String(“xyz”);创建了几个String Object?

产生了两个实例化对象,一个是匿名对象”xyz”,另一个是通过关键字new实例化的。

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

sleep()是Thread类中定义的方法,表示线程的休眠,会自动唤醒。

wait()是Object类中定义的方法,需要手工调用notify()或notifyAll()方法。

11、Java有没有goto?

goto属于保留的关键字,java中存在goto,只是无法使用。

12、数组有没有length()这个方法?String有没有length()这个方法?

数组中存在length属性,String中存在length()方法。

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

重载Overload

在一个类中定义的若干方法。

所有的方法名称相同,但是参数的类型或个数不同。

覆写Override

在继承的关系中。

子类定义了父类的同名的方法,参数类型或个数最好一样,注意访问权限不能更加 严格。

重载的时候不是依靠返回值类型区分,而是靠参数。

14、set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用= =还是equals()?它们有何区别?

依靠hascode()和equals()两个方法完成。= =属于地址值比较,而equals()属于内容比较, 使用的是equals()方法。

15、列举出一些最常见的runtime exception

NumberFormatException,ArrayOutIndexofBoundException,NullPointerException,

ClassCastException.

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

抽象类

由抽象方法和常量,变量,全局变量,构造方法,普通方法组成。

使用abstract声明。

子类通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类中的抽象方法。

存在单继承局限,一个子类只能继承一个抽象类。

抽象类可以实现多个接口。

接口

全部由抽象方法和全局变量组成。

使用interface声明。

子类通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类中的抽象方法。

不存在单继承局限,一个子类可以同时实现多个接口。

接口不能继承抽象类,但可以继承多个接口。

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

是用start()方法,因为要通知JVM进行cpu资源的分配。

18、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行, 什么时候被执行,在return前还是后?

会执行,在return前执行,只要是finally{}中的code永远会被执行。

19、编程题:写一个Singleton(单例设计)出来?

package com.study.learn;

public class Singleton {

private static final Singleton sin = new Singleton();

private Singleton(){//构造方法私有化

}

public static Singleton getInstance(){

return sin;

}

}

核心是构造方法私有化。

在Java有Runtime类,Class类都属于单例设计。

20、char型变量中能不能贮存一个中文汉字?为什么?

可以贮存,因为使用的是unicode编码。

21、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程:两种实现方法,继承Thread类,实现Runnable接口,可以实现资源共享的目的, 所有的线程操作都必须通过Thread类的start()方法启动。

同步:两种实现同步的方式,同步代码快:Synchronized(this){},同步方法。

22、float型float f = 3.4是否正确?

不正确,因为默认情况下3.4是double类型的数据。

23、String与StringBuffer的区别?

String不可修改,StringBuffer允许修改。

24、Class.forName的作用?为什么要用?

Class.forName属于向容器中加载驱动程序,例如:JDBC中曾经使用此语句。

25、int和Integer有什么区别?

int是基本数据类型,Integer是包装类。

在JDK1.5之后,可以实现自动装箱和拆箱。

26、用最有效的方法算出2乘以8等于几?

使用移位操作:2<<3

27、是否可以继承String类?

不允许,因为使用了final声明。

分享给朋友:

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息:

面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值