Java基础面试题(一)
一、说说和的区别?作为运算符 将二进制的每一位进行与运算作为逻辑运算符两者都是与 如果左边为假则终止右边运算即短路运算。 则需要把两边的比较执行完二、int和Integer的区别int是Java的基本数据类型而Integer是int的包装类int直接存储整数值而Integer是一个对象包含了一些额外的方法和功能int的默认值是0而Integer的默认值是null扩展那么我们在判断这两个类型是否相等的时候有什么要注意的呢int 和 int 类型的比较可以直接用 判断int 和 Integer 类型的比较时也可以用 、 Integer会自动拆箱为 intInteger 和 Integer 类型的比较中。如果数值范围在[-128,127]之间可以用 。其他范围只能用 equals 方法、原因是JVM会维护这个范围内的缓存比如第一个Integer是127会存放在缓存中在创建第二个Integer时会直接返回缓存的127所以两者是相等的三、接口和抽象类的区别1.语法层面抽象类可以提供成员方法的实现细节而接口中只能存在public abstract 隐式声明方法(JDK8默认方法)抽象类中的成员变量可以是各种类型的而接口中的成员变量只能是public static final隐式声明类型的必须在声明时赋值接口中不能含有静态代码块以及静态方法而抽象类可以有静态代码块和静态方法一个类只能继承一个抽象类而一个类却可以实现多个接口。2.设计层面抽象类是对整个类进行抽象包括属性行为方法那么一定是抽象类的种类拥有同一种属性或行为的类接口是对行为行为的抽象抽象类是一种模板设计。接口是一种规范。3.怎么选择如果拥有一些方法并想让他们中的一些有默认的具体实现请选择抽象类如果想实现多重继承那么请使用接口由于java不支持多继承子类不能继承多个类但一个类可以实现多个接口因此可以使用接口来解决。如果基本功能在不断变化那么就使用抽象类如果使用接口那么每次变更都需要相应的去改变实现该接口的所有类。4.JDK8中为什么会提供默认方法目的用来减少抽象类和接口的差异可以在接口中提供默认的实现方法并实现该接口的类不用强制去实现这个方法。JDK8中接口的静态方法只能通过接口名直接去调用接口中的默认方法因为不是abstract的所以可重写也可以不重写。四、谈谈你对树Tree的理解(数据结构)?1、树的由来数组检索效率高链表添加删除效率高树综合检索和操作的效率2、树的分类根据不同的分类方式树可以分为不同的类型根据树分支的数量限制可以分为二叉树和多叉树。二叉树最多只有两个子节点而多叉树一个节点可以有多于两个的子节点。根据树节点的有序性可以分为查找树和无序树。查找树的基本特征为任意一个节点所包含的键值大于等于左孩子的键值小于等于右孩子的键值。无序树则没有特定的键值大小关系。根据具体用途和特征例如红黑树、AVL树、平衡二叉树、平衡二叉搜索树等。红黑树是一种自平衡二叉查找树AVL树也是一种自平衡二叉查找树它要求任何节点的两个子树的高度差最大为1。平衡二叉树和平衡二叉搜索树则是为了平衡树的左右子树的高度差。根据树的完整性和是否包含空值可以分为完全二叉树、满二叉树、完全二叉搜索树、满二叉搜索树等。完全二叉树和满二叉树是包含所有节点的二叉树而完全二叉搜索树和满二叉搜索树则是所有节点都按照一定顺序排列的二叉搜索树。3、常见树的特点普通二叉查找树倾斜的问题AVL自平衡左旋右旋开销问题红黑树黑节点平衡、深度问题、二叉。作为内存中数据存储B树和B树多路查找、深度比较少、一般用于大规模数据存储、索引4、TreeMap和HashMap的区别HashMap的综合效率为什么比TreeMap高什么我们工作中常用HashMap而不用TreeMapTreeMap本质就是红黑树的实现HashMap以jdk8为例。就是通过 数组链表红黑树算法实现的通过上面的实现也可以看到HashMap综合的读写效率要比TreeMap高了五、HashMap面试汇总1. jdk8为什么引入了红黑树因为链表长度增加后检索的效率急剧降低复杂度是 O(n) [https://blog.csdn.net/heihei2017/article/details/102775283]2.解决hash冲突。为什么不直接用红黑树?因为红黑树需要进行左旋右旋变色这些操作来保持平衡而单链表不需要。当元素小于 8 个的时候此时做查询操作链表结构已经能保证查询性能。当元素大于 8 个的时候 红黑树搜索时间复杂度是O(logn)而链表是 O(n)此时需要红黑树来加快查询速度但是新增节点的效率变慢了。因此如果一开始就用红黑树结构元素太少新增效率又比较慢无疑这是浪费性能的。3.为什么链表改为红黑树的阈值是 8首先和hashcode碰撞次数的泊松分布有关主要是为了寻找一种时间和空间的平衡。在负载因子0.75HashMap默认的情况下单个hash槽内元素个数为8的概率小于百万分之一将7作为一个分水岭等于7时不做转换大于等于8才转红黑树小于等于6才转链表。链表中元素个数为8时的概率已经非常小再多的就更少了所以原作者在选择链表元素个数时选择了8是根据概率统计而选择的。4. 默认加载因子为什么是0.75这个是从时间和空间的角度综合得出的。如果是1.0 当数组的值全部填充了才会发生扩容此时Hash冲突是避免不了的。链表的操作或者红黑树的操作会牺牲时间来保证空间的利用率如果是0.5 当数组中一半的数据利用了之后就会开始扩容。这时填充的数据少。hash冲突也会减少底层的链表和红黑树的高度也会降低。查询效率增加。但是这时还有太多的空间没有利用。空间资源浪费了。所以0.75是综合考虑得出的5.为什么要右移16位其实是为了减少碰撞进一步降低hash冲突的几率。int类型的数值是4个字节的右移16位异或可以同时保留高16位于低16位的特征当数组的长度很短时只有低位数的hashcode值能参与运算。而让高16位参与运算可以更好的均匀散列减少碰撞进一步降低hash冲突的几率。并且使得高16位和低16位的信息都被保留了。在HashMap的put方法里面是通过Key的hash值与数组的长度取模计算得到数组的位置。而在绝大部分的情况下n的值一般都会小于2^16次方也就是65536。所以也就意味着i的值 始终是使用hash值的低16位与(n-1)进行取模运算这个是由与运算符的特性决定的。这样就会造成key的散列度不高导致大量的key集中存储在固定的几个数组位置很显然会影响到数据查找性能。6.为什么Hash值要与length-1相与把 hash 值对数组长度取模运算模运算的消耗很大没有位运算快。 当 length 总是 2 的n次方时h (length-1) 运算等价于对length取模也就是 h%length但是 比 % 具有更高的效率。7.介绍下put方法的流程首先根据 key 的值计算 hash 值找到该元素在数组中存储的下标如果数组是空的则调用 resize 进行初始化如果没有哈希冲突直接放在对应的数组下标里如果冲突了且 key 已经存在就覆盖掉 value如果冲突后发现该节点是红黑树就将这个节点挂在树上如果冲突后是链表判断该链表是否大于 8 如果大于 8 并且数组容量小于 64就进行扩容如果链表节点大于 8 并且数组的容量大于 64则将这个结构转换为红黑树否则链表插入键值对若 key 存在就覆盖掉 value。

相关新闻

Clawdbot整合指南:通过代理配置,让团队内部共享Qwen3大模型服务

Clawdbot整合指南:通过代理配置,让团队内部共享Qwen3大模型服务

Clawdbot整合指南:通过代理配置,让团队内部共享Qwen3大模型服务 1. 前言:为什么需要这个配置? 想象一下这个场景:你的团队刚刚在本地服务器上部署了强大的Qwen3:32B大语言模型,它推理能力强,中…

2026/5/17 9:46:50 阅读更多 →
Qwen3-VL儿童教育应用:绘本自动讲解系统实战

Qwen3-VL儿童教育应用:绘本自动讲解系统实战

Qwen3-VL儿童教育应用:绘本自动讲解系统实战 1. 引言:当AI成为孩子的“故事大王” 想象一下这样一个场景:孩子翻开一本新的绘本,指着上面的图画问:“妈妈,这只小兔子为什么看起来不开心?” 而…

2026/5/17 9:46:48 阅读更多 →
亚洲美女-造相Z-Turbo镜像免配置优势:预装Xinference+Gradio+模型权重,开箱即用

亚洲美女-造相Z-Turbo镜像免配置优势:预装Xinference+Gradio+模型权重,开箱即用

亚洲美女-造相Z-Turbo镜像免配置优势:预装XinferenceGradio模型权重,开箱即用 1. 开箱即用的AI图像生成方案 如果你正在寻找一个能够快速生成高质量亚洲美女图片的AI工具,但又不想花费大量时间在环境配置和模型部署上,那么这个镜…

2026/5/17 9:46:48 阅读更多 →

最新新闻

仅限首批读者:ChatGPT CoT黄金提示库V2.1(含17个经A/B测试验证的思维链变体,失效率<1.2%)

仅限首批读者:ChatGPT CoT黄金提示库V2.1(含17个经A/B测试验证的思维链变体,失效率<1.2%)

更多请点击: https://codechina.net 第一章:ChatGPT思维链(CoT)的核心原理与演进脉络 思维链(Chain-of-Thought, CoT)并非ChatGPT原生内置的模块化功能,而是通过提示工程激发大语言模型显式生成…

2026/7/3 7:32:01 阅读更多 →
从零到CI/CD内嵌:ChatGPT生成单元测试,7步落地法,含可直接运行的Prompt工程+边界值校验脚本

从零到CI/CD内嵌:ChatGPT生成单元测试,7步落地法,含可直接运行的Prompt工程+边界值校验脚本

更多请点击: https://kaifayun.com 第一章:ChatGPT 生成 单元测试 代码 大型语言模型如 ChatGPT 已成为开发者编写单元测试的高效辅助工具,尤其适用于快速生成覆盖边界条件、异常路径和典型业务逻辑的测试用例。其优势在于理解自然语言描述的…

2026/7/3 7:30:00 阅读更多 →
3分钟上手:LyricsX让Mac桌面歌词显示变得如此简单

3分钟上手:LyricsX让Mac桌面歌词显示变得如此简单

3分钟上手:LyricsX让Mac桌面歌词显示变得如此简单 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 还在为iTunes没有歌词显示功能而烦恼吗?LyricsX…

2026/7/3 7:27:59 阅读更多 →
GPT-SoVITS终极优化指南:如何在Mac上实现300%语音合成性能提升

GPT-SoVITS终极优化指南:如何在Mac上实现300%语音合成性能提升

GPT-SoVITS终极优化指南:如何在Mac上实现300%语音合成性能提升 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS 你是否…

2026/7/3 7:25:59 阅读更多 →
江苏mom软件厂商推荐-江苏汉软

江苏mom软件厂商推荐-江苏汉软

江苏省,作为中国制造业的重镇,汇聚了众多为工厂数字化转型提供“大脑”的MOM(制造运营管理)软件厂商。江苏汉软工业智能技术有限公司(简称“江苏汉软”)是其中颇具代表性的一家,此外&#xff0c…

2026/7/3 7:25:59 阅读更多 →
Figma中文界面终极解决方案:3分钟让设计工具说中文

Figma中文界面终极解决方案:3分钟让设计工具说中文

Figma中文界面终极解决方案:3分钟让设计工具说中文 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而困扰吗?每天面对"Auto Layout&q…

2026/7/3 7:23:58 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻