Java面试题大全(全网最全,持续更新)中级(3)

1. 集合框架

1.1. ConcurrentHashMapHashMap 有什么区别?

  • HashMap:线程不安全,适用于单线程环境。
  • ConcurrentHashMap:线程安全,适用于多线程环境,使用分段锁机制来提高并发性能。

1.2. TreeSet 如何实现排序?

TreeSet 使用 Red-Black 红黑树来存储元素,并根据元素的自然顺序或 Comparator 来排序。


1.3. 什么是 fail-fastfail-safe

  • fail-fast:当集合在遍历时被修改,会抛出 ConcurrentModificationException,如 ArrayList
  • fail-safe:当集合在遍历时被修改,不会抛异常,创建的是集合的副本,如 ConcurrentHashMap

2. 多线程与并发

2.1. 如何实现线程安全?

可以使用以下方式实现线程安全:

  • synchronized 关键字
  • 使用 Lock 接口,如 ReentrantLock
  • 使用 volatile 关键字保证变量的可见性
  • 使用并发集合类(如 ConcurrentHashMap

2.2. 什么是线程饥饿?

线程饥饿发生在某些线程长时间得不到 CPU 资源,无法执行,通常是由于其他线程占用了过多的资源或线程优先级不合理。


2.3. 解释 synchronizedReentrantLock 的区别。

  • synchronized:隐式锁,简单易用,无法手动释放锁。
  • ReentrantLock:显式锁,提供更多功能,如锁的可重入、等待时间等,手动获取和释放锁。

2.4. 什么是死锁?如何避免死锁?

死锁是指两个或多个线程相互等待对方释放锁,导致所有线程都无法继续执行。避免死锁的方法有:

  • 避免嵌套锁。
  • 尝试使用 tryLock 限定获取锁的时间。
  • 遵循固定的锁顺序。

3. JVM 与性能调优

3.1. 如何分析和优化 JVM 性能?

可以使用以下工具分析和优化 JVM 性能:

  • jstack:分析线程堆栈信息。
  • jmap:生成堆内存转储文件(Heap Dump)。
  • jstat:监控 GC 的活动和内存使用情况。
  • VisualVMJProfiler:分析 CPU 和内存使用情况。

3.2. 什么是类加载机制?类加载器有哪些?

类加载机制负责将类文件加载到 JVM 中。类加载器有以下三种:

  • 引导类加载器(Bootstrap ClassLoader):加载核心类库。
  • 扩展类加载器(Extension ClassLoader):加载扩展类库。
  • 应用程序类加载器(Application ClassLoader):加载用户定义类。

3.3. 解释 JVM 的内存模型。

JVM 内存模型分为以下几个区域:

  • 堆(Heap):存储对象实例。
  • 栈(Stack):每个线程都有自己的栈,存储局部变量和方法调用信息。
  • 方法区(Method Area):存储类的元数据、静态变量、常量池。
  • 程序计数器(Program Counter):每个线程都有自己的程序计数器,记录当前线程执行的字节码指令位置。

想要更大提升,点击免费使用小奈AI 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/430776.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++掌中宝】走进C++引用的世界:从基础到应用

文章目录 引言1. 基础概念2. 引用与指针的区别3. 引用的应用场景3.1 引用作为函数参数3.2 引用作为函数返回值3.3 常引用(const引用)的使用3.4 引用与多态 4. C 引用的优缺点5. 引用的注意事项与常见陷阱6. 总结结语 引言 C 引用是编写高效、简洁代码的…

新品亮相|美格智能SLM530/SLM530P智能模组,助力金融新零售智慧升级

随着金融支付产业数字化与智能化不断推进,泛支付场景一体化解决方案成为行业发展的新趋势,从手持POS机到智能收款机,金融支付领域需要更快速、更精准、更安全的解决方案,加快推进数字化升级进程。 近期,美格智能正式发…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-18

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-18 1. The Application of Large Language Models in Primary Healthcare Services and the Challenges W YAN, J HU, H ZENG, M LIU, W LIANG - Chinese General Practice, 2024 人工智能大语言模型在基层医疗…

基于深度学习的文本情感原因提取研究综述——论文阅读

前言 既然要学习情感分析,那么肯定还要了解情感原因对抽取的发展历程,所以我又搜了一篇研究综述,虽然是2023年发表的,但是里面提及到的历程仅停留到2022年。这篇综述发布在TASLP期刊,是音频、声学、语言信号处理的顶级…

静态路由和默认路由(实验)

目录 一、实验设备和环境 1、实验设备 2、实验环境 (1)实验拓扑图 (2)实验命令列表 二、实验记录 1、直连路由与路由表查看 步骤1:建立物理连接并运行超级终端。 步骤2:在路由器上查看路由表。 2、静态路由配置 步骤1:配…

哈希表与离散化

一、字符串哈希 1. 什么是哈希 哈希算法是:通过哈希函数将字符串、较大的数等转换为能够用变量表示的或者是直接作为数组下标的数,通过哈希算法转换到的值,称之为哈希值。哈希值可以实现快速查找和匹配。 比如:用数组下标计数法&…

QT widgets 窗口缩放,自适应窗口大小进行布局

1. 窗口布局 2. 尺寸策略:扩展 Fixed (固定): 行为:控件的大小是固定的,不会随着窗口大小的变化而改变。它的大小由控件的 sizeHint() 返回的值决定。 适用场景:当你希望控件的大小保持不变,不随布局调整时使用&#x…

Windows下利用MSYS2和VS的nmake编译nginx源码

目录 一、使用说明 二、安装软件 2.1 下载依赖库 2.3 下载并安装 StrawberryPerl 2.4 下载并安装 MSYS 2 2.5 nginx源代码下载 三、编译配置 3.1 设置NGX_MSVC_VER 3.2 配置 Makefile 3.3 编译代码 3.4 整理Nginx发布环境 四、错误处理 一、使用说明 本文章主要记…

spring boot启动报错:so that it conforms to the canonical names requirements

springboot 2.x的版本中对配置文件中的命名规范有了强制性的要求,如下图所示中的dataSource属性属于驼峰格式,但是在springboot 2.x中不允许使用驼峰形式。 根据错误提示可知将其使用 - 来分割即可 错误信息的含义:“Canonical names should…

MySQL的msi版本9.0在安装过程总结和需要注意的地方

下载 参考文档 [官方包快速下载](https://dev.mysql.com/downloads/mysql/) 使用zip文件安装可参考,这种直接把zip安装包解压到想要放的地方,并安装其中的方式一步步修改数据地址等配置即可。 个人使用了msi的安装文件 msi版本…

Kafka 3.0.0集群部署教程

1、集群规划 主机名 ip地址 node.id process.roles kafka1 192.168.0.29 1 broker,controller Kafka2 192.168.0.30 2 broker,controller Kafka3 192.168.0.31 3 broker,controller 2、将kafka包上传以上节点/app目录下 mkdir /app 3、解压kafka包 所有节点 …

JavaWeb--纯小白笔记06:使用Idea创建Web项目,Servlet生命周期,注解,中文乱码解决

使用Idea创建一个web项目----详细步骤配置,传送门:http://t.csdnimg.cn/RsOs7 src:放class文件 web:放html文件 out:运行过后产生的文件 一创建一个新的web项目(配置好了后): 在src创建一个文件…

NVIDIA发布端到端自动驾驶框架Hydra-MDP

自动驾驶是目前人工智能领域的一个主要分支,目前特斯拉的FSD确实是为数不多的大模型框架。与其说特斯拉是一个造车公司,不如说是一个人工智能大数据公司。特斯拉每天靠行驶在道路上的汽车搜集的道路数据不胜其数,而拥有海量的数据是人工智能领…

001.从0开始实现线性回归(pytorch)

000动手从0实现线性回归 0. 背景介绍 我们构造一个简单的人工训练数据集,它可以使我们能够直观比较学到的参数和真实的模型参数的区别。 设训练数据集样本数为1000,输入个数(特征数)为2。给定随机生成的批量样本特征 X∈R10002 …

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

论文阅读与分析:Few-Shot Graph Learning for Molecular Property Prediction

论文阅读与分析:Few-Shot Graph Learning for Molecular Property Prediction 论文地址和代码地址1 摘要2 主要贡献3 基础知识Meta Learning1 介绍2 学习算法Step 1: What is learnable in a learning algorithm?Step 2:Define loss function for learn…

基于C语言开发(控制台)通讯录管理程序

通讯录程序设计 一、课程设计题目与要求 题目 :通讯录管理程序 1. 问题描述 编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。2. 基本要求 程序应提供的基本基本管理功能有…

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…

领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构

博主介绍: 大家好,我是Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 技术范围: 目前专注java体系,以及golang、.Net、…

(1999-2018年)全国各城市-财政收入–营业税

涵盖了1999年至2018年间,全国各城市的财政收入中营业税的部分。数据来源于中国区域统计年鉴及各省市统计年鉴 1999-2018年全国各城市-财政收入-营业税资源-CSDN文库https://download.csdn.net/download/2401_84585615/89504622 不同行业对营业税的贡献也存在差异。…