Java面试必备:基础题解析与难点剖析

需积分: 0 0 下载量 52 浏览量 更新于2024-07-26 收藏 324KB DOC 举报
"Java面试题及常见知识点解析" Java面试题涵盖了多个核心概念,这些概念是理解和熟练使用Java语言的关键。让我们逐一深入探讨这些知识点。 1. **final, finally, finalize的区别** - `final`:用于修饰类、方法或变量,表示不可变性。对于类,final意味着它不能有子类;对于方法,final防止被重写;对于变量,final一旦赋值后就不能改变。 - `finally`:在异常处理中使用,无论是否发生异常,finally块中的代码总会被执行,确保资源的正确释放。 - `finalize()`:对象被垃圾回收前调用的方法,用于清理资源,但不应依赖此方法进行必要的清理,因为其调用时间不确定。 2. **匿名内部类**:可以继承其他类或实现接口,常用于简洁的事件处理或一次性使用的类。 3. **StaticNestedClass和Inner Class**:内部类(Inner Class)是嵌套在另一个类内部的类,有非静态(成员内部类)和静态(静态嵌套类)两种。非静态内部类可以直接访问外部类的非静态成员,而静态内部类不能,但它们不需要外部类实例即可创建。 4. **& 和 && 的区别**:`&` 是按位与运算符,`&&` 是逻辑与运算符。在布尔表达式中,`&&` 会进行短路运算,如果左侧表达式为假,右侧表达式不会被执行。 5. **HashMap和Hashtable的区别**:HashMap是非线程安全的,允许null键和值;Hashtable是线程安全的,不允许null键和值,且两个方法的遍历顺序不同。 6. **Collection和Collections的区别**:Collection是所有集合框架的顶级接口,代表单列集合,如List、Set。Collections是工具类,提供了一系列静态方法,用于对集合进行操作,如排序、查找等。 7. **assert**:断言,用于测试代码中的假设,在开发阶段帮助找出问题,生产环境中通常关闭。 8. **GC(Garbage Collection)**:垃圾收集器,自动管理Java内存,回收不再使用的对象所占用的内存空间,以避免内存泄漏。 9. **Strings=new String("xyz");创建了几个StringObject?**:创建了两个对象,一个在常量池,一个在堆内存。 10. **Math.round()**:返回最接近参数的长整型数值。Math.round(11.5)等于12,Math.round(-11.5)等于-11。 11. **shorts1=1;s1=s1+1;和shorts1=1;s1+=1;的区别**:前者尝试将两个short相加后再赋值,可能导致编译错误,因为结果可能超出了short的范围。后者是增量操作,Java会自动处理类型提升,安全地将结果赋值回short变量。 12. **sleep()和wait()**:sleep()是Thread类的方法,使当前线程暂停指定时间,不释放锁;wait()是Object类的方法,使线程等待,释放锁,直到被notify()或notifyAll()唤醒。 面试中这些问题旨在考察候选人的基础知识、理解和应用能力,准备面试时,不仅要知道这些知识点,还要理解它们背后的原理和实际应用场景。