2017 Java面试精华:基础问题及答案详解

5星 · 超过95%的资源 需积分: 9 9 下载量 161 浏览量 更新于2024-07-19 收藏 2.17MB PDF 举报
2017年的Java面试试题涵盖了广泛的Java基础知识,旨在测试应聘者对语言的理解深度和实践能力。以下是一些核心知识点的详细解析: 1. 类组织:Java源文件中可以包含多个类,但每个类必须有自己的名称,并且一个文件中只能有一个公共类(public class)。非内部类的限制在于,如果一个文件中定义了多个公共类,那么这些类必须分开放置,因为一个.java文件内只能有一个公共类。 2. 控制结构:Java没有内置的`goto`语句,这与C++等其他语言不同,目的是鼓励更清晰的代码结构。 3. 运算符比较:`&`是位与运算符,用于按位操作,而`&&`是逻辑与运算符,用于条件判断。两者在逻辑表达式中有不同的作用和行为。 4. 循环控制:在Java中,可以使用`break`语句跳出多重嵌套循环,针对不同类型的循环(如for、while、do-while)进行相应的操作。 5. `switch`语句的适用性:Java的`switch`语句可以作用在byte和short类型上,但不能直接作用于基本类型long和String。对于String类型,可以使用`switch`表达式与equals方法配合。 6. 字节类型转换:`shorts1=1;s1=s1+1;`中的`s1`会被自动提升为`int`类型再进行加法运算,存在隐式类型转换错误。而`s1+=1;`则是正确的,因为它是短整型和短整型之间的加法。 7. char类型:Java的char类型是16位的,可以存储单个Unicode字符,包括中文汉字。但这并不意味着可以直接存储汉字,需要通过编码(如UTF-16)来表示。 8. 数学运算效率:计算2乘以8,可以使用乘法运算符`*`,这是最有效率的方法。而对于算术溢出问题,Java会自动处理,无需特殊处理。 9. 大规模计算:设计一个大数运算的计算器,可能涉及到高精度计算或使用BigInteger类来避免溢出。 10. final关键字:修饰变量时,`final`表示变量的值不可变,但引用对象的引用仍然可以改变,除非对象是final类型。 11. 关系与相等比较:"=="比较的是对象引用,而equals()方法则比较对象的内容。只有当两个对象完全相同(即引用相同)时,两者才相等。 12. 变量与类特性:静态变量属于类,实例变量属于对象。静态方法不依赖任何特定的对象实例执行,非静态方法则需要对象实例。Integer是包装类,提供对象形式的整数,int是原始类型。 13. 数学函数:Math.round()方法会将浮点数四舍五入到最接近的整数,根据正负号结果不同。 14. 代码审查:代码片段可能存在潜在的问题,如未初始化变量、空指针异常等,需要应聘者指出并解释原因。 15. 访问权限:public、private、protected和默认访问权限控制了类成员的可见性和访问范围。抽象类和接口、继承关系以及main方法的位置和性质也需了解。 16. 多态与复制:Clone()方法是用于对象的浅复制,通常在实现多态时用于创建对象的副本。面向对象的特征包括封装、继承、多态和抽象。 17. 抽象与接口:abstract class提供了抽象方法和部分实现,而interface只定义方法,强制实现类提供所有方法。抽象方法不能同时是static、native或synchronized。 18. 内部类:包括静态内部类(StaticNestedClass)和非静态内部类(Inn