Java面试必备:基础篇

需积分: 1 0 下载量 100 浏览量 更新于2024-07-24 收藏 762KB DOC 举报
"java经典面试" Java是一门广泛应用于企业级开发和互联网应用的语言,其面试题目涵盖了许多核心概念和技术。以下是一些常见的Java面试知识点: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,其他类可以是非公开的(非public)。所有类必须遵循命名规则,且公共类名应与文件名相同。 2. **goto关键字**:Java中没有goto关键字,它遵循结构化编程思想,鼓励使用控制流语句如if/else,switch,for,while等。 3. **逻辑运算符&和&&的区别**:&是按位与运算符,无论两边条件如何都会进行计算;而&&是短路与运算符,如果左侧表达式为假,则不会计算右侧表达式。 4. **跳出多重循环**:在Java中,使用`break`语句可以跳出当前循环,`return`不仅可以结束方法执行,也可以用于跳出多重循环。 5. **switch语句的使用**:switch适用于byte, char, short, int,枚举类型(Enum)以及Java 7引入的String类型,不支持long类型。 6. **short变量与运算**:对于`s1=s1+1`,由于short在运算后会自动提升为int,因此需要显式转换回short,即`s1=(short)(s1+1)`。而对于`s1+=1`,Java会自动处理类型转换,所以没有问题。 7. **char存储中文**:char类型在Java中占用两个字节,可以存储一个中文字符。 8. **效率计算2乘以8**:最有效率的方式是直接写`2 * 8`,因为Java中的乘法操作非常快速。 9. **设计大整数计算器**:在Java中,可以使用BigInteger类来处理大整数的计算,它提供了各种数学运算方法。 10. **final关键字**:final修饰的变量,其引用不可变,意味着一旦赋值后就不能更改,但如果是对象,对象的属性仍然可以改变。 11. **"=="与equals方法**:"=="比较的是两个对象的引用,而equals方法默认比较内容,但可以被重写以比较对象属性或其他逻辑。 12. **静态与实例变量**:静态变量属于类,所有类的实例共享,而实例变量属于对象,每个对象有自己的副本。 13. **静态方法与非静态方法**:静态方法不能直接访问非静态成员,因为它们在类加载时就存在,无法访问尚未创建的对象实例。 14. **Integer与int**:Integer是int的包装类,提供了一些额外功能,但需要额外内存开销。当比较Integer对象时,可能需要调用equals或compareTo方法,而比较int直接用"=="即可。 15. **Math.round方法**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。round方法将浮点数四舍五入为最接近的整数。 16. **代码不妥之处**:这个问题没有给出具体代码,一般考察代码规范、异常处理、类型转换等方面。 17. **访问修饰符的区别**:public对所有类可见,private仅在当前类中可见,protected在同包和子类中可见,无修饰符(包级私有)只在同包内可见。 18. **重载与覆盖**:重载是方法名相同但参数列表不同,不改变方法签名;覆盖发生在子类中,需保持方法签名一致。重载不改变返回值类型,而覆盖可以。 19. **构造器不可覆盖**:构造器不能被重写(override),但可以被重载。 20. **接口与继承关系**:接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类。抽象类中可以有静态的main方法,但不能运行。 21. **clone方法**:在实现Cloneable接口的类中,通常需要重写Object类的clone方法,并在其中调用`super.clone()`以完成克隆。 22. **面向对象特征**:封装、继承、多态是面向对象的三大特征。 23. **Java多态机制**:多态是通过方法重写和向上转型实现的,允许父类型的引用指向子类型对象,调用子类型的方法。 24. **抽象类与接口的区别**:抽象类可以有非抽象方法和字段,可以实现多继承;接口只有抽象方法和常量,不能有非静态字段,实现多继承。 25. **抽象方法的限制**:抽象方法不能是static、native或synchronized。 26. **内部类**:内部类是定义在另一个类内的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不需要外部类的实例就能创建,而Inner Class需要。 27. **内部类与外部类的交互**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,需要通过内部类实例访问。 28. **匿名内部类**:匿名内部类是没有名字的类,通常用于快速实现简单的接口或抽象类。它可以继承一个类并实现一个接口,但不能同时继承一个类和实现一个接口。 这些知识点涵盖了Java的基础语法、面向对象特性、异常处理、内存管理等多个方面,是Java面试中常见的问题,理解并掌握它们对提升开发者技能至关重要。