多迪面试技巧——Java面试常被问到的题目+解答


 一、abstractclassinterface有什么区别

抽象类可以有抽象方法和普通方法,也可以有自己的数据成员。接口只允许有常量,抽象方法和静态类成员。接口可以被多继承,抽象类不行。接口被实现时,所有方法必须被重写。抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类。

 

第二staticnestedclassinnerclass的不同,说得越多越好(面试题有的很笼统)

static nested class 指静态嵌套类,或称嵌套类,C++中常用的说法,inner class指内部类,JAVA中的说法。

 

内部类是一个类内部类的统称,具体分为四种:成员类,静态成员类,局部类,匿名类。其中匿名类是局部类的特殊情况。对于成员类和静态成员类都存在于类的顶层代码中。相当于类的静态方法和非静态方法的关系。区别在于成员类依赖于类实例而静态成员类不依赖。所以前者只能访问实例方法和成员而后者只能访问静态方法和成员。它们都用于创建一个只和当前类有关。和其它类无关的依赖类.是否静态取决于是否依赖类的实例。局部类相当于局部变量。存在于类的局部代码中。相当于在main()中随意定义和使用类。唯一的不同是它只能使用final型的局部变量。这和垃圾回收机制有关。即局部变量会在代码块结束后被回收。而对象不一定。所以对象只能使用final的局部变量。同样,局部类存在的局部代码块也可以有静态和非静态的差别。局部类罪常见的应用就是匿名类。匿名类就是无名子的局部类。常在SWING设计中的添加监听中出现。

 

static nested class相当于inner class中的静态成员类。

 

三、hashmaphashtable的区别常问。

hashmap可以看做是hashtable的替代者,HashMapValueKey都可为NULLHashTable不可以,同时,HashTable是线程同步的,而HashMap不是.HashTableIterator遍历,HashMapEnumeration遍历。HashTablehash数组默认大小是11,增加的方式是 old*2+1HashMaphash数组的默认大小是16,而且一定是2的指数。计算index的方法不同,HashTable直接利用hashcode()得出,HashMaphashcode重新计算得出。

 

四、什么时候用assert

api级的技术人员有可能会问这个。

 

在调试和优化中使用,用于判断逻辑表达式真假,若为假,终止程序并返回异常.assertif的优点在于可以选择是否开启assert检查,也就是说assert产生的测试代码可以在正式发布时候选择忽略,这带来极大便利,默认assert检查是关闭的。此外,Junit相比assert来说,有着相似但更强大的测试能力。

 

五、gc是什么?为什么要有gc

GC garbage collection(垃圾收集),是JAVA用于回收内存的一种方式,主要的实现方法有引用计数,标记回收,复制清除等,GC可以避免内存泄露和堆栈溢出,有效提高内存的利用效率,同时将程序员从繁琐的内存管理中释放出来。

 

六、数组有没有length()这个方法string有没有length()这个方法

数组无,数组是成员变量,length.String是成员函数length();我不知道这个题意义何在,平时都用eclipse,会在意这个么

 

七、给我一个你最常见到的runtimeexception

如果你这个答不出来,面试的人会认为你没有实际编程经验。

 

NullPointerException,空引用异常.说实话,中软的笔试题就有这个,我连题目意思都理解错了,压根没认出来runtime exception是指运行时异常。