Java面试必备基础题集

需积分: 3 1 下载量 130 浏览量 更新于2024-07-21 收藏 802KB DOC 举报
"Java面试宝典是一份涵盖了基础到进阶的Java编程面试题集合,旨在帮助准备面试的程序员巩固基础知识。这份资料包含了Java语法、数据类型、控制流、类和对象、接口、多态性等多个方面的内容。" 1. Java基础部分: - 一个".java"源文件可以包含多个类,但只能有一个公共类(public class),其他的类可以是非公共的(non-public)。 - Java没有goto语句,它遵循结构化编程原则,推崇使用流程控制语句(如if, for, while, switch)替代goto。 - &是按位与运算符,&&是逻辑与运算符。&可以在任何时候使用,而&&在进行短路评估,如果第一个操作数为假,则不会计算第二个操作数。 - 要跳出多重嵌套循环,可以使用标签(label)配合break语句,例如:`outer: for {...} inner: for {...} break outer;`。 - switch语句可以作用于byte、char、short和int类型,但不能直接作用于long或String。JDK 7及以后版本支持枚举和String类型。 2. 数据类型与表达式: - short类型的变量s1在赋值时需要注意类型提升,s1 = s1 + 1会导致数据溢出,而s1 += 1会自动转换为int类型再赋值,避免溢出。 - char类型可以存储一个Unicode字符,因此可以存储中文汉字。 - 计算2乘以8最有效率的方式是直接使用`2 << 3`,利用位移运算。 3. 类与对象: - final关键字修饰变量时,意味着该变量一旦赋值后就不能再次修改,对于基本类型,是值不能变;对于引用类型,是引用不能变,但引用的对象可以变。 - "=="比较的是两个变量的值是否相等,而equals方法通常是对象内容的比较,对于字符串,需要重写equals方法以确保正确比较。 4. 静态与实例变量: - 静态变量属于类,而实例变量属于对象。静态变量由类名访问,实例变量通过对象实例访问。 - 不能在static方法内部直接访问非static方法,因为非static方法依赖于对象实例。 5. 数据类型转换: - Integer与int的主要区别在于,Integer是对象,而int是原始数据类型。Integer对象需要额外的内存开销,并且在一定范围内可以缓存,而int是直接存储数值。 6. 数学运算: - Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法会四舍五入到最接近的整数。 7. 代码问题与作用域: - 代码不妥之处可能涉及变量作用域、异常处理、类型转换等,需要具体代码分析。 - public、private、protected和默认(包级私有)作用域分别表示全局、类内私有、子类可见和同包内可见。 8. 方法重载与覆盖: - 方法重载(Overload)允许在同一类中定义多个同名方法,但参数列表必须不同。不能仅凭返回类型不同来重载方法。 - 构造器不能被覆盖(Override),但可以被重载。 9. 抽象类与接口: - 接口可以继承其他接口,抽象类可以实现接口,但抽象类不能继承具体类。抽象类可以有静态的main方法。 10. 其他高级特性: - clone()方法通常需要调用super.clone()以完成浅复制。 - 面向对象的特征包括封装、继承、多态。 - Java中的多态性通过方法的重写(Override)和抽象类与接口实现。 - abstract class可以包含方法实现,而interface只声明方法签名,不允许有实现。 - abstract与static、native、synchronized不能同时使用,因为它们的性质相互冲突。 - 内部类可以访问其外部类的成员,包括私有成员,但静态内部类(StaticNestedClass)无法直接访问外部类的非静态成员。 这份面试宝典全面涵盖了Java语言的关键概念和技术,适合准备Java面试的开发者进行自我检测和复习。通过这些题目,开发者可以检查自己的理解深度和广度,提升编程技能。