【转】JAVA面试汇总(自查)2

第二十一,abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能


第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类
(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。


第二十三,启动一个线程是用run()还是
start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。




第二十四,构造器Constructor是否可被
override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading


第二十五,是否可以继承String
?
String类是final类故不可以继承。


第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法
?
不能,一个对象的一个synchronized方法只能由一个线程访问。


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



第二十八,编程题: 用最有效率的方法算出2乘以8等於几
?
C背景的程序员特别喜欢问这种问题。


2 << 3

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
?
不对,有相同的hash code


第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。



第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String
?
switch
expr1)中,expr1是一个整数表达式。因此传递给 switch case 语句的参数应该是 int short char 或者 bytelong,string 都不能作用于swtich


第三十二,编程题: 写一个Singleton出来。

Singleton
模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式
:
第一种形式: 定义一个类,它的构造函数为private的,它有一个staticprivate的该类变量,在类初始化时实例话,通过一个publicgetInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton {
  
private Singleton(){}
  //在自己内部定义自己一个实例,是不是很奇怪?

  //注意这是private 只供内部调用

  
private static Singleton instance = new Singleton();
  //这里提供了一个供外部访问本class的静态方法,可以直接访问  

  
public static Singleton getInstance() {
    return instance;   

  
}
}
第二种形式
:
public class Singleton {
  
private static Singleton instance = null;
  
public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     

  //使用时生成实例,提高了效率!

  
if (instance==null)
    instance
new Singleton();
return instance;
  
}
}
其他形式
:
定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些




Hashtable
HashMap
Hashtable
继承自Dictionary类,而HashMapJava1.2引进的Map interface的一个实现


HashMap
允许将null作为一个entrykey或者value,而Hashtable不允许


还有就是,HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。因为contains方法容易让人引起误解。


最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

多个线程访问Hashtable时,不需要自己为它的方法实现同步,而
HashMap
就必须为之提供外同步。


Hashtable
HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

9STRINGSTRINGBUFFER的区别。

答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffertoString()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值