Java面试题(四)

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

数组没有length()这个方法,有length的属性。String有有length()这个方法。

2、构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

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

会执行,在return前执行。一般情况下,finally里面的代码一定执行。

4、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java 编程语言只有值传递参数,当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

5、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

6、编程题: 写一个Singleton出来。

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

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

class Singleton{
	private Singleton() {
		
	}
	private static Singleton instance = null;
	
	public static Singleton getInstance() {
		if(instance == null) {
			synchronized (Singleton.class){
                               instance = new Singleton();
			}
		}
		return instance;
	}
}

第二种形式:

public class Singleton {    
    private static Singleton instance = null;

   public static synchronized Singleton getInstance() {
       //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次    
       //使用时生成实例,提高了效率!
       If (instance==null){
         instance=new Singleton();
         }
        return instance;
   }
} 

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

Java语言中引入了垃圾回收机制,它使得Java程序员在编写程序的时候不再需要考虑内存管理。Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以更有效率的使用内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清理和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

8、请说出你所知道的线程同步的方法。

Wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
Sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

Notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

9、你所知道的集合类都有哪些?主要方法?

常用集合类:List和Map

List:包括 ArrayList(主要的实现类) 、LinkedList、Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形。

Map:提供了一个更通用的元素存储方法, Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

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

能够定义成为一个中文,因为java中以unicode编码,一个char占2个字节(16bit),所以放一个中文是没问题的。

Java面试题(一)

Java面试题(二)

Java面试题(三)

Java面试题(四)

Java面试题(五)

Java面试题(六)

Java面试题(七)—— 线程

Java面试题(八)—— 泛型


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值