这份面试题总内容包含了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。 ### Java面试题总结知识点 #### 一、Java基础 1. **JDK和JRE的区别** - **JDK**(Java Development Kit)是Java的开发工具包,它包含了Java运行环境(JRE)以及编译器(javac)和其他一些用于开发Java应用程序的工具和文档。JDK提供了必要的类库和工具,使开发者能够在Java环境中编写和测试程序。 - **JRE**(Java Runtime Environment)是Java程序的运行环境,包含了Java虚拟机(JVM)及Java核心类库。安装JRE时会自动配置环境变量`PATH`,使得Java应用程序可以在未安装JDK的系统上运行。 2. **== 和 equals 的区别** - `==`用于比较基本数据类型时,直接比较值是否相等;用于比较引用类型时,比较的是对象的内存地址是否相同。 - `equals`默认行为是比较对象的内存地址,但很多类(如`String`, `Date`等)重写了`equals`方法,使其比较对象的内容是否相同。 3. **两个对象的`hashCode()`相同,则`equals()`也一定为true?** - 如果两个对象`equals`相等,则它们的`hashCode`一定相等。 - 但是`hashCode`相等,并不意味着`equals`一定为真。这是因为存在哈希冲突的可能性,即不同对象可能拥有相同的`hashCode`值。 4. **`final`关键字的作用** - 用于修饰类时,表示该类不能被继承。 - 用于修饰属性时,表示该属性一旦初始化之后就不能被更改。 - 用于修饰方法时,表示该方法不能被子类重写。 5. **`Math.round(-1.5)`的结果** - `Math.round()`方法用于对数字进行四舍五入处理。当参数为负数时,会向零的方向进行四舍五入。因此`Math.round(-1.5)`的结果为`-1`。 6. **`String`是否属于基础数据类型** - `String`不是基础数据类型,而是引用类型。在Java中,`String`是一个特殊的类,用于表示不可变的字符序列。 7. **Java中的字符串操作类及其区别** - **`String`**:不可变字符串,适用于频繁查询而不改变的场景。 - **`StringBuilder`**:可变字符串,线程不安全,性能较高,适用于单线程下的字符串构建。 - **`StringBuffer`**:可变字符串,线程安全,性能相对较低,适用于多线程环境下的字符串构建。 8. **`String str="i"`与`String str=new String("i")`的区别** - `String str="i"`直接引用常量池中的字符串。 - `String str=new String("i")`在堆中创建一个新的字符串对象。 - 尽管这两个表达式的值相同,但它们分别指向不同的对象。 9. **字符串反转方法** - 使用`StringBuilder`的`reverse()`方法。 - 使用`String`的`toCharArray()`方法,然后反向遍历数组并重新构造字符串。 - 使用递归方法进行字符串反转。 10. **`String`类的常用方法** - `charAt(int index)`:返回指定索引处的字符。 - `length()`:返回字符串的长度。 - `split(String regex)`:根据给定的正则表达式拆分字符串。 - `toString()`:返回此对象的字符串表示形式。 11. **抽象类必须要有抽象方法吗?** - 抽象类不必含有抽象方法,但是含有抽象方法的类必须被声明为抽象类。 12. **普通类和抽象类的区别** - 抽象类不能实例化,而普通类可以。 - 抽象类的访问权限限于`public`和`protected`,如果为`private`则无法被继承。 - 继承抽象类的子类必须实现所有抽象方法,除非该子类也被声明为抽象类。 13. **抽象类能否使用`final`修饰?** - 不可以。`final`修饰的类不能被继承,而抽象类的本质在于被继承并实现其中的抽象方法,因此抽象类不能被声明为`final`。 14. **接口和抽象类的区别** - 抽象类可以有构造方法,而接口不能有构造方法。 - 抽象类可以有非抽象方法(即具体实现),而接口中的所有方法默认都是抽象的(从Java 8开始支持默认方法和静态方法)。 - 抽象类可以提供部分实现,接口只能提供行为规范。 - 类可以继承多个接口,但只能继承一个抽象类。 - 抽象类可以拥有实例变量,而接口中只能定义静态最终变量(即常量)。 - 接口提供了多重继承的功能,而抽象类没有。 - 抽象类可以被声明为`final`,这在逻辑上是矛盾的,因此实际上无法实现;而接口不能被声明为`final`。 Java基础部分覆盖了Java语言的核心概念和技术要点,包括基本类型、对象模型、字符串操作、类和接口的定义等。对于面试准备而言,深入理解和掌握这些基础知识是非常重要的。接下来的部分将继续涵盖容器、多线程、反射等高级主题。
剩余26页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CC2530无线zigbee裸机代码实现按键控制LED开关.zip
- CC2530无线zigbee裸机代码实现按键控制PWM灯光强度.zip
- CC2530无线zigbee裸机代码实现按键控制流水灯.zip
- 无感FOC电机三相控制高速吹风筒方案 FU6812L+FD2504S 电压AC220V 功率80W 最高转速20万RPM 方案优势:响应快、效率高、噪声低、成本低 控制方式:三相电机无感FOC 闭环方
- CC2530无线zigbee裸机代码实现查询方式使用定时器.zip
- CC2530无线zigbee裸机代码实现串口UART0发送字符串.zip
- CC2530无线zigbee裸机代码实现串口UART0收发字符串.zip
- CC2530无线zigbee裸机代码实现串口发送指令控制LED灯.zip
- CC2530无线zigbee裸机代码实现定时器T1的使用.zip
- CC2530无线zigbee裸机代码实现定时器T3的使用.zip
- 基于51单片机的PWM波形发生器设计(Protues仿真)-毕业设计
- 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型 5电平三相MMC,采用VSG控制 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量 设置频率
- 锁相环学习电路,有教程 对新手非常友好,一看就懂 1,输出频率800MHz或者1GHz, 采用Ring-VCO的结构 2,输入参考频率20MHz 3,分频器是40-50分频 4,电荷泵电流
- MF000588-ASP.NET信息中心标准化管理系统源码.zip
- 基于51单片机的烟雾采集报警系统(protues仿真)-毕业设计
- 模拟器银河麒麟是基于Linux发行版Ubuntu开发的自主可控操作系统,为我国信息基础建设提供了重要支撑 截至目前,银河麒麟V10的软件仓库已经提供了大量国产软件,但在特定情况下,我们可能还是希望使用