`

java经典面试题一

阅读更多

1、谈谈final、finally、finalize的区别?

     final 是修饰符关键字,如果一个类被它修饰,意味着它不能再派生出新的子类,不能作为父类被继承,因此它不能和   abstract一起使用。如果修饰变量或方法,可以保证它不再改变。

     finally 异常处理时,finally语句块,执行任何清除操作。如果抛出异常,相匹配的catch就要执行,然后再执行finally

     finalize 方法名,java中允许实用finalize()在垃圾回收器将对象从内存在清除前做的必要清除工作。

 

2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
     匿名内部类是没有名字的内部类,不能extends其他类,但可以作为接口,让另一个类实现。

 

3、&和&&的区别

     &是位运算符,&&布尔运算符

 

4、HasHMap和HasHTable的区别

     都属于map的接口类,实现将唯一键映射到特定个值。HasHMap没有分类或排序,允许nul键和多个null值。而后者不允许。

 

5、Collection 和 Collections的区别。

     Collections是个java.util下的类,包含有各种有关它集合操作的静态方法。    Collection是个java.util下的接口,它是各种集合结构的父接口。

 

6、GC是什么? 为什么要有GC? (基础)。

     GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
  System.gc()    Runtime.getRuntime().gc() 

 

7、String s = new String("xyz");创建了几个String Object?

      两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。


8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

     Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

 

9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

     short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 = (short)(s1 + 1) 。short s1 = 1; s1 += 1正确。


10、sleep() 和 wait() 有什么区别? 搞线程的最爱

       sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级。   (b)正在运行的线程因为其它原因而阻塞。   

      wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

 

11、 Java有没有goto?
        Goto—java中的保留字,现在没有在java中使用。

 

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


13、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 
        方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写  (Overriding)。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

 

14、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 
      Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。    equals() 和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

 

15、error和exception有什么区别? 
       error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情

况。exception 表示一种设计或实现问题

 

16、List, Set, Map是否继承自 Collection接口? 
       List,Set是
  Map不是

 

17、abstract class和interface有什么区别?
        声明方法的存在而不去实现它的类被叫做抽象类(abstract class),不能创建abstract 类的实例。接口(interface)是抽象类的变体在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。

 

18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 
       都不能


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


20、启动一个线程是用run()还是start()?

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

 

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

 

22、 是否可以继承String类? 
   String类是final类故不可以继承。 

 

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

 

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

 

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


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

 

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




 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics