Java面试必备:核心概念与题目解析

需积分: 0 1 下载量 49 浏览量 更新于2024-09-12 收藏 52KB DOC 举报
"Java面试题及答案" Java面试题涵盖了多个关键知识点,这些知识点对于理解和掌握Java编程语言至关重要。以下是对这些面试题的详细解答: 1. **final, finally, finalize的区别** - `final` 关键字用于声明变量、方法或类不可变。 - `finally` 用于异常处理,确保在程序执行过程中,无论是否发生异常,都会执行的代码块。 - `finalize` 是一个特殊的方法,当垃圾收集器确定对象不再被引用时,会调用此方法进行清理工作。 2. **AnonymousInnerClass(匿名内部类)** - 匿名内部类可以继承其他类,但只能继承一个类。 - 它可以实现一个或多个接口。 3. **StaticNestedClass和InnerClass的不同** - 静态嵌套类(Static Nested Class)与外部类之间没有实例关联,可以直接通过类名访问。 - 内部类(Inner Class)与外部类有实例关联,需要外部类的实例才能创建内部类的对象。 4. **& 和 && 的区别** - `&` 操作符是按位与运算符,也可以在逻辑表达式中使用,此时它会始终计算两边的操作数。 - `&&` 是逻辑与运算符,如果第一个操作数为假,不会计算第二个操作数。 5. **HashMap和Hashtable的区别** - `HashMap` 不是线程安全的,而 `Hashtable` 是线程安全的。 - `HashMap` 允许使用 `null` 键和值,而 `Hashtable` 不允许。 - `HashMap` 使用 `HashMap.Entry` 来存储键值对,而 `Hashtable` 使用 `Dictionary`。 6. **Collection和Collections的区别** - `Collection` 是所有集合接口的根接口,代表一组不特定类型的对象集合。 - `Collections` 是一个工具类,提供了一系列静态方法,用于操作集合,如排序、搜索和修改。 7. **assert的使用** 断言(assert)用于在开发阶段检查代码的正确性,通常在测试环境中启用,生产环境中禁用。 8. **GC是什么?为什么要有GC?** 垃圾收集器(Garbage Collector, GC)是Java自动内存管理的一部分,负责回收不再使用的对象所占用的内存。它避免了程序员手动管理内存,减少了内存泄漏和内存溢出的问题。 9. **Strings=newString("xyz"); 创建了几个StringObject?** 创建了两个对象:一个在字符串常量池中,一个在堆上。 10. **Math.round(11.5) 和 Math.round(-11.5)** `Math.round(11.5)` 等于 12,`Math.round(-11.5)` 等于 -11。`Math.round()` 方法四舍五入到最接近的整数。 11. **shorts1=1;s1=s1+1; 与 shorts1=1;s1+=1; 的错误** 第一句会导致编译错误,因为短整型无法直接与整型相加,需要进行类型转换。第二句是合法的,因为Java会自动处理这种类型提升。 12. **sleep() 和 wait() 的区别** - `sleep()` 使当前线程休眠指定的毫秒数,不会释放对象锁。 - `wait()` 让当前线程等待,直到其他线程调用 `notify()` 或 `notifyAll()` 方法,释放对象锁。 13. **Java是否有goto?** Java中没有 `goto` 关键字。 14. **数组是否有length()方法?String是否有length()方法?** 数组没有 `length()` 方法,但有一个 `length` 属性。字符串 `String` 类有 `length()` 方法。 15. **Overload 和 Override 的区别** - 重载(Overload)是指在同一个类中,方法名相同但参数列表不同的方法。 - 重写(Override)是指子类对父类方法的重新定义,要求方法名、返回类型和参数列表完全一致。 16. **Set里的元素区分重复与否** Set使用 `equals()` 方法来判断元素是否重复,基于对象的平等性。 17. **常见的RuntimeException** 例如 `NullPointerException`,当试图访问或操作空对象时抛出。 18. **error和exception的区别** - Error 是程序无法恢复的严重问题,如 `OutOfMemoryError`。 - Exception 是程序可以捕获并尝试恢复的异常情况。 19. **List, Set, Map是否继承自Collection接口?** List 和 Set 继承自 Collection 接口,而 Map 不是,Map 接口继承自 `Iterable` 接口。 20. **abstractclass和interface的区别** - 抽象类可以有构造方法、字段、初始化块以及非抽象方法。 - 接口只有抽象方法和常量,不能有字段和初始化块。 21. **abstract的method是否可同时是static** 抽象方法不能是静态的,因为静态方法属于类,而抽象方法需要在子类中被覆盖,与实例相关联。