Java面试必备知识点:作用域、内部类与断言

需积分: 0 0 下载量 12 浏览量 更新于2024-07-25 收藏 200KB DOC 举报
"java面试宝典" Java面试中涉及的知识点广泛且深入,下面是对部分面试题的详细解析: 1. **作用域public,private,protected,以及不写时的区别** - `public`:任何地方都能访问。 - `private`:只有在同一个类内可以访问。 - `protected`:在同一个包内以及不同包的子类中可以访问。 - `friendly`(默认):在同一包内可以访问,不适用于Java,但在某些其他语言中称为包访问权限。 2. **AnonymousInnerClass(匿名内部类)** - 匿名内部类没有名称,可以直接实现接口或扩展类,但一个类只能继承一个类,所以匿名内部类不能同时继承其他类和实现多个接口。 3. **StaticNestedClass和InnerClass的不同** - 静态内部类(Static Nested Class)不持有对外部类的引用,可以独立存在,无需外部类对象即可实例化。 - 非静态内部类(Inner Class)则持有对外部类的隐含引用,每次创建内部类对象都需要一个外部类对象。 4. **&和&&的区别** - `&` 是位运算符,用于按位与操作,例如 `a & b` 对a和b的每个二进制位执行与操作。 - `&&` 是逻辑与运算符,用于逻辑判断,如果左侧表达式为假,则不会评估右侧表达式。 5. **Collection和Collections的区别** - `Collection` 是所有集合接口的顶级接口,包括 Set 和 List 接口。 - `Collections` 是一个工具类,提供了许多静态方法,用于操作集合,如排序、查找、转换等。 6. **assert的使用** - `assert` 用于在开发阶段检查代码逻辑的正确性,当其后的布尔表达式为假时,会抛出 `AssertionError` 异常,通常在生产环境中通过设置关闭断言来优化性能。 7. **Strings=new String("xyz"); 创建了几个StringObject** - 这行代码创建了两个对象,一个是字符数组 "xyz",另一个是 String 对象引用这个字符数组。 8. **Memory Management(内存管理)** - Java 使用垃圾收集器自动管理内存,程序员无需手动释放内存。对象不再被引用时,垃圾收集器会回收其占用的空间。 9. **多线程** - Java 提供了 `Thread` 类和 `Runnable` 接口来实现多线程,理解并发控制(如 synchronized 关键字,Locks,volatile 等)非常重要。 10. **异常处理** - Java 中的异常是通过 `try-catch-finally` 块来处理的,了解如何正确地捕获和处理异常对于编写健壮的代码至关重要。 11. **IO 流** - Java 的 IO 模型包括字节流和字符流,以及缓冲流和转换流,理解和熟悉这些概念有助于处理文件和网络数据传输。 12. **设计模式** - 面向对象设计模式,如单例、工厂、观察者、装饰者模式等,是面试中的常见话题,它们是解决特定问题的通用解决方案。 13. **JVM 内存模型** - 理解 JVM 的堆内存、栈内存、方法区、本地方法栈等区域,以及它们之间的关系,对于优化代码性能很有帮助。 14. **反射机制** - 反射允许运行时动态地获取类的信息并操作类的对象,是许多框架的基础。 15. **Java 泛型** - 泛型引入了类型参数,提高了代码的类型安全性,降低了类型转换的错误可能性。 以上只是Java面试中的一部分知识点,完整的面试准备还需要涵盖更多领域,如集合框架的深入理解、数据库操作、网络编程、并发编程、算法和数据结构等。