Java面试必备:基础题深度解析

需积分: 33 2 下载量 116 浏览量 更新于2024-07-19 收藏 2.14MB PDF 举报
"这份PDF文件包含了Java面试中常见的简答题,涵盖了Java基础知识、语法特性、类与对象、接口与抽象类、多态性等多个方面,旨在帮助面试者准备技术面试。" 以下是部分知识点的详细说明: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,这个公开类的名字必须与文件名相同。 2. **goto关键字**:Java中没有goto关键字,它不符合Java的结构化编程理念。 3. **&与&&的区别**:&是位运算符,用于按位与操作;&&是逻辑运算符,用于短路逻辑与操作,只有当第一个操作数为真时才会计算第二个操作数。 4. **跳出多重嵌套循环**:在Java中,可以使用`break`语句配合标签来跳出多重嵌套循环,如`break label;`。 5. **switch语句的适用类型**:switch可以作用在byte、char、short、int、枚举类型(enum)以及Java 7引入的字符串(String)上,但不能作用在long或float上。 6. **short变量的自增问题**:直接赋值`s1=s1+1`会涉及到类型提升,需要强制转换回short,否则会有编译错误;而`s1+=1`则是合法的,因为编译器会自动处理类型转换。 7. **char存储中文字符**:char类型可以存储一个Unicode字符,所以理论上可以存储中文字符。 8. **高效计算2的8次方**:最高效的方式是使用位运算符`<<`,即`2 << 3`,因为位移运算在计算机底层执行速度非常快。 9. **设计大数计算器**:设计一个能处理百亿级别的计算器,需要考虑数据的存储方式,可能需要使用BigInteger类来处理大整数。 10. **final关键字**:final修饰的变量,其引用不能改变,如果是对象引用,则引用的对象内容不能改变。 11. **"=="与equals方法**:"=="比较的是对象的引用,而equals方法(默认行为也是比较引用,但可以重写)通常用来比较对象的内容。 12. **静态变量与实例变量的区别**:静态变量属于类,生命周期始于类加载,终于类卸载;实例变量属于对象,生命周期始于对象创建,终于对象销毁。 13. **静态方法与非静态方法**:静态方法内不能直接调用非静态方法或非静态变量,因为非静态成员与特定对象关联,而静态方法没有实例上下文。 14. **Integer与int的区别**:Integer是int的包装类,存在自动装箱拆箱,占用内存更多,而int是原始类型,效率更高。 15. **Math.round方法**:Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法会四舍五入到最接近的整数。 16. **代码不妥之处**:未给出具体代码,通常检查点可能包括变量声明、异常处理、资源释放等方面。 17. **访问修饰符的区别**:public表示全局可访问,private表示仅限本类访问,protected表示本类和子类及同一包内访问,无修饰符则为包访问权限。 18. **Overload与Override**:Overload是重载,方法名相同但参数列表不同;Override是重写,方法名、返回类型和参数列表都需相同,但子类方法必须覆盖父类的抽象方法或接口方法。 19. **构造器不能被override**:构造器不是方法,不能被重写,但可以被重载。 20. **接口与抽象类的关系**:接口可以继承其他接口,抽象类可以实现接口,抽象类也可以继承具体类,但抽象类中的main方法不会被运行。 21. **clone方法**:在实现clone方法时,通常会有一行`super.clone()`,用于调用Object类的clone方法。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过方法的重写(Override)和向上转型(Upcasting)实现。 24. **abstractclass与interface的区别**:抽象类可以有具体方法和成员变量,而接口只能有抽象方法和常量;类可以继承一个抽象类,实现多个接口。 25. **abstract与static、native、synchronized的组合**:一个方法不能同时是abstract、static和native,因为它们代表不同的概念;也不能同时是abstract和synchronized,因为抽象方法不需要实现,无需同步。 26. **内部类**:内部类是定义在另一个类中的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有外部类的引用,可以直接实例化,而内部类需要外部类的一个实例才能创建。 27. **内部类与外部类成员的访问**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. **A类的子类是否可以作为A类的泛型参数**:是的,这是Java的协变性(Covariance)特性,子类对象可以赋值给父类类型的引用,因此A的子类可以作为A类的泛型参数。 这些面试问题涵盖了Java语言的核心概念和常用特性,对于理解和掌握Java编程有很好的帮助。