### IT企业面试题知识点解析 #### 一、final, finally, finalize - **final**: 在Java中,`final`关键字可以用于变量、方法和类。当一个类被声明为final时,它不能被继承;当一个方法被声明为final时,它不能在子类中被重写;当一个变量被声明为final时,则该变量不可变,对于基本类型来说一旦赋值就不能改变,对于引用类型来说一旦指向某个对象后就不能再指向其他对象。 - **finally**: `finally`块通常与`try-catch`结构一起使用,用来确保无论是否发生异常,其中的代码都能被执行。这非常适用于释放资源等操作。 - **finalize**: `finalize`方法是Object类中的一个方法,用于垃圾回收机制中。当对象即将被回收时,系统会自动调用该对象的`finalize`方法进行清理工作。需要注意的是,`finalize`方法的执行不是强制性的,而且自JDK 9起,其使用已被弃用。 #### 二、匿名内部类(Anonymous Inner Class) - **定义**: 匿名内部类是一种特殊的内部类,没有名称且只能出现一次。它们经常用于实现接口或者继承抽象类,并立即实例化。 - **特点**: - 没有构造器,因为无法独立实例化。 - 可以实现接口或继承父类。 - 能够访问外部类的所有成员变量(包括私有的)。 #### 三、Collection与Collections - **Collection**: Java集合框架的基础接口之一,代表一组对象的集合。 - **Collections**: 提供了一系列静态方法,用于对集合进行操作,如排序、查找等。 #### 四、assert断言 - **作用**: 主要用于开发过程中的调试,帮助检查程序运行时是否满足某些条件。 - **语法**:`assert 条件 : 附加信息;` #### 五、GC(Garbage Collection) - **概念**: 垃圾收集机制是自动内存管理的一部分,负责自动回收不再使用的对象所占用的内存空间。 - **目的**:提高内存利用率,避免内存泄漏等问题。 #### 六、String对象 - **创建方式**:`String s = new String("xyz");` - **特性**:字符串是不可变的(immutable),这意味着一旦创建了String对象,其内容就不能更改。 #### 七、Math.round()函数 - **Math.round(11.5)**:返回12。 - **Math.round(-11.5)**:返回-11。 #### 八、short类型的运算 - **短整型加法**:`short s1 = 1; s1 = s1 + 1;` 此时编译错误,因为`s1 + 1`的结果默认为int类型,需要显式转换为short类型。 - **短整型自增运算**:`short s1 = 1; s1 += 1;` 正确,因为自增运算符会自动进行类型转换。 #### 九、sleep()与wait() - **Thread.sleep()**:让当前线程暂停指定的时间,不释放锁。 - **Object.wait()**:让当前线程等待,直到其他线程通知或中断为止,释放锁。 #### 十、Java中有goto语句吗? - **答案**:Java中没有传统的`goto`语句。 #### 十一、length属性 - **数组长度**:数组有`length`属性,用于获取数组的长度。 - **字符串长度**:`String`类也有`length()`方法,用于获取字符串的长度。 #### 十二、重载(Overload)与重写(Override) - **Overload**:同一个类中多个同名方法,但参数列表不同。 - **Override**:子类重写父类的方法,需要方法签名完全一致。 #### 十三、Set集合的特点 - **元素唯一性**:Set集合不允许重复元素。 - **equals()与==**:`equals()`方法用于比较两个对象的内容是否相同,而`==`比较的是对象的引用是否相等。 #### 十四、RuntimeException异常 - **特点**:属于非受检异常,无需显示捕获或声明抛出。 - **常见类型**:如`NullPointerException`、`ArrayIndexOutOfBoundsException`等。 #### 十五、Error与Exception的区别 - **Error**:表示系统级错误,一般不由程序处理。 - **Exception**:表示程序可处理的异常情况。 #### 十六、List, Set, Map与Collection的关系 - **List/ Set/ Map**:都是`Collection`接口的子接口或实现类。 - **Collection**:所有这些集合的父接口,提供了基本的集合操作方法。 #### 十七、抽象类与接口的区别 - **抽象类**:可以包含抽象方法和具体方法,可以拥有状态。 - **接口**:只包含抽象方法,用于定义行为规范。 #### 十八、抽象方法能否同时具有static、native、synchronized修饰符 - **不能**:抽象方法不能同时被`static`、`native`、`synchronized`修饰。 - **原因**:这些修饰符与抽象方法的语义冲突。 #### 十九、抽象类与接口的实现细节 - **抽象类**:可以被继承。 - **接口**:通过`implements`关键字实现。 - **具体类**:实现了接口的具体类。 #### 二十、run()与start()方法 - **run()**:线程执行体,包含线程执行的逻辑。 - **start()**:启动线程,自动调用`run()`方法。 #### 二十一、构造器能否被重写? - **不能**:构造器不能被重写,因为它们不是继承的一部分。 #### 二十二、String对象是否可变? - **不可变**:String对象一旦创建后不可改变。 #### 二十三、同步代码块是否总是安全的? - **安全**:使用`synchronized`关键字确保线程安全,但需注意性能问题。 #### 二十四、try-finally与return语句 - **finally块执行**:即使`try`块中有`return`语句,`finally`块也会在`return`前执行。 #### 二十五、位运算结果 - **位运算**:例如`28`的二进制表示为`11100`,按位取反后变为`00011`,即3。 #### 二十六、equals()与hashCode()的关系 - **关系**:如果两个对象的`equals()`方法返回`true`,则它们的`hashCode()`也应返回相同的值。 #### 二十七、volatile关键字的作用 - **作用**:确保多线程环境下的可见性和有序性。 - **应用场景**:常用于状态标记和单例模式的懒汉式实现。 #### 二十八、switch语句支持的数据类型 - **支持类型**:`byte`、`char`、`short`、`int`以及它们对应的包装类。 - **不支持类型**:`long`、`float`、`double`。 - **支持字符串**:从Java 7开始,`switch`语句支持字符串。 #### 二十九、Singleton模式的实现 - **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **实现方式**:常用的有饿汉式、懒汉式(双重检查锁定)、静态内部类等。
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助