Java面试必备:2018黑马程序员面试题精选

需积分: 0 0 下载量 14 浏览量 更新于2024-07-01 收藏 10.82MB PDF 举报
"2018年黑马程序最新面试题汇总1" 这是一份2018年的Java面试题集,涵盖了Java面向对象、JavaSE基础等多个方面,旨在帮助求职者准备面试。以下是对部分关键知识点的详细解释: 1. **面向对象特性**:面向对象编程(OOP)主要包含三大特性:封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,对外只提供有限的访问接口。继承允许创建新的类(子类)来扩展已存在的类(父类),共享父类的属性和方法。多态则指的是同一种行为在不同对象上有不同的表现形式,如方法的重写。 2. **clone对象**:`clone()`方法用于创建一个现有对象的副本。在Java中,如果一个类实现了`Cloneable`接口,那么它的实例可以通过调用`clone()`方法复制。但是,仅仅实现`Cloneable`接口还不够,还需要覆盖`clone()`方法,以确保正确地复制对象的所有字段。 3. **访问权限修饰符**:`public`、`private`、`protected`和默认(包级私有)分别代表公共、私有、保护和包内可见的访问级别。`public`的成员可以在任何地方访问,`private`的成员只能在定义它们的类内部访问,`protected`的成员在同一个包或不同包的子类中可见,而默认的则仅在同包内可见。 4. **&和&&的区别**:在Java中,`&`是位运算符,用于按位与操作,而`&&`是逻辑与运算符。逻辑与运算符会短路,即如果第一个操作数为假,就不会计算第二个操作数。位运算符不会短路,两个操作数都会计算。 5. **跳出多重嵌套循环**:在Java中,可以使用`break`语句跳出最内层的循环。若要跳出所有嵌套循环,可以使用标签(label)配合`break`。 6. **对象参数传递**:Java中,所有的参数传递都是值传递。但当传递的是对象时,实际上是传递了对象的引用副本。因此,尽管不能改变对象本身,但可以通过引用副本修改对象的属性。 7. **重载与重写**:重载(Overloading)发生在同一类中,是方法名相同但参数列表不同的多个方法。重写(Overriding)发生在子类中,是子类重新定义父类的已有的方法。重载不看返回类型,而重写必须保持方法签名(包括方法名、参数列表和参数类型)一致。 8. **不能根据返回类型区分重载**:因为Java的重载是基于方法签名,包括方法名和参数列表,而不是返回类型。因此,不能仅凭返回类型来决定调用哪个重载方法。 9. **char型变量存储中文**:Java的`char`类型占用两个字节,理论上可以存储Unicode编码的单个字符,包括中文汉字。 10. **抽象类与接口的异同**:抽象类可以有方法实现,而接口中所有方法默认都是抽象的。类可以继承一个抽象类,但可以实现多个接口。抽象类可以有非静态、非最终的成员,而接口中所有成员都是静态和最终的。抽象类是具体类的抽象,接口是行为规范的集合。 11. **抽象方法与静态、本地、synchronized**:抽象方法不能是静态的,因为静态方法属于类,而抽象方法需要在子类中被实现,与实例有关。同样,抽象方法也不能是本地方法(native),本地方法是用C或C++实现的,而抽象方法需要Java代码实现。至于`synchronized`,抽象方法可以是同步的,这意味着当多个线程试图访问该方法时,只有一个线程能执行。 这些面试题涉及到的Java基础知识是程序员在面试中常常会被问到的,掌握这些内容对于提升Java编程技能和成功通过面试至关重要。