Java面试精华:final,匿名类,哈希映射与多态详解

需积分: 9 3 下载量 93 浏览量 更新于2024-07-29 收藏 278KB DOC 举报
在Java面试笔试中,面试官常常关注以下几个关键知识点: 1. **final, finally, finalize的区别**:final用于修饰变量、方法或类,分别表示不可改变、确保执行和对象清理。`final`变量一旦赋值就不能更改,`finally`块在程序无论正常还是异常退出时都会执行,而`finalize`方法是垃圾回收器在释放对象前调用的,用于清理资源。 2. **匿名内部类**:Java允许创建匿名内部类,它可以不指定名称直接继承其他类或实现接口。但是,由于匿名类不能作为独立类型存在,所以它不能作为类的成员,通常用作事件监听器或回调函数。 3. **StaticNestedClass和Inner Class**:Static Nested Class是静态嵌套类,它有自己的独立作用域,不受外部类实例的影响;Inner Class根据访问权限分为静态和非静态,静态Inner Class与外部类共享同一个作用域,而非静态则属于外部类实例。 4. **&和&&的区别**:`&`是位运算符,进行按位与操作,`&&`是逻辑运算符,进行短路与操作。`&&`只有当左表达式为真时才会评估右表达式。 5. **HashMap和Hashtable的区别**:两者都是Map接口的实现,主要区别在于线程安全性和同步机制,HashMap是非线程安全的,性能更好,Hashtable是线程安全的但效率较低,且不允许null键值对。 6. **Collection和Collections的区别**:Collection是集合框架的基础接口,代表一组对象;Collections是集合的工具类,提供了许多实用的遍历、排序、查找等操作方法。 7. **assert的使用**:用于检查程序中的条件,如果条件为真则继续执行,否则抛出AssertionError。API级别的技术人员可能会关注代码质量保证和调试。 8. **Garbage Collection (GC)**:Java自动内存管理机制,负责回收不再使用的对象所占用的内存,避免内存泄漏。了解垃圾收集的工作原理、触发条件和回收策略是基础知识。 9. **String创建和Math.round()**:`Strings=newString("xyz")`创建了多个String对象,因为每次new操作都会创建新的实例。`Math.round()`函数根据四舍五入规则返回整数值。 10. **short类型算术运算**:`shorts1=1;s1=s1+1;`没有错误,因为short可以自动升级为int类型;而`s1+=1;`可能出错,因为`+=`会尝试自动类型提升,可能导致溢出。 11. **sleep()和wait()**:`sleep()`是Thread类的方法,使当前线程休眠;`wait()`使当前线程等待,直到其他线程唤醒。它们在多线程同步和通信中扮演重要角色。 12. **Java的goto语句**:Java已经移除了传统的`goto`语句,转向更现代的控制结构如switch和循环。 13. **面向对象的四大特性**:抽象、继承、封装和多态性是Java面向对象编程的核心概念。理解这些概念的含义和应用是基础Java知识的重要组成部分。 面试者需要深入理解这些概念,准备面对各种复杂的面试题目,不仅要掌握理论,还要能灵活运用到实际编程场景中。同时,对Java语言底层机制、数据结构和算法的熟练掌握也是必不可少的。