Java面试常见问题与解答

需积分: 0 0 下载量 156 浏览量 更新于2024-07-20 收藏 545KB DOC 举报
"Java面试题" Java面试通常涵盖了广泛的领域,从基础语法到高级特性,以下是一些面试中常见的Java知识点: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,其他类可以是非公开的。非内部类在同一文件中需符合命名空间规则。 2. **goto关键字**:Java中没有goto关键字。它在某些编程语言中用于跳转到程序的特定位置,但在Java中,控制流程可以通过break、continue和return来管理。 3. **&和&&的区别**:&是位运算符,而&&是逻辑运算符。在布尔表达式中,&&操作符遵循短路逻辑,如果左边的表达式为假,右边的表达式将不会执行;&总是会计算两边的表达式。 4. **跳出多重嵌套循环**:使用`break`语句可以跳出最近的一个循环,`return`不仅可以退出方法,也可以结束当前循环。 5. **switch语句的适用类型**:switch可以作用在byte, char, short, int,枚举类型(enum)以及从Java 7开始的String类型上,但不能作用于long或浮点类型。 6. **short变量的加法**:在Java中,short变量与int变量相加会自动提升为int类型,所以`s1=s1+1`会导致编译错误,需要强制转换为short。而`s1+=1`会自动处理这种转换。 7. **char存储中文字符**:char类型可以存储单个Unicode字符,包括中文汉字,因为它占用两个字节。 8. **效率计算2乘以8**:最有效率的方法是直接使用`2 << 3`,这是位左移运算,相当于乘以2的3次方,即8。 9. **设计大整数计算器**:设计一个能处理一百亿级别计算的计算器要考虑大数运算,可能需要使用BigInteger类来存储和处理这样的数值。 10. **final关键字**:final修饰的变量的引用一旦赋值后不可变,但对于对象,final确保引用不变,但不能阻止对象内部状态的改变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而equals()方法比较的是对象的内容(除非重写)。 12. **静态与实例变量**:静态变量属于类,而实例变量属于对象。静态变量在内存中只有一份,实例变量每个对象都有自己的副本。 13. **从static方法调用非static方法**:不允许,因为static方法与类关联,而非static方法与对象关联。 14. **Integer与int**:Integer是int的包装类,可以进行对象操作,如装箱、拆箱。int是原始数据类型,直接存储数值。 15. **Math.round()方法**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. **代码不妥之处**:没有提供具体的代码,通常检查点可能包括类型转换、异常处理、资源释放等问题。 17. **作用域区别**:public对所有类可见,private仅限本类,protected在本包和子类中可见,无修饰符(默认)则只在本包内可见。 18. **Overload和Override**:Overload是方法重载,允许同一类中有多个同名但参数列表不同的方法;Override是方法重写,子类方法必须与父类方法签名完全一致,并且访问权限不得更低。 19. **构造器不能被override**:构造器不能像普通方法那样被覆盖,但可以被重载。 20. **接口与接口继承,抽象类与接口**:接口可以继承接口,抽象类可以实现接口,接口不能继承具体类,但抽象类可以继承具体类。静态的main方法在抽象类中是可以的,但不能作为程序入口点。 21. **clone()方法**:在实现Cloneable接口并重写clone()方法时,通常需要在开头调用`super.clone()`。 22. **面向对象特征**:封装、继承、多态是面向对象的三大特征。 23. **Java多态机制**:通过方法的重写和接口的实现,使得父类引用指向子类对象时,可以调用子类特有的行为。 24. **abstractclass与interface的区别**:抽象类可以有方法实现,可以有非抽象方法,可以有构造器,可以有静态字段和方法;接口则只能有常量和抽象方法,不能有实现。 25. **抽象方法的限制**:抽象方法不能是static、native或synchronized。 26. **内部类**:内部类是定义在一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类像普通类一样,不持有对外部类的引用,而内部类可以直接访问外部类的私有成员。 27. **内部类与外部类成员**:内部类可以引用外部类的所有成员,包括私有成员,但外部类不能直接引用非静态内部类的实例,需要先创建内部类实例。 28. **匿名内部类**:匿名内部类是没有名字的类,通常用于快速实现一个接口或继承一个类,通常用在一次性的场景。 以上只是Java面试中的一些常见问题和概念,实际面试可能会涉及更多细节和深入的话题。准备面试时,理解这些基础知识并能够灵活应用是至关重要的。