Java 面试基础知识是求职者在准备 Java 相关职位面试时不可或缺的部分。下面将对部分题目进行详细解析:
1. **作用域**
- `public`:类、方法或变量可被任何地方访问。
- `private`:仅在当前类内部可访问。
- `protected`:在当前类、同一包内的类和子类中可访问。
- 默认(friendly):在当前类和同一包内可访问,不适用于类。
2. **匿名内部类**
- 可以继承其他类(自 JDK 1.5 起无限制)。
- 可以实现接口。
3. **Static Nested Class 和 Inner Class**
- Static Nested Class 不依赖于外部类实例,可以独立创建对象。
- Inner Class 必须在外部类实例中创建,它可以访问外部类的非静态成员。
- 静态内部类不能直接访问外部类的非静态成员,需要通过外部类实例来访问。
4. **& 和 &&**
- `&` 是位运算符,用于进行按位与操作,可用于布尔值时进行短路操作。
- `&&` 是逻辑运算符,仅当第一个操作数为真时才评估第二个操作数,用于逻辑与。
5. **Collection 和 Collections**
- Collection 是所有集合类的父接口,包括 Set 和 List。
- Collections 是工具类,提供了对集合进行操作的静态方法,如排序、查找、线程安全化等。
6. **assert**
- 断言用于在开发和测试阶段快速定位问题,通常在生产环境中关闭。
- 语法:`assert condition;` 或 `assert condition : expression;`,当 condition 为 false 时,会抛出 AssertionError。
7. **String 对象创建**
- `"xyz"` 是字符串字面量,存储在常量池。
- `new String("xyz")` 在堆上创建新的 String 对象,引用常量池中的 "xyz"。
- 因此,共创建了两个对象。
8. **Math.round()**
- Math.round(11.5) 返回 12,因为四舍五入到最接近的整数。
- Math.round(-11.5) 返回 -11,负数时四舍五入向下取整。
9. **short 类型运算**
- `short s1 = 1; s1 = s1 + 1;` 错误,因为 s1 + 1 的结果是 int 类型,需要显式转换回 short。
- `short s1 = 1; s1 += 1;` 正确,编译器会自动处理类型转换。
这些只是 Java 面试基础中的冰山一角,涵盖的知识点包括但不限于:访问修饰符、类和对象、接口、运算符、集合框架、异常处理、类型转换以及编程规范等。对于求职者来说,深入理解这些基础概念并能灵活运用,是成功面试的关键。