这份面试题总内容包含了十九个模块: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
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Java语言字符串前补零和后补零的快速方法
- 基于RRT与自重构技术的UAV编队避障与动态队形调整研究 · RRT
- 基于Simulink的单轮车辆ABS防抱死控制系统仿真模型及其应用 · Simulink 深度版
- Java语言移动整个文件夹或单个文件到另一个文件夹
- Python实现神经网络模型的数学公式识别源码文档说明
- 电力系统中配电网最优潮流的SOCP松弛技术应用与实现
- WinCC高级报表工具:自定义模板与多格式输出在工业自动化中的应用
- 基于ADRC控制的Matlab Simulink半车主动悬架建模:优化车身加速度与悬架性能的仿真研究 MatlabSimulink
- Java中文件与字节数组(byte)相互转换
- 使用PyTorch深度学习框架基于BiLSTM CRF的中文分词系统
- 基于BP神经网络的MNIST手写数字识别Python源码(期末大作业)
- C#基于.NET框架的串口数据读取与多曲线显示系统的实现
- Java语言清空文件夹下所有文件
- 基于OpenCV C#开发的圆卡尺、矩形卡尺等测量工具源码集,含视觉控件与自定义图形工具,运行稳定且操作便捷 v3.0
- PFC5.0技术下的预制裂隙含锚杆试样单轴压缩特性研究
- COMSOL多物理场仿真:压电效应中结构力学与静电场耦合模型及其应用


