当前位置: 首页 > news >正文

JAVA基础面试题汇总(持续更新)

1、精确运算场景使用浮点型运算问题

        精确运算场景(如金融领域计算应计利息)计算数字,使用浮点型,由于精度丢失问题,会导致计算后的结果和预期不一致,使用Bigdecimal类型解决此问题,示例代码如下:

float f1 = 1f -0.1f*9;
System.out.println(f1);//0.099999964BigDecimal b1 = new BigDecimal("1");
BigDecimal b2 = new BigDecimal("0.1");
BigDecimal b3 = new BigDecimal("9");
BigDecimal result = b1.subtract(b2.multiply(b3));
System.out.println(result); // 0.1

2、Static变量和实例变量的区别

比较维度静态变量实例变量
内存分配时机第一次类加载时对象实例化时
生命周期一直存在和对象生命周期一致
调用方式  类.静态变量对象.实例变量
是否全局共享对象间隔离
访问静态方法不能访问非静态变量 非静态方法可以访问静态变量

3、==、equals()、hashCode()方法的区别

  • == 比较的两个对象的地址是否相同
  • equals()比较两个对象的值是否相同
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true
  • hashCode()方法:

在Java中,每个对象都有一个与之关联的哈希码(hash code),这是通过对象的内部状态计算出来的一个整数值,用于在哈希表等数据结构中进行快速查找‌。

Student student = new Student("1","张三",18,"1");
System.out.println("student hashCode:" + student.hashCode());//student hashCode:-1575396644

如果对象student放入hash表中,如HashMap,通过hashCode()方法的值可以快速的从Map中获取对象的位置,实现快速检索。

对象的hashCode值和对象的物理内存地址完全是两回事,student在jvm堆内存的地址才是物理地址,hashCode只是在java中如果对象放入hash表中,hash表的位置

  • hashCode和equals方法的区别及联系
Student student1 = new Student("1","张三",18,"1");
Student student2 = new Student("1","张三",18,"1");
System.out.println(student1.equals(student2));//true
System.out.println("student hashCode:" + student1.hashCode());//student hashCode:-1575396644
System.out.println("student hashCode:" + student2.hashCode());//student hashCode:-1575396644
System.out.println(student1.hashCode() == student2.hashCode());//true

两个完全不同的对象的hashCode可能一样,即hash冲突

两个对象equals方法相同,hashCode一定相同;

两个对象equals方法不相同,hashCode可能相同;

两个对象的hashCode不相同,equals一定不相同

4、JVM组成

JVM由下图红框的组件构成,具体为:

1)类加载器(ClassLoader)
2)运行时数据区(Runtime Data Area)
3)执行引擎(Execution Engine)
4)本地库接口(Native Interface)

JVM的运行流程:

1)编译 java 代码转换成字节码(class 文件)--外部执行

2)JVM通过 类加载器(ClassLoader) 把文件加载到内存中的运行时数据区(Runtime Data Area),生成堆栈等信息

3)JVM通过执行引擎(Execution Engine)将字节码翻译成底层系统识别的指令再交由CPU 去执行,此过程中需要调用其他语言的接口本地库接口(Native Interface) 来实现整个程序的功能

运行时数据区的组成说明:

1)程序计数器:是一块较小的内存空间,可以识别当前线程所执行字节码的具体位置。

2)Stack栈信息:用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

3)Heap堆信息:Java 虚拟机中内存最大的一块,是被所有线程共享的,存放对象实例

4)Method方法区:用于存储已被虚拟机加载的类信息、常量、静态变量等,是线程共享的

5、JAVA常见的内存泄露场景

        当对象不再需要时却仍在JVM内存,导致内存使用量不断增加,最终可能导致 OutOfMemoryError。

1、静态集合类引起的内存泄漏

静态集合类中加入了大量的对象没有及时清理

2、未关闭的IO资源

各类IO资源没有及时关闭,如数据库连接、线程池等等

3、ThreadLocal引起的内存泄漏

前台发送大量请求,后台每个线程中在ThreadLocal存储了大量对象,请求完成后,没有及时进行remove操作

6、Spring中使用了哪些设计模式

1)IOC容器实例化Bean对象:工厂模式

2)Bean对象管理:单例模式,IOC容器默认实例化的对象是单例

3)AOP面向切面编程:代理模式,被代理的对象实现了接口,Spring采用的JDK的动态代理,如果被代理对象没有实现接口,Spring采用CGlib代理

4)AOP中切点前向通知、返回值通知、异常通知:适配器模式

5)JDBC Template:模板方法

相关文章:

JAVA基础面试题汇总(持续更新)

1、精确运算场景使用浮点型运算问题 精确运算场景(如金融领域计算应计利息)计算数字,使用浮点型,由于精度丢失问题,会导致计算后的结果和预期不一致,使用Bigdecimal类型解决此问题,示例代码如下…...

设计模式-创建型-常用:单例模式、工厂模式、建造者模式

单例模式 概念 一个类只允许创建一个对象(或实例),那这个类就是单例类,这种设计模式就叫做单例模式。对于一些类,创建和销毁比较复杂,如果每次使用都创建一个对象会很耗费性能,因此可以把它设…...

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点,连接到原结点的后面Node…...

Linux 系统五种帮助命令的使用

Linux 系统五种帮助命令的使用 本文将介绍 Linux 系统中常用的帮助命令,包括 man、–help、whatis、apropos 和 info 命令。这些命令对于新手和有经验的用户来说,都是查找命令信息、理解命令功能的有力工具。 文章目录 Linux 系统五种帮助命令的使用一…...

Vueron引领未来出行:2026年ADAS激光雷达解决方案上市路线图深度剖析

Vueron ADAS激光雷达解决方案路线图分析:2026年上市展望 Vueron近期发布的ADAS激光雷达解决方案路线图,标志着该公司在自动驾驶技术领域迈出了重要一步。该路线图以2026年上市为目标,彰显了Vueron对未来市场趋势的精准把握和对技术创新的坚定…...

Java | Leetcode java题解之第458题可怜的小猪

题目: 题解: class Solution {public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}int[][] combinations new int[buckets 1][buckets 1];combinations[0][0] 1;int iterations minutesToTest /…...

怎么不改变视频大小的情况下,修改视频的时长

视频文件太大怎么变小?不影响画质的四种方法 怎么不改变视频大小的情况下,修改视频的时长 截取结尾的时间你可以使用 ffmpeg 来裁剪视频的结尾部分。假设你想去掉视频最后的3秒钟,可以先使用 ffmpeg 获取视频的总时长,然后通过指定一个新的…...

数据结构:AVL树

前言 学习了普通二叉树,发现普通二叉树作用不大,于是我们学习了搜索二叉树,给二叉树新增了搜索、排序、去重等特性, 但是,在极端情况下搜索二叉树会退化成单边树,搜索的时间复杂度达到了O(N),这…...

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序: 编写.NET程序 前言 在现代生活中,电脑作为核心工具,其性能和稳定性的维护至关重要。为确保电脑高效运行,我们不仅需关注软件优化&#xf…...

【工作流引擎集成】springboot+Vue+activiti+mysql带工作流集成系统,直接用于业务开发,流程设计,工作流审批,会签

前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行的前后端…...

SumatraPDF一打开就无响应怎么办?

结论:当前安装版不论32位还是64位都会出现问题。使用portable免安装版未发现相关问题。——sumatrapdf可以用于pdf, epub, mobi 等格式文件的浏览。 点击看相关问题和讨论...

棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程

一、前言 【试用版软件下载,可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验,顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…...

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框(选项菜单)是十分常见的功能。Excel支持下拉框制作,通过预设选项进行菜单选择,可以避免手动输入错误和重复工作,提升数据输入的准确性和效率 1、下拉菜单制作 步…...

树莓派 mysql (兼容mariadb)登陆问题

树莓派 mysql (兼容mariadb)登陆问题 树莓派 MySQL 登陆问题 1 使用默认账号登陆 在首次登陆的情况下,系统默认为root用户授权 sudo su root ![切换到root 用户](https://img-blog.csdnimg.cn/20191019082911668.png) 2. 使用root用户登…...

智能手表(Smart Watch)项目

文章目录 前言一、智能手表(Smart Watch)简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…...

设计模式~~~

简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂角色 具体工厂角色...

Golang | Leetcode Golang题解之第458题可怜的小猪

题目: 题解: func poorPigs(buckets, minutesToDie, minutesToTest int) int {if buckets 1 {return 0}combinations : make([][]int, buckets1)for i : range combinations {combinations[i] make([]int, buckets1)}combinations[0][0] 1iterations…...

欢聚时代(BIGO)Android面试题及参考答案

网络 TCP 和 UDP 协议的区别是什么? TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是两种不同的传输层协议,它们有以下主要区别: 一、连接性 TCP 是面向连接的协议。在通信之前,需要通过三次握手建立连接,通信结束…...

[C语言]指针和数组

目录 1.数组的地址 2.通过指针访问数组 3.数组和指针的不同点 4.指针数组 1.数组的地址 数组的地址是什么&#xff1f; 看下面一组代码 #include <stdio.h> int main() { int arr[5] {5,4,3,2,1}; printf("&arr[0] %p\n", &arr[0]); printf(&qu…...

Centos Stream 9备份与恢复、实体小主机安装PVE系统、PVE安装Centos Stream 9

最近折腾小主机&#xff0c;搭建项目环境&#xff0c;记录相关步骤 数据无价&#xff0c;丢失难复 1. Centos Stream 9备份与恢复 1.1 系统备份 root权限用户执行进入根目录&#xff1a; cd /第一种方式备份命令&#xff1a; tar cvpzf backup.tgz / --exclude/proc --exclu…...

收藏!阿里放大招成立ATH事业群,AI月薪6W+,小白/程序员入局正当时

近日&#xff0c;据行业网友爆料&#xff0c;阿里近期迎来AI领域重大动作——正式组建Alibaba Token Hub&#xff08;简称ATH&#xff09;事业群&#xff0c;由集团CEO吴某铭亲自挂帅带队&#xff0c;其核心战略目标十分明确&#xff0c;浓缩为一句话就是&#xff1a;创造Token…...

免费开源钥匙建模终极指南:快速生成3D打印钥匙模型

免费开源钥匙建模终极指南&#xff1a;快速生成3D打印钥匙模型 【免费下载链接】keygen OpenSCAD tools for generating physical keys 项目地址: https://gitcode.com/gh_mirrors/ke/keygen 在数字化制造时代&#xff0c;开源钥匙建模工具Keygen为技术爱好者和实践者提…...

Notepad2终极指南:轻量级文本编辑器的完整使用教程

Notepad2终极指南&#xff1a;轻量级文本编辑器的完整使用教程 【免费下载链接】notepad2 Notepad2-zufuliu is a light-weight Scintilla based text editor for Windows with syntax highlighting, code folding, auto-completion and API list for many programming languag…...

4步打造高效能开源路由器:OpenWrt固件安装指南

4步打造高效能开源路由器&#xff1a;OpenWrt固件安装指南 【免费下载链接】openwrt openwrt编译更新库X86-R2C-R2S-R4S-R5S-N1-小米MI系列等多机型全部适配OTA自动升级 项目地址: https://gitcode.com/GitHub_Trending/openwrt5/openwrt OpenWrt固件安装是提升R5S设备性…...

告别电台收听难题:foobox-cn网络电台收听方案

告别电台收听难题&#xff1a;foobox-cn网络电台收听方案 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn作为foobar2000的DUI皮肤&#xff08;桌面用户界面定制方案&#xff09;&#xff0…...

Qwen3-TTS-12Hz-1.7B-VoiceDesign效果展示:同一instruct跨语言声线迁移能力验证

Qwen3-TTS-12Hz-1.7B-VoiceDesign效果展示&#xff1a;同一instruct跨语言声线迁移能力验证 你有没有想过&#xff0c;同一个声音描述&#xff0c;比如“温柔的成年女性声音”&#xff0c;用中文说出来是一种感觉&#xff0c;用英文、日文说出来&#xff0c;会不会还是同一种感…...

Sketchfab 3D模型本地化工具:Firefox浏览器专业解决方案

Sketchfab 3D模型本地化工具&#xff1a;Firefox浏览器专业解决方案 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在数字创作领域&#xff0c;3D资源的离线获取与…...

Wan2.1-umt5模型部署排错指南:解决403 Forbidden等常见API错误

Wan2.1-umt5模型部署排错指南&#xff1a;解决403 Forbidden等常见API错误 最近在折腾Wan2.1-umt5模型&#xff0c;想把它部署起来对外提供API服务&#xff0c;结果踩了不少坑。最让人头疼的就是各种HTTP错误码&#xff0c;比如403 Forbidden、502 Bad Gateway&#xff0c;有时…...

OpenClaw夜间任务优化:Qwen3-32B+RTX4090D镜像低负载模式配置

OpenClaw夜间任务优化&#xff1a;Qwen3-32BRTX4090D镜像低负载模式配置 1. 问题背景与优化动机 去年12月&#xff0c;我开始用OpenClawQwen3-32B模型搭建个人自动化工作流。最初配置的定时备份任务每晚11点准时运行&#xff0c;但很快发现两个问题&#xff1a; 电费异常&am…...

开源音频格式转换终极指南:ncmdumpGUI实现数字音乐资产自由流转的完整方案

开源音频格式转换终极指南&#xff1a;ncmdumpGUI实现数字音乐资产自由流转的完整方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 在数字音乐时代&#xf…...