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

面试题库之JAVA基础篇(二)

String
  1. 只读字符串。
  2. 每次+操作会隐式的在内存中new一个跟原字符串一样的StringBuilder对象,然后append+号后面的字符串。
StringBuilder 
  1. 可变字符串对象。
  2. 线程不安全。
StringBuffer 
  1. 可变字符串对象。
  2. 线程安全。
数组
  1. 一种线性数据结构,使用连续的存储空间存放相同数据类型的集合容器。
  2. 存储和访问效率高,时间复杂度O(1)。
  3. 删除数据需要重排后面的数据,时间复杂度O(n)。
  4. 初始化时需要指定长度,长度不可变。
  5. 可通过复制的方式扩容长度。
  6. 支持存储基本数据类型。
Collection 
  1. 可以存储多个不同对象的容器。
  2.  不直接存储对象,而是对象的引用。
  3. 不能存储基本数据类型。
List 
  1. 继承了Collection的有序列表。
  2. 通过索引访问列表元素。
ArrayList 
  1. List接口的动态数组实现,容量不足时按1.5倍扩容。
  2. 初始化的默认容量为10。
  3. 访问速度快。
  4. 线程不安全。
  5. 在添加大量元素时,如果已知元素数量,使用ensureCapacity()方法先进行扩容,避免添加元素过程中的多次扩容。
  6. 实现了Cloneable接口,可以被复制,但是是浅拷贝。
LinkedList
  1. List接口的链表实现。 
  2. 插入和删除元素的性能优越,时间复杂度O(1)。
  3. 线程不安全。
Collections 

        Collections是集合的一个辅助工具类,它包含了很多集合操作的静态方法,用于实现集合的搜索、排序、线程安全化等操作。

Map

        键值对映射的抽象接口,一个键对应一个值。

HashMap 
  1. 基于map接口的非同步实现。
  2. 线程不安全。
  3. key和value可以null,key不能重复,所以只有一个key可以为null。
  4. 初始容量16,容量建议2的N次方,能提高计算机的执行效率。
  5. 扩容阈值默认0.75。
  6. 每次扩容为原容量的两倍。
  7. 底层采用数组+链表+红黑树实现,数组的每个元素存储一个单向链表,当链表的长度达到8时,就会转换成红黑树。转换的目的是当链表中元素较多时,也能保证HashMap的存取效率(备注:链表转为红黑树只有在数组的长度大于等于64才会触发)。
ConcurrentHashMap 
  1. concurrentHashMap是一个支持并发更新和查询的HashMap。
  2. 资源所的粒度是key的槽位,而非整个列表,很大程度上提高并发的性能。
  3. 在理想状态下,ConcurrentHashMap 可以支持 16 个线程执行并发写操作(如果并发级别设为16),及任意数量线程的读操作。
 Fail-Fast机制

        一种错误机制,当多个线程对同一个集合的内容进行操作时,就可能发生fail-fast事件。

        modCount:集合内部记录集合修改次数的属性,每次修改,modCount+1。

        expectModCount:迭代器内部记录集合的修改次数,初始化时会将集合当前的修改次数记录下来,迭代器修改集合元素时,modCount、expectModCount均+1。

        集合的fail-fast机制:迭代器遍历的每次循环开始时候,expectModCount会和modCount比较,如果不相等,就认为有别的线程修改了集合,则会抛出ConcurrentModificationException异常。

泛型 
  1. 本质是参数类型化,就是把数据类型当做一个参数。
  2. 使用泛型可以避免显示的强制类型转换,增加代码的可读性。
  3. 使用泛型能够降低运行时的类型转化异常,提高代码健壮性。 
ArrayList 和 LinkedList 的区别有哪些 
  1. ArrayList基于数组,LinkedList基于链表。
  2. ArrayList访问速度快,LinkedList删除、修改速度快。
有数组了为什么还要搞个 ArrayList

        我们常说的数组是定死的数组,ArrayList 却是动态数组。 

相关文章:

面试题库之JAVA基础篇(二)

String 只读字符串。每次操作会隐式的在内存中new一个跟原字符串一样的StringBuilder对象,然后append号后面的字符串。 StringBuilder 可变字符串对象。线程不安全。 StringBuffer 可变字符串对象。线程安全。 数组 一种线性数据结构,使用连续的…...

[Rust] 可迭代类型, 迭代器, 如何正确的创建自定义可迭代类型

在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator 的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环. 直接实现 在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器. 但是如…...

MySQL中,text,mediumtext, 和 longtext字符类型

需求 由于项目需要,需要在mysql数据库,储存长文本,长文本格式可能为markdown也可能为html。 思路 测试存入html时,字符类型为varcar 255。很明显字符长度达不到要求。数据库抛错,修改字符类型 解决方案 将原本的字…...

网页开发 JS基础

目录 JS概述 基本语法 数据类型内置方法 DOM对象 查找标签 绑定事件 操作标签 jQuery 查找标签 绑定事件 操作标签 Ajax请求 数据接口 前后端分离 ajax的使用 JS概述 一门弱类型的编程语言,属于基于对象和基于原型的脚本语言. 1 直接编写<script>console…...

如何在财税行业查找批量客户?

现在市场上代记账公司也不算少&#xff0c;做过这行的都知道&#xff0c;最初呢行业竞争不强&#xff0c;都是靠地推、老客户转介绍&#xff0c;或者长期以往的蹲守各个地区的工商注册服务中心&#xff0c;找那些才注册企业的老板或者创业者。但是&#xff0c;随着市场经济的发…...

IntelliJ IDEA详细完整安装教程

IntelliJ IDEA 是一款强大的Java集成开发环境&#xff0c;以下是安装和使用教程&#xff1a; 1. 下载IntelliJ IDEA&#xff1a;访问JetBrains官网&#xff08;jetbrains.com&#xff09;&#xff0c;点击“Download”按钮&#xff0c;选择适合自己操作系统的版本进行下载。 2.…...

【.NET Core】Linq查询运算符(一)

【.NET Core】Linq查询运算符&#xff08;一&#xff09; 文章目录 【.NET Core】Linq查询运算符&#xff08;一&#xff09;一、概述二、筛选数据三、投影运算3.1 Select 3.2 SelectMany3.3 Zip3.4 Select 与 SelectMany 四、Set&#xff08;设置&#xff09;运算4.1 Distinct…...

Python sorted函数及用法以及如何用json模块存储数据

Python sorted函数及用法 sorted() 函数与 reversed() 函数类似&#xff0c;该函数接收一个可迭代对象作为参数&#xff0c;返回一个对元素排序的列表。 在交互式解释器中测试该函数&#xff0c;可以看到如下运行过程&#xff1a; >>> a [20, 30, -1.2, 3.5, 90, 3.…...

使用opencv将sRGB格式的图片转换为BT.2020格式【sRGB】【BT.2020】

将sRGB格式的图片转换为BT.2020格式涉及到两个步骤&#xff1a;首先将sRGB转换到线性RGB&#xff0c;然后将线性RGB转换到BT.2020。这是因为sRGB图像通常使用伽马校正&#xff0c;而BT.2020工作在线性色彩空间中。 从sRGB到线性RGB&#xff1a;sRGB图像首先需要进行伽马校正解码…...

聊天注意事项

聊天成功的核心就是双方都能舒服 有些人不会聊天是缺乏引导性 聊天聊两句话就没了 聊天要把话题引导向对方 从倾诉者变为倾听者 才能不断交流 沟通不是一个人的独角戏 每个人都渴望被理解 要注意倾听别人说的话 不要只顾自己说一大堆&#xff0c;别人都瞌睡了 不要查户口式问…...

12.5 作业

1&#xff0c; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有…...

深入理解指针3

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起继续深入学习指针&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;&#xff01; 话不多说&am…...

大数据环境下在线考试系统安全策略研究

摘 要 随着云计算、物联网、电子商务、企业信息化等的飞速发展&#xff0c;以及智能终端和各种检测、感应设备的普及和建设&#xff0c;全球逐渐进入信息化、网络化&#xff0c;由此产生了指数爆炸般的数据增长&#xff0c;一个大规模生产、分享和应用的数据的时代正在开启&am…...

Python中程序的异常处理

Python程序一般对输入有一定要求&#xff0c;担当实际输入不满足程序要求时&#xff0c;可能会产生程序的运行错误。Python语言使用的保留太容易try和except进行异常处理&#xff01; try: 语句块1 except: 语句块2 语句块1是正常执行的程序内容&#xff0c;当这个语句块发生异…...

有趣的代码——有故事背景的程序设计3

这篇文章再和大家分享一些有“背景”的程序设计&#xff0c;希望能够让大家学到知识的同时&#xff0c;对编程学习更感兴趣&#xff0c;更能在这条路上坚定地走下去。 目录 1.幻方问题 2.用函数打印九九乘法表 3.鸡兔同笼问题 4.字数统计 5.简单选择排序 1.幻方问题 幻方又…...

聚观早报 |国行PS5轻薄版开售;岚图汽车11月交付7006辆

【聚观365】12月2日消息 国行PS5轻薄版开售 岚图汽车11月交付7006辆 比亚迪推出12月限时优惠 特斯拉正式交付首批Cybertruck 昆仑万维发布「天工 SkyAgents」平台 国行PS5轻薄版开售 索尼最新的PlayStation5主机&#xff08;CFI-2000型号组-轻薄版&#xff09;国行版本正…...

Kafka 保证消息消费全局顺序性

当有消息被生产出来的时候&#xff0c;如果没有指定分区或者指定 key &#xff0c;那么消费会按照【轮询】的方式均匀地分配到所有可用分区中&#xff0c;但不一定按照分区顺序来分配 我们知道&#xff0c;在 Kafka 中消费者可以订阅一个或多个主题&#xff0c;并被分配一个或多…...

3分钟在CentOS 7上离线安装Docker

在CentOS 7上离线安装Docker的详细步骤如下&#xff1a; 环境检查和准备 检查内核版本&#xff1a;Docker要求系统为64位且内核版本至少为3.10。使用命令uname -r查看内核版本。 检查CentOS版本&#xff1a;通过命令cat /etc/redhat-release查看版本信息。 更新yum包&#xff0…...

GaussDB数据库SQL系列-触发器

目录 一、前言 二、触发器概念 三、GaussDB数据库中的触发器 1、语法格式 2、创建步骤 3、注意事项 4、附&#xff1a;表和视图上支持的触发器种类 四、GaussDB数据库中的示例 示例一、在GaussDB数据库中创建一个触发器&#xff0c;以便在插入新记录时自动将记录的创建…...

网工学习10-IP地址

一、IP地址概念 IP地址是一个32位的二进制数&#xff0c;它由网络ID和主机ID两部份组成&#xff0c;用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段&#xff1b;主机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示&#xff0c;中间用…...

FPGA实战避坑:手把手教你用Verilog搞定跨时钟域信号传输(附同步/异步FIFO完整代码)

FPGA实战避坑&#xff1a;手把手教你用Verilog搞定跨时钟域信号传输 第一次在FPGA项目里遇到跨时钟域问题&#xff0c;我盯着屏幕上那些随机跳变的数据波形&#xff0c;整整三天没想明白问题出在哪。当时我正在做一个工业传感器数据采集系统&#xff0c;处理器接口跑在100MHz&a…...

中国科协发布声明:停止受理学者参加NeurIPS 2026会议资助申请

点击下方卡片&#xff0c;关注“CVer”公众号AI/CV重磅干货&#xff0c;第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号&#xff1a;CVer2233&#xff0c;小助手拉你进群&#xff01;扫描下方二维码&#xff0c;加入CVer学术星球&#xff01;可以获得最新顶会/顶…...

Arduino轻量级XXH32哈希库:高吞吐低内存嵌入式校验方案

1. XxHash_arduino 库概述 XxHash_arduino 是一个专为 Arduino 平台优化的轻量级哈希算法库&#xff0c;基于 Yann Collet 开发的 xxHash 算法实现。该库于 2022 年 4 月由嵌入式爱好者 atesin 完成移植&#xff0c;采用 GPLv3 许可协议&#xff0c;同时兼容原始 xxHash 的算法…...

告别DAC!用Arduino的PWM信号和双光耦,轻松驱动LM317实现4-20mA隔离输出

用Arduino PWM与双光耦打造高性价比4-20mA隔离输出方案 在工业自动化与物联网设备开发中&#xff0c;4-20mA电流环传输因其抗干扰能力强、传输距离远等优势&#xff0c;成为模拟信号传输的黄金标准。传统方案通常依赖昂贵的DAC芯片实现数字到模拟的转换&#xff0c;而本文将揭…...

Windows 11三指拖拽功能完全配置指南:从驱动安装到手势优化

Windows 11三指拖拽功能完全配置指南&#xff1a;从驱动安装到手势优化 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersD…...

JAVA集成CAS客户端总结

一、依赖<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-support-springboot</artifactId><version>3.6.4</version></dependency>二、yml配置cas:server-url-prefix: https://xxx.xxx:8443/cas…...

Source Han Serif CN:终极开源中文字体深度技术指南

Source Han Serif CN&#xff1a;终极开源中文字体深度技术指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf Source Han Serif CN&#xff08;思源宋体&#xff09;是Google与Adobe…...

AOP_青春版_VS_Pro版

背景&#xff1a;在javaweb和ssm中学习了面向切面编程的两种方式&#xff08;两种切点表达式不同&#xff09;&#xff0c;在苍穹外卖中&#xff0c;对于设置更新时间&#xff0c;创建时间&#xff0c;更新人&#xff0c;创建者为避免重复编码&#xff0c;将Update&Insert中…...

ANIMATEDIFF PRO新手避坑指南:常见问题与解决方案全解析

ANIMATEDIFF PRO新手避坑指南&#xff1a;常见问题与解决方案全解析 1. 前言&#xff1a;为什么选择ANIMATEDIFF PRO 如果你正在寻找一款能够生成电影级质量AI视频的工具&#xff0c;ANIMATEDIFF PRO可能是目前最强大的选择之一。基于AnimateDiff架构和Realistic Vision V5.1…...

Java开发必备:高德、百度、WGS84坐标互转实战(附完整代码)

Java开发实战&#xff1a;高德、百度与WGS84坐标系互转解决方案 当你需要在不同地图服务之间切换时&#xff0c;坐标系的差异往往会成为开发中的痛点。想象一下这样的场景&#xff1a;你的应用同时接入了高德地图和百度地图&#xff0c;用户上传的GPS数据却无法在两个平台上准确…...