不得不知的Java工程师常见面试会遇到的陷阱

不得不知的Java工程师常见面试会遇到的陷阱

第一,谈谈final, finally, finalize的区别。

最常被问到。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

第四,&和&&的区别。

这个问得很少。

第五,HashMap和Hashtable的区别。

常问。

第六,Collection 和 Collections的区别。

你千万别说一个是单数一个是复数。

第七,什么时候用assert。

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

第八,GC是什么? 为什么要有GC?

基础。

第九,String s = new String("xyz");创建了几个String Object?

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

面试题都是很变态的,要做好受虐的准备。

第十二,sleep() 和 wait() 有什么区别?

搞线程的最爱。

第十三,Java有没有goto?

很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。

第十四,数组有没有length()这个方法? String有没有length()这个方法?

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

常问。

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

第十七,给我一个你最常见到的runtime exception。

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

第十八,error和exception有什么区别?

第十九,List, Set, Map是否继承自Collection接口?

第二十,abstract class和interface有什么区别?

常问。

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

第二十三,启动一个线程是用run()还是start()?

第二十四,构造器Constructor是否可被override?

第二十五,是否可以继承String类?

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

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

第二十八,编程题: 用最有效率的方法算出2乘以8等於几?

有C背景的程序员特别喜欢问这种问题。

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

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

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

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

第一,谈谈final, finally, finalize的区别。

最常被问到。

--------------------------------------------------------------------------------

final是用来定义一个常数,或者是不能overload的方法,不能继承的类。

finally是try/catch block的。

finalize是gc的时候调用的。

quote:

--------------------------------------------------------------------------------

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

--------------------------------------------------------------------------------

不记得了,好像不可以继承,只能实现接口。

quote:

--------------------------------------------------------------------------------

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

--------------------------------------------------------------------------------

不记得。用的非常少。

quote:

--------------------------------------------------------------------------------

第四,&和&&的区别。

这个问得很少。

--------------------------------------------------------------------------------

第一个会判断所有条件,第二个只要有一个条件不符合就会返回false

quote:

--------------------------------------------------------------------------------

第五,HashMap和Hashtable的区别。

常问。

--------------------------------------------------------------------------------

第一个不是synchronized。

quote:

--------------------------------------------------------------------------------

第六,Collection 和 Collections的区别。

你千万别说一个是单数一个是复数。

--------------------------------------------------------------------------------

Collections只是一个utility class

quote:

--------------------------------------------------------------------------------

第七,什么时候用assert。

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

--------------------------------------------------------------------------------

什么时候都可以啊。assert一般只是作为一个constraint的判断。不过只有1.4之后才有,而且编译的时候必须打开一个flag。

quote:

--------------------------------------------------------------------------------

第八,GC是什么? 为什么要有GC?

基础。

--------------------------------------------------------------------------------

垃圾回收,不用自己做destructor。不过有时候觉得C++的这个东西还是挺方便的。就是一不小心就容易出错。

quote:

--------------------------------------------------------------------------------

第九,String s = new String("xyz");创建了几个String Object?

--------------------------------------------------------------------------------

比较无聊。可能是两个吧。

quote:

--------------------------------------------------------------------------------

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

--------------------------------------------------------------------------------

12.0, -11.0

quote:

--------------------------------------------------------------------------------

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

面试题都是很变态的,要做好受虐的准备。

--------------------------------------------------------------------------------

不知道

quote:

--------------------------------------------------------------------------------

第十二,sleep() 和 wait() 有什么区别?

搞线程的最爱。

--------------------------------------------------------------------------------

一个是停止一段时间,另外一个是等待条件。wait()必须有相应的notify()或者notifyAll()

quote:

--------------------------------------------------------------------------------

第十三,Java有没有goto?

很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。

--------------------------------------------------------------------------------

是保留字,但是没有实现。

quote:

--------------------------------------------------------------------------------

第十四,数组有没有length()这个方法? String有没有length()这个方法?

--------------------------------------------------------------------------------

array没有,string有。

quote:

--------------------------------------------------------------------------------

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

常问。

--------------------------------------------------------------------------------

overload不能改变方法的signature。这个是继承的东西。override是同一个类的。

quote:

--------------------------------------------------------------------------------

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

--------------------------------------------------------------------------------

equals()

quote:

--------------------------------------------------------------------------------

第十七,给我一个你最常见到的runtime exception。

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

--------------------------------------------------------------------------------

NullPointerException

quote:

--------------------------------------------------------------------------------

第十八,error和exception有什么区别?

--------------------------------------------------------------------------------

Error是JVM的错误信息。Exception是程序的。

quote:

--------------------------------------------------------------------------------

第十九,List, Set, Map是否继承自Collection接口?

--------------------------------------------------------------------------------

记不住了。

quote:

--------------------------------------------------------------------------------

第二十,abstract class和interface有什么区别?

常问。

--------------------------------------------------------------------------------

这个。。。很多很多。

quote:

--------------------------------------------------------------------------------

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

--------------------------------------------------------------------------------

synchronized不是限制词,所以随便什么都可以。abstract只能在继承中实现,所以需要this指针,因此必须不是static的。是不是native咱没试过。

quote:

--------------------------------------------------------------------------------

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

--------------------------------------------------------------------------------

应该都可以吧?

quote:

--------------------------------------------------------------------------------

第二十三,启动一个线程是用run()还是start()?

--------------------------------------------------------------------------------

应该是start()。不过你也可以调用run()

quote:

--------------------------------------------------------------------------------

第二十四,构造器Constructor是否可被override?

--------------------------------------------------------------------------------

可以

quote:

--------------------------------------------------------------------------------

第二十五,是否可以继承String类?

--------------------------------------------------------------------------------

不可以。String是final class

quote:

--------------------------------------------------------------------------------

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

--------------------------------------------------------------------------------

可以,如果不是对同样的monitor synchronized的话。

quote:

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

会,先于return

quote:

--------------------------------------------------------------------------------

第二十八,编程题: 用最有效率的方法算出2乘以8等於几?

有C背景的程序员特别喜欢问这种问题。

--------------------------------------------------------------------------------

bit shift。不过比较变态。

quote:

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

完全可能

quote:

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

java中的所有对象参数都是引用传递。只有primitive类型才是值传递。

quote:

--------------------------------------------------------------------------------

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

--------------------------------------------------------------------------------

所有不是float, double, long的数值类型都可以。

public class Singleton

{

private static Singleton singleton;

private Singleton(){}

public synchronized static Singleton getInstance()

{

if (singleton==null)

singleton = new Singleton();

return singleton;

}

}


分享到:


相關文章: