Java面试常见问题解析

需积分: 10 1 下载量 168 浏览量 更新于2024-07-28 收藏 743KB DOC 举报
"Java面试宝典2011版,涵盖了Java编程的基础到高级知识,包括语法特性、数据类型、运算符、控制流、类与对象、接口、内存管理、多态性、内部类等内容,旨在帮助求职者准备Java相关的面试问题。" 以下是Java面试中的关键知识点: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),其他非公共类没有限制。 2. **goto关键字**:Java中不存在goto关键字,它遵循结构化编程原则,鼓励使用流程控制结构如if、for、while、switch等。 3. **&和&&的区别**:&是逻辑与运算符,无论两边条件如何都会进行运算;而&&是短路与运算符,如果左边表达式为假,右边表达式将不会执行。 4. **跳出多重循环**:使用`break`语句可以直接跳出当前的多重嵌套循环,`return`则可以结束函数并返回值。 5. **switch语句**:switch不能直接作用于byte、long或String,但JDK 7及以后版本支持字符串(String)。 6. **short变量的加法**:直接相加可能导致数据溢出,因为编译器会提升数据类型;使用`s1 += 1`会自动转换类型,避免溢出。 7. **char存储中文**:char类型可以存储单个中文字符,因为UTF-16编码中,一个中文字符通常占两个字节。 8. **计算2乘以8**:最有效率的方式是直接使用`2 << 3`,利用位移操作。 9. **设计大数计算器**:需要考虑大数的表示和运算,可以使用数组或StringBuilder来存储和处理大数。 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。 16. **代码不妥之处**:未提供具体代码,无法分析。 17. **访问修饰符的区别**:public表示全局访问,private仅限本类,protected允许子类访问,无修饰符表示包内访问。 18. **重载与重写**:重载允许方法名相同但参数列表不同;重写发生在子类中,方法名、返回类型和参数列表必须一致,但访问权限不能更低,不能改变返回类型。 19. **构造器是否可被重写**:构造器不能被重写(override),但可以被重载。 20. **接口与抽象类**:接口可继承接口,抽象类可实现接口,但抽象类不能继承具体类,静态main方法可以在抽象类中。 21. **clone方法**:通常在实现clone()时,会调用`super.clone()`以创建对象副本。 22. **面向对象特征**:封装、继承、多态。 23. **Java实现多态的机制**:通过方法的重写(Override)和向上转型(Upcasting)实现。 24. **abstractclass与interface的区别**:抽象类可以有方法实现,可以有非抽象方法,而接口只有抽象方法,且Java中类只能继承一个抽象类,但可以实现多个接口。 25. **abstract、static、native、synchronized的组合**:abstract不能与static、native、synchronized同时使用,因为它们代表不同的概念。 26. **内部类**:内部类是定义在另一个类中的类,分为静态内部类(StaticNestedClass)和非静态内部类(InnerClass)。静态内部类不需要外部类对象就可以实例化,非静态内部类需要外部类对象。 27. **内部类与外部类成员的访问**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. **匿名内部类**:匿名内部类是没有名字的类,通常用于快速实现某个接口或父类的简短功能,常在需要一次性使用的场合使用。