Java面试精华:23问覆盖基础与进阶知识点

需积分: 0 0 下载量 105 浏览量 更新于2024-07-22 收藏 1.12MB PDF 举报
Java面试宝典是一份全面的指南,旨在帮助求职者准备Java技术面试,确保他们对基础知识有深入理解。以下是一些核心知识点的详细解析: 1. **Java源文件与类**:一个.java源文件可以包含多个公共类,但不允许包含多个同名的类(包括内部类)。类的定义应遵循命名规则,且文件内不应有多余的包声明。 2. **Java关键字`goto`**:Java并没有内置的`goto`语句,这与C++不同,目的是为了提高代码的可读性和控制结构的清晰度。 3. **运算符`&`和`&&`**:`&`是位与运算符,用于操作二进制位;而`&&`是逻辑与运算符,用于条件判断。两者在逻辑表达式中的行为完全不同。 4. **嵌套循环控制**:在Java中,使用`break`或`return`语句可以跳出当前层的循环,对于多重嵌套,需要明确指定要退出的循环。 5. **`switch`语句的适用性**:`switch`语句可用于byte和char类型的比较,但不适用于long和String,因为它们不支持自动隐式转换。 6. **类型转换错误**:`shorts1=1;s1=s1+1;`会编译错误,因为不能将int类型赋值给short。正确的写法是`s1 = (short) (1 + 1)`。`shorts1=1;s1+=1;`则不会报错,因为自动类型提升。 7. **char类型存储**:char类型只能存储单个Unicode字符,包括英文字符和ASCII字符,但不能直接存储中文汉字,因为中文字符占用多个字节。 8. **高效计算**:使用算术运算符`*`直接计算2乘以8,如`int result = 2 * 8;`是最有效率的方法。 9. **大数计算器设计**:设计一个高效的算法或数据结构来处理大数计算,可能涉及位运算、 BigInteger 类或者Java的`BigInteger`库。 10. **final关键字**:`final`修饰的变量,其引用不可变,如果是引用类型,那么引用的对象也是不可变的。若修饰方法,则表示方法不可被重写。 11. **`==`与`equals()`**:`==`用于比较对象引用,`equals()`用于比较对象内容,它们在比较基本类型和对象时有明显的区别。 12. **静态变量和实例变量**:静态变量属于类,所有对象共享;实例变量与对象绑定,每个对象有自己的副本。 13. **静态方法调用**:静态方法可以从静态方法内部调用非静态方法,但非静态方法无法直接访问静态方法的局部变量。 14. **Integer与int**:Integer是包装类,提供了整数对象,避免自动装箱/拆箱性能开销,`int`是基本类型。 15. **Math.round()方法**:`Math.round(11.5)`会四舍五入到最接近的整数,结果为12;`Math.round(-11.5)`会向零方向取整,结果为-12。 16. **代码审查**:代码不妥之处可能涉及到变量命名、异常处理、资源管理等问题,需要分析具体代码才能指出。 17. **作用域规则**:public表示全局可见,private仅限于类内,protected允许子类访问,无修饰符时默认是包内可见。 18. **Overload与Override**:Overload是方法重载,指同名方法但参数列表不同;Override是方法重写,子类重写父类方法,返回值类型不能改变。 19. **构造器重写**:构造器不能被重写,但可以通过重载提供不同的初始化方式。 20. **接口和抽象类特性**:接口仅能定义常量和抽象方法,不能有实例变量;抽象类可以有抽象方法和实例变量,可继承具体类,但不能有静态main方法。 21. **Clone方法**:通常的`clone()`方法会执行浅复制,复制对象的引用,而非值。 22. **面向对象特性**:封装、继承、多态、抽象(抽象类和接口)、封装等是面向对象的核心概念。 23. **多态实现机制**:通过继承、接口和方法重写实现多态,允许子类以父类或接口的形式被调用。 24. **抽象类与接口**:抽象类可以有具体方法实现,接口只提供抽象方法;抽象类可用于继承,接口只能被实现。 25. **抽象方法属性**:抽象方法不能同时是static、native或synchronized,因为它们与抽象性的要求冲突。 26. **内部类和Nested Class**:内部类分为Static Nested Class(静态内部类)和Non-static Inner Class(非静态内部类),静态内部类可以在任何地方访问外部类的成员,而非静态内部类有更严格的访问限制。 27. **内部类引用外部类成员**:内部类可以访问外部类的私有和受保护成员,但不能直接访问公有成员。 28. **匿名内部类**:可以继承其他类或实现接口,但没有类名,通常用于创建事件监听器或回调函数。 这些知识点覆盖了Java基础、语法、数据类型、运算符、控制结构、面向对象概念、多态、类和接口、异常处理等多个方面,对于面试者理解和展示自己的Java技能非常关键。