面试题-Java集合(新更新版本)
前言
Java集合部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,希望对大家起到一定的帮助。
Java集合
Java集合
说说Arraylist 与 LinkedList 区别?
ArrayList的底层数据结构是数组,LinkedList的底层数据结构是链表。
问题的本质其实是数组和链表的区别:
- 查找方面:按值查找的话,数组和链表的时间复杂度都是O(N);按索引查找的话,数组的时间复杂度是O(1),链表的时间复杂度是O(N)
- 插入和删除方面:数组的插入和删除因为需要移动数据,所以平均时间复杂度为O(N);链表为O(1)
说⼀说 ArrayList 的扩容机制?
按照1.5倍的长度来创建一个新的数组,然后把原始数据拷贝过去。
在实际开发中,如果插入的数据量较大,可以使用ensureCapacity提前扩容到指定大小,来提高性能。
HashSet的底层实现?
HashSet底层用的就是HashMap实现的,key存储实际的对象,value存储一个默认的Object
说一说HashMap的底层数据结构 和 扩容机制
- Jdk1.8以前,是数组+链表;1.8以后,是数组+链表或者红黑树;当链表长度达到8时,会转变为红黑树,目的是为了提高按照值查找时的时间复杂度,从链表的O(N)提高到红黑树的O(logN)
- 默认初始化一个长度为16的数组,当 键值对个数 > 数组长度 * 负载因子时 就会进行扩容,扩容至原始长度的2倍。
HashMap的长度为什么是2的幂次方?
hash值需要根据数组实际长度进行取模运算从而找到索引位置,如果是2的幂次方,可以把取模运算转化为位运算,提高性能。h%length == h&(length-1)
HashMap和Hashtable的区别?
HashMap不是线程安全的,当rehash时可能会形成环形链表;HashTable是线程安全的,实现机制是加sync锁
HashTable不允许存Null的key和value,HashMap则可以。
ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap在1.7之前,使用分段锁来提高并发度;1.8之后,使用sync+CAS来实现线程安全,并且只锁定链表的头部,效率比分段锁又有所提高。
面试题-Java集合(新更新版本)的更多相关文章
- 面试题:Java集合面试题(40道) 背1
Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言 ...
- 剑指offer面试题-Java版-持续更新
最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...
- java面试题-Java集合相关
1. ArrayList 和 Vector 的区别 ArrayList和Vector底层实现原理都是一样得,都是使用数组方式存储数据 Vector是线程安全的,但是性能比ArrayList要低. Ar ...
- VS Code Java 3月更新|代码补全、Maven 以及 Java 插件预览版本新升级!
Nick Zhu Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 Visual Studio Code Java 的 ...
- Java集合框架梳理(含经典面试题)
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. 1. 整体框架 Java容器类库一共有两种主要类型:Collection ...
- java 面试题整理(不定期更新)
一.Java基础 1.Java面向对象的三个特征与含义 三大特征是:封装.继承和多态. 封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公 ...
- Java集合面试题汇总篇
文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 作为一位小菜 "一面面试官",面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会 ...
- Java集合框架面试题
www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...
- Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- 入职大厂,齐姐精选的 9 道 Java 集合面试题
Java 集合框架其实都讲过了,有一篇讲 Collection 的,有一篇讲 HashMap 的,那没有看过的小伙伴快去补下啦,文末也都有链接:看过的小伙伴,那本文就是检测学习成果的时候啦 今天这篇文 ...
随机推荐
- SQL Server 递归+向上统计
前几天有个需求需要基于分类数据向上统计总数,一开始第一个想法是通过程序来计算,后再思考能不能通过SQL脚本直接来计算 基础数据 Id ParentId Category Num 1 0 分类1 0 2 ...
- GIMP 开源、免费,功能强大的图像编辑软件
引言 万事开头难,打造个人网站,图片处理是必不可少的,老王的电脑还是 10 年前配置的,日常使用倒还流畅,但要是使用 Photoshop 就有些吃力,特别是越新的版本.然后,发现 GIMP 这个开源的 ...
- Linux 运维必备 150 个命令汇总
地址:https://www.linuxcool.com 线上查询及帮助命令 man:全拼manual,用来查看系统中自带的各种参考手册. help:用于显示shell内部命令的帮助信息. 文件和目录 ...
- RPC简介及框架选择-copy
简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...
- 搭建基于Grafana+Prometheus+Node_exporter的性能监控与分析平台(Linux版)
搭建基于Grafana+Prometheus+Node_exporter的性能监控与分析平台(Linux版) 在现代IT环境中,系统监控与分析是确保应用稳定性和高效性的关键.Prometheus与Gr ...
- Project Euler 588 题解
这玩意好像甚至有递推式--不太懂 (为什么是图片?cnblogs 第一个公式没渲染成功) 时间复杂度是 \(O(4^{\deg F}\log K)\) 的. #include<bits/stdc ...
- 【整活向】把tidb的文档塞给了基于oceanbase的RAG机器人
最近官方推出了免费试用365天的云数据库,版本也升级到了4.3.支持了向量功能. 官方推出了活动体验AI的动手实战活动, 教程中使用了docker单机版数据库,既然有免费的云数据库,就优先使用云数据库 ...
- [BZOJ3622] 已经没有什么好害怕的了 题解
发现难以维护差值,于是令 \(K=\frac{n+k}2\),这样就把问题转化为了"糖果"比"药片"大的组数为 \(K\) 的情况有多少种. 设 \(dp_{i ...
- 安装mysql报错5.7.13-Table 'mysql.user' doesn't existFor more information
临时写的一个小系统客户要求用mysql,所以下载一个来研究下.解压后开始配置my.ini 配置my.ini [mysql]# 设置mysql客户端默认字符集default-character-set= ...
- 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体的替代品,可本地部署+知识库,注册即可有750w的token使用
最近火山引擎推出了自家联网版的DeepSeekR1,并且加入了联网的功能,不用担心DeepSeek本体的服务器繁忙了,可以说直接是DeepSeek本体的替代品.现在注册即送30块体验价(相当于750w ...