龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java 面试中的陷阱[转载]

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
第一,谈谈final, finally, finalize的区别。 最常被问到。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继续)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和

第一,谈谈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—修饰符(要害字)假如一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继续。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
  
  finally—再异常处理时提供 finally 块来执行任何清除操作。假如抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(假如有的话)。
  finalize—方法名。Java 技术答应使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继续了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
  
  第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继续)其它类,是否可以implements(实现)interface(接口)?
  
  匿名的内部类是没有名字的内部类。不能extends(继续) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
  
  第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
  Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1
  
  

精彩图集

赞助商链接