微信

使用微信服务,更方便

职友集>Java面试题 > Java面试题

Java面试题

2015-05-27 06:30:01 阅读( 207 )

2675人 收藏本页

标签:Java面试题

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声明。

来自IT公司面试手册

下一篇:如何面试Java程序员的基础能力?

上一篇:茁壮网络信息技术部 Java开发工程师笔试题

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

您想查看更多的信息: 面试题