Android面试题

来源:互联网 发布:dj网络红歌 编辑:程序博客网 时间:2024/06/06 12:57

1、Java的根类及方法?(鼎智通讯)

根类:Object

方法如下:

protected Objectclone()booleanequals(Object obj)protected voidfinalize()Class<?>getClass()inthashCode()voidnotify()voidnotifyAll()StringtoString()voidwait()voidwait(long timeout)voidwait(long timeout, int nanos)
2、"=="与"equals()"的区别?(鼎智通讯)

参考:http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

3、error与exception的区别?(鼎智通讯)


回答:Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。  Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

4、hashmap与hashtable的区别?(鼎智通讯)

 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

5、线程的启动方法,Thread与Runnable的区别?(鼎智通讯)

(1)适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序的代码,数据有效的分离,较好地体现了面向对象的设计思想。 

(2)可以避免由于Java的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方式,那么,这个类就只能采用实现Runnable接口的方式了。 

(3)有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。当多个线程的执行代码来自同一个类的实例时,即称它们共享相同的代码。多个线程操作相同的数据,与它们的代码无关。当共享访问相同的对象是,即它们共享相同的数据。当线程被构造时,需要的代码和数据通过一个对象作为构造函数实参传递进去,这个对象就是一个实现了Runnable接口的类的实例。 

6、产生Java对象的方法有几种,分别是?(鼎智通讯)

a : new

b : clone

c : 反射

7、下列程序输出结果?(鼎智通讯)

public class ClassA {


public ClassA(){
System.out.println("ClassAConstructor");
}
{ System.out.println("ClassA{}");}
static{
System.out.println("ClassAStatic");
}
}


public class ClassB extends ClassA {
public ClassB(){
System.out.println("ClassBcontructor");
}
{ System.out.println("ClassB{}");}
static{
System.out.println("ClassBStatic");
}
}

public class TEST {

/**
* @param args
*/
public static void main(String[] args) {
new ClassB();
}

}

运行结果:

ClassAStatic
ClassBStatic
ClassA{}
ClassAConstructor
ClassB{}
ClassBcontructor

(说明:

括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前执行!其实初始化块就是构造器的补充,初始化快是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!!好处是可以提高初始化块的复用,提高整个应用的可维护性。)


0 0
原创粉丝点击