
八股文
文章平均质量分 60
RobertLikeDurian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
08经典问题答案记录-锁
08经典问题答案记录-锁 锁的分类转载 2021-12-21 16:56:41 · 144 阅读 · 0 评论 -
07经典问题答案记录-HashMap与ConcurrentHashMap
HashMap与ConcurrentHashMap HashMap本质是数组加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。 ConcurrentHashMap: 在hashMap的基础上,ConcurrentHashMap将数据分为多个segment(段),默认16个(concurrency level),然后每次操作对一个segment(段)加锁,避免多线程锁的几率,提高并发效率 HashMap不是线程安全的,ConcurrentHa转载 2021-12-16 16:51:38 · 155 阅读 · 0 评论 -
06经典问题答案记录-HashMap与Hashtable
HashMap 与HashTable的区别 转载于 https://blog.youkuaiyun.com/wangxing233/article/details/79452946 HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源,特性,算法等多个方面进行对比总结。力争多角度,全方位的展示二者的不同,做到此问题的终结版。 1 作者 Hashtable的作者: HashMap的作者: Hash Map的作者比Hashtable的作者转载 2021-12-15 16:52:02 · 114 阅读 · 0 评论 -
05经典问题答案记录-红黑树
红黑树是每个节点都带有颜色属性的BST(Binary Search Tree)二叉查找树,颜色或红色或黑色 【1】性质1. 节点是红色或黑色。 【2】性质2. 根节点是黑色。 【3】性质3 每个叶节点是黑色的。 【4】性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 【5】性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 AVL树是Adelson-Velsky-Landis最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大原创 2021-12-15 14:56:06 · 561 阅读 · 0 评论 -
04经典问题答案记录-Hash碰撞
什么是Hash碰撞? 提及Hash碰撞,就要提到HashMap的存储实现 如下图 即图中重复颜色的元素冲突了,就是Hash碰撞 解决Hash碰撞(冲突)? 在java中使用的链接法、拉链法 jdk1.7中 在调用HashMap的put方法或get方法时,都会首先调用hashcode方法,去查找相关的key,当有冲突时,再调用equals方法。hashMap基于hasing原理,我们通过put和get方法存取对象。当我们将键值对传递给put方法时,他调用键对象的hashCode()方法来计算hashCode原创 2021-12-15 14:31:09 · 1071 阅读 · 0 评论 -
3经典问题答案记录-HashMap的扩容机制
基本概念 capacity 即容量,默认16。 loadFactor 负载因子,默认是0.75 threshold 阈值。阈值=容量*负载因子。默认12。当元素数量超过阈值时便会触发扩容。 一般情况下,当元素数量超过阈值时便会触发扩容。每次扩容的容量都是之前容量的2倍。 HashMap的容量是有上限的,必须小于1<<30,即1073741824。 如果容量超出了这个数,则不再增长,且阈值会被设置为Integer.MAX_VALUE( 2^31-1,即永远不会超出阈值了)。 为什么负载因子是0.7原创 2021-12-14 13:29:08 · 455 阅读 · 0 评论 -
2经典问题答案记录-ArrayList的扩容机制
每个ArrayList实例都有一个容量,该容量是指来存储列表元素的数组的大小,该容量至少等于列表数组的大小,随着ArrayList的不断添加元素,其容量也在自动增长,自动增长会将原来数组的元素向新的数组进行copy。如果提前预判数据量的大小,可在构造ArrayList时指定其容量。 1.ArrayList每次扩容是原来得1.5倍。 2.数组进行扩容时,会将老数据中得元素重新拷贝一份道新的数组中。 4.创建方式不同,容量不同。 为什么是1.5倍 在grow()方法中调用了newCapacity(最小容量)方法原创 2021-12-13 17:11:59 · 411 阅读 · 0 评论 -
1经典问题答案记录-ArrayList和LinkedList的区别
经典问题答案记录-ArrayList和LinkedList的区别 ArrayList的实现是基于数组来实现的,LinkedList的基于双向链表来实现。这两个数据结构的逻辑关系是不一样,当然物理存储的方式也会是不一样。 LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。 对于随机访问(获取某一某些元素),ArrayList要优于LinkedList。 对于插入和删除操作,LinkedList原创 2021-12-13 15:08:07 · 561 阅读 · 0 评论