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

2024最新!!Java后端面试题(2)看这一篇就够了

hello uu们 感谢收看!!!!我最近听了一首歌《21》,真的很感慨,马上步入20的我也感觉时间真的飞快...望大家都能过上理想的生活,不负内心的所托...现在口语化更新答案,让大家更加模拟的与面试官沟通.

正如人民日报所言,“请你努力,为了自己。”

二、容器

  1. Java容器都有哪些?
  • 在Java中,我们主要有两大类容器。第一类是集合类(Collection),比如我们常用的List,像ArrayListLinkedList,还有Set,例如HashSetTreeSet。第二类是映射类(Map),它用来存储键值对,比如HashMapTreeMap
  1. Collection 和 Collections 有什么区别?
  • 这个问题很常见,Collection是一个接口,它代表了一组对象的集合,比如ListSet。而Collections是一个工具类,提供了一系列静态方法来操作这些集合,比如排序和搜索等。
  1. List、Set、Map 之间的区别是什么?
  • 简单来说,List是有序的,可以包含重复元素,像一列学生的名字。Set是不允许重复的,保持唯一性,就像一个班级里每个学生只能有一个学号。至于Map,更多的是存储键值对的,比如电话簿,键是名字,值是电话号码。
  1. HashMap 和 Hashtable 有什么区别?
  • HashMap是非线程安全的,性能更好,而Hashtable是线程安全的,但因此性能会有些下降。此外,HashMap允许一个null键和多个null值,而Hashtable不允许任何null键和null值。
  1. 如何决定使用 HashMap 还是 TreeMap?
  • 如果你需要快速的插入和查找,且不关心顺序,HashMap是个不错的选择。但如果需要根据键的自然顺序或者自定义顺序来排序,那就用TreeMap。
  1. 说一下 HashMap 的实现原理?
  • HashMap通过使用哈希表来存储数据。当你存储一个键值对时,它会根据键的哈希值来计算索引位置。若发生碰撞(多个键产生相同的索引),HashMap会通过链表(在Java 8之后,可能变为红黑树)来处理这些冲突。
  1. 说一下 HashSet 的实现原理?
  • HashSet底层其实是基于HashMap实现的。每一个HashSet中的元素都是HashMap的一个键,HashMap里的值一般是一个常量。它利用HashMap的特性来确保元素的唯一性。
  1. ArrayList 和 LinkedList 的区别是什么?
  • ArrayList使用动态数组作为底层实现,随机访问的时候性能很好。而LinkedList则使用链表,适合频繁的插入和删除操作。简单来说,如果你需要经常修改列表,LinkedList可能更好;如果你需要快速访问某个元素,ArrayList更为合适。
  1. 如何实现数组和 List 之间的转换?
  • 从数组转为List很简单,你可以使用Arrays.asList(array)。而从List转为数组则可以用list.toArray(new String[0])来实现。
  1. ArrayList 和 Vector 的区别是什么?
  • Vector是线程安全的,所有方法都被锁住,因此在多线程环境下是安全的,但在单线程中,性能上可能不如ArrayList。ArrayList是非线程安全的,速度更快,适合单线程环境。
  1. Array 和 ArrayList 有何区别?
  • 数组的大小是固定的,而ArrayList是可变的,可以根据需要增减大小。数组还能存储基本数据类型,但是ArrayList只能存对象类型。
  1. 在 Queue 中 poll()和 remove()有什么区别?
  • poll()方法在队列为空时返回null,而remove()会抛出异常,二者都是用来获取并移除队列头的元素。也就是说,poll更安全一些。
  1. 哪些集合类是线程安全的?
  • 常见的线程安全集合类包括VectorHashtableConcurrentHashMap等,还有一些像CopyOnWriteArrayList和各种实现的BlockingQueue也都是线程安全的。
  1. 迭代器 Iterator 是什么?
  • Iterator是遍历集合的工具,可以让你按顺序访问集合里的每一个元素,而不用考虑集合的内部细节。这种设计使得我们能够安全地遍历集合。
  1. Iterator 怎么使用?有什么特点?
  • 使用Iterator很简单,首先通过collection.iterator()获取迭代器,然后用hasNext()next()方法顺序访问元素。特点是它支持在遍历期间安全地删除元素,使用remove()方法。
  1. Iterator 和 ListIterator 有什么区别?
  • Iterator可用于所有类型的集合,但只能单向遍历;而ListIterator专门用于List,支持双向遍历,可以让你在列表中前后移动。
  1. 怎么确保一个集合不能被修改?
  • 你可以使用Collections.unmodifiableCollection(collection)方法,这样返回的集合就不能被修改,任何修改操作都会抛出异常。

相关文章:

2024最新!!Java后端面试题(2)看这一篇就够了

hello uu们 感谢收看!!!!我最近听了一首歌《21》,真的很感慨,马上步入20的我也感觉时间真的飞快...望大家都能过上理想的生活,不负内心的所托...现在口语化更新答案,让大家更加模拟的…...

超好用的10款视频剪辑软件,从入门到精通

视频剪辑软件哪款比较好呢?无论是专业制作团队、自媒体创作者,还是家庭用户,一款好用的视频剪辑软件都能极大地提升创作效率和作品质量。以下是十款备受推崇的视频剪辑软件,分别从适用人群、易用程度和功能特点进行介绍。 1.影忆…...

python股票因子,交易所服务器宕机,量化交易程序怎么应对

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款鸿蒙开发主板。 一、安装输入法并查看输入…...

使用nest+typeorm框架写数据库导致mysql的binlog暴增记录

这 两天用nesttypeorm写了一个商城,上线后mysql日志binlog两天就达到了10几个G,排查结果如下: 有个功能是定时遍历所有未签收的订单,看看是否到了自动签收时间,如果到了,就把订单状态设置成已签收。 代码…...

组合逻辑元件与时序逻辑元件

组合逻辑元件和时序逻辑元件都是数字电路中的基本构建块,但它们在功能和结构上存在显著差异。 1. 组合逻辑元件: 内容: 组合逻辑元件的输出仅取决于当前的输入,而与之前的输入无关。 它们没有记忆功能。 常见的组合逻辑元件包括: 与门 (AND…...

天龙八部怀旧单机微改人面桃花+安装教程+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设:天龙八部怀旧单机微改人面桃花。 另外:本人承接各种游戏架设(单机联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xf…...

docker管理

拉取容器镜像 docker pull 镜像名:镜像版本查看镜像 docker images查看容器列表 # 查看正在运行的容器 docker ps # 查看全部的容器(包括停止的容器) docker ps -a进入容器 docker exec -it 容器id /bin/bash停止容器 docker stop 容器id运行容器 docker start 容器id删除…...

electron教程(三)窗口设置

在main.js文件中,创建窗口时会设置窗口的大小,其实还有很多其他属性,可以根据实际需求选择设置,但部分属性存在局限性,官网也有明确告知:自定义窗口 | Electron (electronjs.org) 项目文件目录如下&#x…...

图像增强论文精读笔记-Deep Retinex Decomposition for Low-Light Enhancement(Retinex-Net)

1. 论文基本信息 论文标题:Deep Retinex Decomposition for Low-Light Enhancement 作者:Chen Wei等 发表时间和期刊:2018;BMVC 论文链接:https://arxiv.org/abs/1808.04560 2. 研究背景和动机 低光照条件下拍摄的…...

2024年配置YOLOX运行环境+windows+pycharm24.0.1+GPU

1.配置时间2024/9/25 2.Anaconda-python版本3.7,yolox版本0.2.0 YOLOX网址: https://github.com/Megvii-BaseDetection/YOLOX 本人下载的这个版本 1.创建虚拟环境 conda create -n yolox37 python37 激活 conda activate yolox37 2.安装Pytorch cuda等&…...

vue-i18n在使用$t时提示类型错误

1. 问题描述 Vue3项目中,使用vue-i18n,在模版中使用$t时,页面可以正常渲染,但是类型报错。 相关依赖版本如下: "dependencies": {"vue": "^3.4.29","vue-i18n": "^9.1…...

大厂面试真题-什么是CAS单点登录?什么原理

CAS(Central Authentication Service,中央认证服务)单点登录(SSO,Single Sign-On)的原理主要基于统一的认证机制和票据验证过程,使得用户只需在多个相互信任的应用系统中登录一次,即…...

用Java提取PDF表格到文本、CSV、Excel工作表

如何精准地提取PDF格式中嵌入的表格数据,并将其无缝转换为更加易于分析和操作的形式,如纯文本、CSV文件或Excel工作表,是一项重要的文档处理技巧。使用Java,我们可以简单地实现这一过程。本文将介绍如何利用Java从PDF文档提取表格…...

OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 解码并返回已抓取的视频帧。 cv::VideoCapture::retrieve() 是 VideoCapture 类的一个成员函数,用于从视频流中检索一帧图像。 retr…...

【RocketMQ】SpringBoot整合RocketMQ

🎯 导读:本文档详细介绍了如何在Spring Boot应用中集成Apache RocketMQ,并实现消息生产和消费功能。首先通过创建消息生产者项目,配置POM文件引入RocketMQ依赖,实现同步消息发送,并展示了如何发送普通字符串…...

mysql replace无法替换空格?如何解决

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...

Redis篇(环境搭建)

目录 一、安装包 1. Windows版下载地址 2. Linux版下载地址 二、安装Redis 1. 在Linux中安装Redis 2. 在Windows中安装Redis 3. 细节问题 三、Redis服务启动 1. 默认启动 2. 指定配置启动 3. 开机自启 四、Redis服务停止 1. Linux系统中启动和停止Redis 2. Window…...

【C++题目】7.双指针_和为 s 的两个数字

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: LCR 179.查找总价格为目标值的两个商品 题目描述: 解法 解法一(暴力解法,会超时) 两层 for 循环列出所有两个数字的组合…...

网络通信1-传输层

tcp的三次握手: TCP(传输控制协议)的三次握手是建立一个可靠的连接的过程。这个过程中涉及到的主要参数包括: 序列号(Sequence Number, SEQ): 在第一次握手中,发起方(客户端&#xf…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...