我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 这是上篇文章 有趣的条漫版 HashMap,25岁大爷都能看懂 的文字版.有不少同学说条漫版的比较有意思,简单易懂,但是毕竟图片画不了那么详细,只能从大面而上理解. 真正的了解细节,还得看这一篇.其实是这篇先写完,然后画了不少图片,所以就写了一篇图片版的.本篇 7000 多字,建议三连呦.…
微信公众号:大黄奔跑 关注我,可了解更多有趣的面试相关问题. 写在之前 毫无疑问,回想2020年有什么词出现在眼前最多的,无疑是"996"和"内卷",从马老师的福报论.到年底pdd刚毕业员工猝死,内卷从此从最初谈论于学者文章中出圈了,之后一发不可收拾,几乎能贯穿整个2020年所有的热点时间,大部分事情都可以套用一句:"卷就完事儿了"! 互联网是目前绝大部分舆论社交爆发点的火山口,近几年蓬勃发展的互联网,带来的丰富的社交方式,无论是文字交流形式的微…
记一次HashMap面试 从网上已经身边同事朋友的面试情况来看,面试HashMap几乎是必问的,网上也很多类似的文章,但是真面起来,发现还是有很多点可以深抠的.本篇就结合一次面试经历说一下之前没有注意的点吧. HashMap的底层结构 这个相信不用我多说,大家都知道HashMap的底层是Node数组结构Node<K,V>[] table. 扩容也不用我多说了,在size达到阈值(默认0.75的负载因子*容量)时触发扩容. 数组的capacity大小是2的x幂也无需多言,但这里多问一句为什么是2…
摘要: 原创出处 https://studyidea.cn 「公众号:程序通事 」欢迎关注和转载,保留摘要,谢谢! 使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而让出 CPU 的执行权,直到数据读取完成.这个期间如果使用 jstack 查看线程状态,却可以发现Java 线程状态是处于 RUNNABLE,这就和上面说的存在矛盾,为什么会这样? 上面的矛盾其实是混淆了操作系统线程状态与 Java 线程状态.这里说的线程阻塞进入休眠状态,其实是操作系统层面线程实际…
目录 概论 Hasmap 的继承关系 hashmap 的原理 解决Hash冲突的方法 开放定址法 再哈希法 链地址法 建立公共溢出区 hashmap 最终的形态 Hashmap 的返回值 HashMap 的关键内部元素 存储容器 table; size 元素个数 Node TreeNode modCount 阈值 threshold 实际存储元素个数 size debug 源码 插入元素的过程 调用put()方法 调用 putval() 调用hash() 方法 进入 putval() 判断数组是…
HashMap的工作原理是近年来常见的Java面试题. 几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深. 这题经常出现在高级或中高级面试中.ConcurrentHashMap和其它同步集合的引入让这道题变得更加复杂.让我们开始探索的旅程吧! 先来些简单的问题 “你用过HashMap吗?” “什么是HashMap?你为什么用到它?” 几乎每个人都会回答“是的”,然后…
为什么用HashMap? 简述一下Map类继承关系? 解决哈希冲突的方法? 为什么HashMap线程不安全? resize机制? HashMap的工作原理是什么? 有什么方法可以减少碰撞? HashMap中hash函数怎么是是实现的? 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树? 说说你对红黑树的见解? 解决hash 碰撞还有那些办法? 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办? 重新调整HashMap大小存在…
主要参考 JavaGuide 和 敖丙 的文章, 其中也有参考其他的文章, 但忘记保存链接了, 文中图片也是引用别的大佬的, 请见谅. 新手上路, 若有问题, 欢迎指正. 背景 HashMap 的相关问题在校招面试中十分常见, 作为新人, HashMap 的各个问题应该要理解的十分透彻才行. 此外, ConcurrentHashMap, Hashtable 也是经常与 HashMap 一同被问, 下文中都有介绍. HashMap 原理 1. 底层数据结构 HashMap 在 JDK1.8 之前底…
前言 HashMap 是无论在工作还是面试中都非常常见常考的数据结构. 比如 Leetcode 第一题 Two Sum 的某种变种的最优解就是需要用到 HashMap 的,高频考题 LRU Cache 是需要用到 LinkedHashMap 的. HashMap 用起来很简单,底层实现也不复杂,先来看几道常见的面试题吧.相信大家多多少少都能回答上来一点,不清楚的地方就仔细阅读本文啦-这篇文章带你深挖到 HashMap 的老祖宗,保证吊打面试官 == 和 equals() 的区别? 为什么重写 e…
内容较多,可先收藏,目录如下: 一.什么是主从复制 二.主从复制的作用(重点) 三.主从复制的原理(重中之重) 四.三步轻松构建主从 五.必问面试题干货分析(最最重要的点) 一.什么是主从复制(技术文): 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 二.主从复制的作用(好处,或者说为什么要做主从)重点!: 1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失. 2.架构的扩展.业务量越来越大,…