Java|资深架构师整理分享60道全套Java核心技术面试题及答案( 二 )


ConcurrentModificationException DOMException EmptyStackException IllegalArgumentException IllegalMonitorStateException IllegalPathStateException IllegalStateException ImagingOpException IndexOutOfBoundsException MissingResourceException NegativeArraySizeException NoSuchElementException NullPointerException ProfileDataException ProviderException RasterFormatException SecurityException SystemException UndeclaredThrowableException UnmodifiableSetException UnsupportedOperationException
15、error 和 exception 有什么区别
答:error 表示恢复不是不可能但很困难的情况下的一种严重问题 。 比如说内存溢出 。 不可能指望程序能处理这样的情况exception 表示一种设计或实现问题 。 也就是说 , 它表示如果程序运行正常 , 从不会发生的情况
16、List Set Map 是否继承自 Collection 接口
答:List , Set 是 , Map 不是
17、abstract class 和 interface 有什么区别答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class) , 它用于要创建一个体现某些基本行为的类 , 并为该类声明方法 , 但不能在该类中实现该类的情况 。 不能创建 abstract 类的实例 。 然而可以创建一个变量 , 其类型是一个抽象类 , 并让它指向具体子类的一个实例 。
不能有抽象构造函数或抽象静态方法 。 Abstract 类的子类为它们父类中的所有抽象方法提供实现 , 否则它们也是抽象类为 。 取而代之 , 在子类中实现该方法 。 知道其行为的其它类可以在类中实现这些方法接口(interface)是抽象类的变体 。 在接口中 , 所有方法都是抽象的 。 多继承性可通过实现这样的接口而获得 。 接口中的所有方法都是抽象的 , 没有一个有程序体 。 接口只可以定义 static final 成员变量 。 接口的实现与子类相似 , 除了该实现类不能从接口定义中继承行为 。 当类实现特殊接口时 , 它定义(即将程序体给予)所有这种接口的方法 。 然后 , 它可以在实现了该接口的类的任何对象上调用接口的方法 。 由于有抽象类 , 它允许使用接口名作为引用变量的类型 。 通常的动态联编将生效 。 引用可以转换到接口类型或从接口类型转换 , instanceof 运算符可以用来决定某对象的类是否实现了接口 。
18、abstract 的 method 是否可同时是 static是否可同时是 native , 是否可同时是 synchronized
答:都不能
19、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)
答:接口可以继承接口 。 抽象类可以实现(implements)接口 , 抽象类是否可继承实体类 , 但前提是实体类必须有明确的构造函数
20、构造器 Constructor 是否可被 override
答:构造器 Constructor 不能被继承 , 因此不能重写 Overriding , 但可以被重载 Overloading
21、是否可以继承 String 类
答:String 类是 final 类故不可以继承
22、try {里有一个 return 语句 , 那么紧跟在这个 try 后的 finally {里的 code 会不会被执行 , 什么时候被执行 , 在 return 前还是后
答:会执行 , 在 return 前执行
23、用最有效率的方法算出 2 乘以 8 等於几
答:2 << 3
24、两个对象值相同(x.equals(y) == true) , 但却可有不同的 hash code , 这句话对不对
答:不对 , 有相同的 hash code
25、当一个对象被当作参数传递到一个方法后 , 此方法可改变这个对象的属性 , 并可返回变化后的结果 , 那么这里到底是值传递还是引用传递
答:是值传递 。 Java 编程语言只有值传递参数 。 当一个对象实例作为一个参数被传递到方法中时 , 参数的值就是对该对象的引用 。 对象的内容可以在被调用的方法中改变 , 但对象的引用是永远不会改变的
26、swtich 是否能作用在 byte 上 , 是否能作用在 long 上 , 是否能作用在 String 上
答:witch(expr1)中 , expr1 是一个整数表达式 。 因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte 。 longstring 都不能作用于 swtich
27、ArrayList 和 Vector 的区别HashMap 和 Hashtable 的区别
答:就 ArrayList 与 Vector 主要从二方面来说.一.同步性:Vector 是线程安全的 , 也就是说是同步的 , 而 ArrayList 是线程序不安全的 , 不是同步的
二.数据增长:当需要增长时Vector 默认增长为原来一培 , 而 ArrayList 却是原来的一半就 HashMap 与 HashTable 主要从三方面来说 。
一.历史原因:Hashtable 是基于陈旧的 Dictionary 类的 , HashMap 是 Java 1.2 引进的 Map接口的一个实现
二.同步性:Hashtable 是线程安全的 , 也就是说是同步的 , 而 HashMap 是线程序不安全的 , 不是同步的