你知道的越多,你不知道的越多

点赞再看,养成习惯

本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。

前言

作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。

于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写互联网技术栈面试相关的文章,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer!

所有文章的名字只是我的噱头,我们应该有一颗谦逊的心,所以希望大家怀着空杯心态好好学,一起进步。

回手掏

上次面试呀,我发现面试官对我的几个回答还是不够满意,觉得还是有点疑问,我就挑几个回答一下。

16是2的幂,8也是,32也是,为啥偏偏选了16?

我觉得就是一个经验值,定义16没有很特别的原因,只要是2次幂,其实用 8 和 32 都差不多。

用16只是因为作者认为16这个初始容量是能符合常用而已。

Hashmap中的链表大小超过八个时会自动转化为红黑树,当删除小于六时重新变为链表,为啥呢?

根据泊松分布,在负载因子默认为0.75的时候,单个hash槽内元素个数为8的概率小于百万分之一,所以将7作为一个分水岭,等于7的时候不转换,大于等于8的时候才进行转换,小于等于6的时候就化为链表。

正文

一个婀娜多姿,穿着衬衣的小姐姐,拿着一个精致的小笔记本,径直走过来坐在我的面前。

就在我口水要都要流出来的时候,小姐姐的话语打断了我的YY。


喂小鬼,你养我啊!

呸呸呸,说错了,上次的HashMap回答得不错,最后因为天色太晚了面试草草收场,这次可得好好安排你。

诶,面试官上次是在抱歉,因为公司双十二要值班,实在是没办法,不过这次不会了,我推掉了所有的事情准备全身心投入到今天的面试中,甚至推掉了隔壁王大爷的约会邀约。

这样最好,上次我们最后聊到HashMap在多线程环境下存在线程安全问题,那你一般都是怎么处理这种情况的?

美丽迷人的面试官您好,一般在多线程的场景,我都会使用好几种不同的方式去代替:

  • 使用Collections.synchronizedMap(Map)创建线程安全的map集合;
  • Hashtable
  • ConcurrentHashMap

不过出于线程并发度的原因,我都会舍弃前两者使用最后的ConcurrentHashMap,他的性能和效率明显高于前两者。

哦,Collections.synchronizedMap是怎么实现线程安全的你有了解过么?


卧*!不按照套路出牌呀,正常不都是问HashMap和ConcurrentHashMap么,这次怎么问了这个鬼东西,还好我饱读诗书,经常看敖丙的《吊打面试官》系列,不然真的完了。

小姐姐您这个问题真好,别的面试官都没问过,说真的您水平肯定是顶级技术专家吧。

别贫嘴,快回答我的问题!抿嘴一笑

ConcurrentHashMap、HashTable学习相关推荐

  1. 《吊打面试官》系列-ConcurrentHashMap HashTable

    你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和 ...

  2. Hashtable学习笔记

    Hashtable常用特点区分:     1.extends Dictionary : 2.线程安全: 3.key和value!=null: 4.默认容量11:负载因子0.75: 5.容量扩展old& ...

  3. java --HashTable学习

    今天在家无事,闲来看看JDK源码,就从HashTable看起了. 键值都不能为空. 为了能从hashtable中存储或者获取值,作为key的对象必须实现hashCode和equals方法. 一个has ...

  4. 聊聊传说中的散列哈希Hash算法,以及Java中的HashTable,HashMap,HashSet,ConcurrentHashMap......

    建议本文结合java源码来阅读,看了之后就什么都懂了,还有参考文献. 散列(Hash) 是一种按关键字编址的存储和检索方法 散列表(HashTable)根据元素的关键字确定元素的位置 散列函数(Has ...

  5. concurrenthashmap是什么锁_多线程为什么要用ConcurrentHashMap

    今天我们要说的是关于集合的问题,实际上跟锁也有一定的关系,让我们来一起看看吧. 一.简介 1.是什么 ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代Ha ...

  6. java学习总结(面试题持续更新)

    1. 面向对象VS面向过程 场景:程序要连接数据库 面向对象:市面上大家都使用的是什么组件,或那个框架完成的,我直接拿来使用.如何使用对象,组织者 面向过程:我该怎么连接数据库,怎么具体实现.如何创建 ...

  7. Java并发编程学习 + 原理分析(建议收藏)

    总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 Doug Lea是一个无私的人,他深知分享知识和分享苹果是不一样的,苹果会越分越少,而自己的知识并不会因为 ...

  8. Map的并发处理(ConcurrentHashMap)

    推荐相关文章: http://blog.csdn.net/waitforcher/archive/2009/05/24/4211896.aspx ConcurrentModificationExcep ...

  9. HashTable 源码解读

    很多人都知道HashTable与HashMap的关系,HashTable是线程安全的,HashMap是非线程安全的.在介绍完HashMap之后,趁热介绍一下HashTable.在HashTable中没 ...

最新文章

  1. centos查看cached内部文件
  2. js 改变change方法_JS 之设计模式
  3. java access dbq_java连接access数据库
  4. publishing failed with multiple errors
  5. SpringMVC整合Shiro
  6. P1993 小K的农场 (差分约束)
  7. openwrt使用linux内核版本,降低OpenWRT的Linux内核版本
  8. c语言程序设计数据存储方案,c语言程序设计“第02章数据的存储及运算.ppt
  9. 关键系统的JVM参数推荐
  10. Python——杂记
  11. C++中的STL和MFC
  12. Jrebel实现tomcat热部署,遇到的问题以及解决办法,详解
  13. python搭建django环境_在BAE上搭建python,django环境小记
  14. 通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面...
  15. 超级搜索术6-问题驱动/系统思维
  16. 前端开发专业实习报告
  17. cyclone小知识(四)——利用cyclone和PS制作点云剖面图(包括画直角坐标系)
  18. kubectl认证 授权 准入控制
  19. MakeSpace:什物云存储版Dropbox 融800万美元
  20. android 画布实现签名,Android实现屏幕手写签名

热门文章

  1. 野火电机+CUBEMX——直流有刷电机的实现
  2. GBN,SR,TCP协议实现可靠数据传输的原理
  3. 图论:并查集求最小环
  4. 8.3 折特惠票仅剩 4 天!「2019 嵌入式智能国际大会」全日程大公开!
  5. 红黑树及其插入、删除操作
  6. [论文笔记]GMNN图马尔可夫网络原理
  7. matlab潮流计算求节点自导纳,大神们,求个电力系统潮流计算的matlab程序。
  8. 关于并发和并行,Go和Erlang之父都弄错了?
  9. Yoga是联想PC+战略的延伸和拓展
  10. 什么是路由器?路由器有什么用?