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

实习面试题(答案自敲)、

1、为什么要重写equals方法,为什么重写了equals方法后,就必须重写hashcode方法,为什么要有hashcode方法,你能介绍一下hashcode方法吗?

equals方法默认是比较内存地址;为了实现内容比较,我们需要重写equals方法。

equals和hashcode之间有一个重要的契约,如果两个对象基于equals方法比较是相等的,那么它们的hashcode必须相同;如果比较不同,他们的hashcode不一定不同,但不同的对象应尽力返回不同的hashcode值,以提高哈希表的性能。

如果只重写了equals方法而没有重写hashcode方法,就会违反这个契约,导致哈希表如HashMap和HashSet工作不正常,例如两个内容相等的对象会被认为是不相等的,因为它们的哈希码不同。

hashcode方法用于计算对象的哈希码,这个哈希码用于在基于哈希的集合如HashSet、HashMap中快速查找对象,哈希码是一个整数,由对象的内容计算得到,哈希码的作用是减少比较操作的次数,提高查找效率。

public class test {public static void main(String[] args) {HashSet<User> users = new HashSet<>();//因为两个对象都是new出来的、所以地址不同哈希码也不同不会出现哈希冲突、不会调用equals判断、// 因此两个特征相同的对象就都添加到hashset中去了、解决方法就是重写hashcode()方法、users.add(new User(10,"111"));users.add(new User(10,"111"));for (User i:users) {System.out.println(i);}}
}
class User {int age;String name;public User(int age, String name) {this.age = age;this.name = name;}public int getAge() {return age;}@Overridepublic String toString() {return "User{" +"age=" + age +", name='" + name + '\'' +'}';}@Overridepublic boolean equals(Object o){if(this==o)return true;if(o==null||getClass()!=o.getClass()){return false;}User user=(User) o;return age== user.age&&Objects.equals(name,user.name);}@Override//重写了hashcode方法。public int hashCode() {return Objects.hash(age,name);}
}

因为重写了hashcode方法,所以特征相同的对象他们的hash值是一样的,会引起哈希冲突,从而调用equals方法进行判断是否为同一对象、因为重写了equals方法,所以这两个对象被判定为重复,所以hashset里只有一份。

2、Object都有哪些方法?

3、==和equals都有有什么区别呢?
4、类加载的过程、
5、JVM的内存模型以及内存结构、
6、GC机制及GC算法、你熟悉的垃圾收集器?(常问CMS G1以及这两者的区别)
7、java的基本数据类型
8、sychronized关键字以及底层实现原理、锁升级的原理、
9、lock关键字以及底层实现原理、
10、CAS的原理、
11、sychronized和ReetrantLock区别?为什么有了sychronized,还要有Lock这个关键字?
12、什么是悲观锁和乐观锁?哪些锁是悲观锁?哪些锁是乐观锁?

相关文章:

实习面试题(答案自敲)、

1、为什么要重写equals方法&#xff0c;为什么重写了equals方法后&#xff0c;就必须重写hashcode方法&#xff0c;为什么要有hashcode方法&#xff0c;你能介绍一下hashcode方法吗&#xff1f; equals方法默认是比较内存地址&#xff1b;为了实现内容比较&#xff0c;我们需要…...

二叉树讲解

目录 前言 二叉树的遍历 层序遍历 队列的代码 queuepush和queuepushbujia的区别 判断二叉树是否是完全二叉树 前序 中序 后序 功能展示 创建二叉树 初始化 销毁 简易功能介绍 二叉树节点个数 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点 判…...

Unity DOTS技术(五)Archetype,Chunk,NativeArray

文章目录 一.Chunk和Archetype什么是Chunk?什么是ArchType 二.Archetype创建1.创建实体2.创建并添加组件3.批量创建 三.多线程数组NativeArray 本次介绍的内容如下: 一.Chunk和Archetype 什么是Chunk? Chunk是一个空间,ECS系统会将相同类型的实体放在Chunk中.当一个Chunk…...

算法学习笔记(7.1)-贪心算法(分数背包问题)

##问题描述 给定 &#x1d45b; 个物品&#xff0c;第 &#x1d456; 个物品的重量为 &#x1d464;&#x1d454;&#x1d461;[&#x1d456;−1]、价值为 &#x1d463;&#x1d44e;&#x1d459;[&#x1d456;−1] &#xff0c;和一个容量为 &#x1d450;&#x1d44e;&…...

气膜建筑的施工对周边环境影响大吗?—轻空间

随着城市化进程的加快&#xff0c;建筑行业的快速发展也带来了环境问题。噪音、灰尘和建筑废料等对周边居民生活和生态环境造成了不小的影响。因此&#xff0c;选择一种环保高效的施工方式变得尤为重要。气膜建筑作为一种新兴的建筑形式&#xff0c;其施工过程对周边环境的影响…...

【计算机网络】对应用层HTTP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

30分钟快速入门TCPDump

TCPDump是一款功能强大的网络分析工具&#xff0c;它可以帮助网络管理员捕获并分析流经网络接口的数据包。由于其在命令行环境中的高效性与灵活性&#xff0c;TCPDump成为了网络诊断与安全分析中不可或缺的工具。本文将详细介绍TCPDump的基本用法&#xff0c;并提供一些高级技巧…...

Python | 刷题日记

1.海伦公式求三角形的面积 area根号下&#xff08;p(p-a)(p-b&#xff09;(p-c)) p是周长的一半 2.随机生成一个整数 import random xrandom.randint(0,9)#随机生成0到9之间的一个数 yeval(input("please input:")) if xy:print("bingo") elif x<y:pri…...

“JS逆向 | Python爬虫 | 动态cookie如何破~”

案例目标 目标网址:aHR0cHMlM0EvL21hdGNoLnl1YW5yZW54dWUuY29tL21hdGNoLzI= 本题目标:提取全部 5 页发布日热度的值,计算所有值的加和,并提交答案 常规 JavaScript 逆向思路 JavaScript 逆向工程通常分为以下三步: 寻找入口:逆向工程的核心在于找出加密参数的生成方式。…...

十.数据链路层——MAC/ARP

IP和数据链路层之间的关系 引言 在IP一节中&#xff0c;我们说IP层路由(数据转发)的过程&#xff0c;就像我们跳一跳游戏一样&#xff0c;从一个节点&#xff0c;转发到另一个节点 它提供了一种将数据从A主机跨网络发到B主机的能力 什么叫做跨网络&#xff1f;&#xff1f;&a…...

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…...

Vite + Vue 3 前端项目实战

一、项目创建 npm install -g create-vite #安装 Vite 项目的脚手架工具 # 或者使用yarn yarn global add create-vite#创建vite项目 create-vite my-vite-project二、常用Vue项目依赖安装 npm install unplugin-auto-import unplugin-vue-components[1] 安装按需自动导入组…...

python-字符替换

[题目描述] 给出一个字符串 s 和 q 次操作&#xff0c;每次操作将 s 中的某一个字符a全部替换成字符b&#xff0c;输出 q 次操作后的字符串输入 输入共 q2 行 第一行一个字符串 s 第二行一个正整数 q&#xff0c;表示操作次数 之后 q 行每行“a b”表示把 s 中所有的a替换成b输…...

团队项目开发使用git工作流(IDEA)【精细】

目录 开发项目总体使用git流程 图解流程 1.创建项目仓库[组长完成] 2. 创建项目&#xff0c;并进行绑定远程仓库【组长完成】 3.将项目与远程仓库&#xff08;gitee&#xff09;进行绑定 3.1 创建本地的git仓库 3.2 将项目添加到缓存区 3.3 将项目提交到本地仓库&#…...

爬虫案例实战

文章目录 一、窗口切换实战二、京东数据抓取 一、窗口切换实战 案例实战&#xff1a;使用selenium实现打开百度和腾讯两个窗口并切换 知识点&#xff1a;用到selenium中execute_script()执行js代码及switch_to.window()方法 全部代码如下&#xff1a; import time import war…...

uniapp uni-popup内容被隐藏问题

今天开发新需求的时候发现uni-popup 过一会就被隐藏掉只留下遮罩(css被更改了)&#xff0c;作者进行了如下调试。 1.讲uni-popup放入其他节点内 失败&#xff01; 2.在生成dom后在打开 失败&#xff01; 3.uni-popup将该节点在包裹一层 然后将统计设置样式&#xff0c;v-if v-s…...

leetcode155 最小栈

题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…...

在Ubuntu乌班图上安装Docker

最近在学习乌班图相关的内容&#xff0c;找了一些文档安装的都是报错的&#xff0c;于是记录一下学习过程&#xff0c;希望也能帮助有缘人&#xff0c;首先查看乌班图的系统版本&#xff0c;我的是如下的&#xff1a; cat /proc/version以下是在Ubuntu 20.04版本上安装Docker。…...

【Redis数据库百万字详解】数据持久化

文章目录 一、持久化1.1、什么是持久化1.2、持久化方式1.3、RDB优缺点1.4、AOF优缺点 二、RDB持久化触发机制2.1、手动触发2.2、自动触发 三、RDB持久化配置3.1、配置文件3.2、配置查询/设置3.3、禁用持久化3.4、RDB文件恢复 四、RDB持久化案例4.1、手动持久化4.2、自动持久化案…...

echarts legend. icon的展示

默认展示 icon展示circle圆形rect矩形roundRect圆角矩形triangle三角形diamond菱形pin水滴arrow箭头none不显示...

智能驱动,精准雾化:探秘微孔雾化片专用IC的自适应频率与无水保护

1. 微孔雾化技术的前世今生 第一次拆解家用加湿器时&#xff0c;我被那片直径不到3cm的金属薄片震惊了——它竟能凭空"变"出细腻的水雾。这就是微孔雾化片&#xff0c;通过每秒10万次以上的高频振动将液态水"打碎"成微米级颗粒。但要让这片金属薄片稳定工作…...

VRCT完全指南:在VRChat中打破语言障碍的终极解决方案

VRCT完全指南&#xff1a;在VRChat中打破语言障碍的终极解决方案 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT VRCT&#xff08;VRChat Chatbox Translator & Transcription&…...

Qwen3.5-4B助力Python爬虫:智能解析与数据清洗实战

Qwen3.5-4B助力Python爬虫&#xff1a;智能解析与数据清洗实战 1. 爬虫开发者的新困境 最近和几个做数据抓取的朋友聊天&#xff0c;发现大家普遍遇到一个头疼的问题&#xff1a;现在的网站越来越难爬了。以前写个正则表达式或者XPath就能搞定的事情&#xff0c;现在经常要面…...

全网资源一键下载:res-downloader终极资源嗅探工具使用指南

全网资源一键下载&#xff1a;res-downloader终极资源嗅探工具使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为…...

利用Cosmos-Reason1-7B进行Java面试题智能解析与答案生成

利用Cosmos-Reason1-7B进行Java面试题智能解析与答案生成 最近在帮朋友准备Java面试&#xff0c;发现一个挺普遍的问题&#xff1a;网上的面试题答案要么太零散&#xff0c;要么太浅显&#xff0c;很难找到一个能讲透原理、还能分析源码的深度解析。自己整理吧&#xff0c;费时…...

NiceGUI实战:打造动态路由导航栏的3个关键技巧

1. 为什么需要动态路由导航栏&#xff1f; 如果你用过NiceGUI开发Web应用&#xff0c;肯定遇到过这样的尴尬&#xff1a;想做个导航菜单&#xff0c;却发现官方压根没提供现成组件。这就像装修房子时发现建材市场不卖门把手——虽然不影响主体结构&#xff0c;但用起来总感觉少…...

强化学习实战:用Python手把手实现值迭代与策略迭代算法(附完整代码)

强化学习实战&#xff1a;用Python手把手实现值迭代与策略迭代算法&#xff08;附完整代码&#xff09; 强化学习作为机器学习的重要分支&#xff0c;近年来在游戏AI、自动驾驶、机器人控制等领域展现出惊人潜力。对于初学者而言&#xff0c;理解算法原理固然重要&#xff0c;但…...

Python实战:利用SymPy与SciPy高效破解复杂非线性方程组

1. 为什么需要SymPy和SciPy解非线性方程组&#xff1f; 遇到工程计算或科研问题时&#xff0c;我们常需要解像这样的方程组&#xff1a;xy10且yz34。这种包含平方项、三角函数或指数函数的方程&#xff0c;传统手工计算不仅耗时还容易出错。我去年做机器人运动学分析时&#xf…...

别再手动敲命令了!用Ansible一键搞定Harbor 2.14.0高可用部署(附完整Playbook)

Ansible自动化部署Harbor 2.14.0高可用集群实战指南 在容器化技术普及的今天&#xff0c;企业级私有镜像仓库Harbor已成为DevOps工具链中不可或缺的一环。然而&#xff0c;传统的手动部署方式不仅耗时费力&#xff0c;更难以保证多环境的一致性。本文将展示如何通过Ansible实现…...

如何将 iPhone 实况照片传输到电脑:四种最佳方法

实况照片是一种有趣的拍摄形式&#xff0c;它不仅能捕捉静态画面&#xff0c;还能记录下带有动态和声音的短暂瞬间。轻按一张实况照片&#xff0c;它就会 “动起来”&#xff0c;还原拍摄时几秒的动态画面和现场声音。 如果你已经掌握了普通照片从 iPhone 传输到电脑的方法&…...