1.hashmap说一下,线程安全吗,树化的临界值为什么是8?

网上主流的答案:
红黑树的平均查找长度是log(n),如果长度为8,平均查找长度为log(8)=3,链表的平均查找长度为n/2,当长度为8时,平均查找长度为8/2=4,红黑树的查找效率更高,这才有转换成树的必要;
链表长度如果是小于等于6,6/2=3,而log(6)=2.6,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短
这个答案是从查找效率的角度解释的,这种解释虽然有一定的合理性,但并不是设计者真正的想法

真正的原因——JDK设计者的解释
摘自HashMap源码的Implementation notes.

 * Because TreeNodes are about twice the size of regular nodes, we* use them only when bins contain enough nodes to warrant use* (see TREEIFY_THRESHOLD). And when they become too small (due to* removal or resizing) they are converted back to plain bins.  In* usages with well-distributed user hashCodes, tree bins are* rarely used.  Ideally, under random hashCodes, the frequency of* nodes in bins follows a Poisson distribution* (http://en.wikipedia.org/wiki/Poisson_distribution) with a* parameter of about 0.5 on average for the default resizing* threshold of 0.75, although with a large variance because of* resizing granularity. Ignoring variance, the expected* occurrences of list size k are (exp(-0.5) * pow(0.5, k) /* factorial(k)). The first values are:** 0:    0.60653066* 1:    0.30326533* 2:    0.07581633* 3:    0.01263606* 4:    0.00157952* 5:    0.00015795* 6:    0.00001316* 7:    0.00000094* 8:    0.00000006* more: less than 1 in ten million

上面的内容:当hashCode离散性很好的时候,树型bin用到的概率非常小,因为数据均匀分布在每个bin中,几乎不会有bin中链表长度会达到阈值(树华门槛)。但是在随机hashCode下,离散性可能会变差,然而JDK又不能阻止用户实现这种不好的hash算法,因此就可能导致不均匀的数据分布。不过理想情况下随机hashCode算法下所有bin中节点的分布频率会遵循泊松分布,我们可以看到,一个bin中链表长度达到8个元素的概率为0.00000006,几乎是不可能事件。所以,之所以选择8,不是拍拍屁股决定的,而是根据概率统计决定的。由此可见,发展30年的Java每一项改动和优化都是非常严谨和科学的。

2.hashtable 并发性能

答案:https://www.cnblogs.com/shunyang/p/4318652.html

3.hashtable 的底层数据结构

答案:https://blog.csdn.net/chen_changying/article/details/80117862

4.jvm垃圾回收算法

CSDN:https://blog.csdn.net/wangxiaotongfan/article/details/82389881
博客园:https://www.cnblogs.com/aspirant/p/8662690.html

5.jvm如何加载一个类到内存

CSDN:https://blog.csdn.net/m0_38075425/article/details/81627349
博客园:https://www.cnblogs.com/shan1393/p/8996954.html

6.Redis 的数据结构?Redis 快的原因?Redis 用于项目中你怎么解决的高并发抢购?Redis 的分布式锁?redis有哪些数据类型,持久化机制

答案:史上以来最详细的Redis高质量面试题

7.RPC框架从启动流程开始到整个调用过程

CSDN答案:https://blog.csdn.net/zjx86320/article/details/51019050
搜狐答案:https://www.sohu.com/a/233125706_505800

8.treeset 的数据结构

博客园:https://www.cnblogs.com/jdemarryme/p/9369060.html
简书: https://www.jianshu.com/p/c99be3b202bf
CSND: https://blog.csdn.net/wufeiova/article/details/92567566

9.分布式下全局唯一编号实现方式有哪些?

简书:https://www.jianshu.com/p/9d7ebe37215e
博客园:https://www.cnblogs.com/Tiancheng-Duan/p/10962704.html
CSDN:https://blog.csdn.net/u010398771/article/details/79765836

10.手撕链表合并,用归并

博客园:https://www.cnblogs.com/whtmomo/p/11515106.html
CSDN: https://blog.csdn.net/qq_42391248/article/details/86370703

11.索引的实现,叶子结点存的是哪些数据

看到MySQL会为主键生成一棵树,叶子节点保存了主键对应的行数据。

叶子节点相当于是存储(关键字)数据的数据层。

次级索引叶子节点保存了主键的值。

12.项目中的图片存在哪里的,用过图床吗

答案:https://blog.csdn.net/czh500/article/details/84033190
GitHub项目:https://github.com/souyunku/Picture-Bed

13.打印出一个二叉树每一层结点的平均值

参考:https://www.cnblogs.com/-Lei/archive/2013/02/25/2928629.html

2019年_BATJ大厂面试题总结-小米篇相关推荐

  1. 2019年_BATJ大厂面试题总结-华为篇

    1.java的反射机制了解吗 答案:https://blog.csdn.net/qq_39209361/article/details/81239189 2.Java的数据类型,线程,内存 答案:ht ...

  2. 2019年_BATJ大厂面试题总结-阿里篇

    1.知道spring AOP是如何实现的么,动态代理和CGlib分别是如何实现的? 答案:https://blog.csdn.net/weixin_38362455/article/details/9 ...

  3. 2023前端大厂面试题之JavaScript篇(4)

    系列文章: 2023前端大厂面试题之JavaScript篇(1) 2023前端大厂面试题之JavaScript篇(2) 2023前端大厂面试题之JavaScript篇(3) 2023前端大厂面试题之J ...

  4. 2022前端大厂面试题之JavaScript篇(1)

    系列文章: 2022前端大厂面试题之JavaScript篇(1) 2022前端大厂面试题之JavaScript篇(2) 2022前端大厂面试题之JavaScript篇(3) 2022前端大厂高频面试题 ...

  5. 大厂面试题含答案(二)

    10家大厂面试题精选 2020 年小米精选 50 面试题及答案 1. 协程了解过么? 2. 变量的声明和定义有什么区别 3. sizeof 和 strlen 的区别 4. 一个指针可以是 volati ...

  6. 大厂面试题含答案(一)

    10家大厂面试题精选 2020 年阿里精选面试题及答案 1. 使用 mysql 索引都有哪些原则?索引什么数据结构? B+tree 和 B tree 什么区别? 2. Mysql 有哪些存储引擎?请详 ...

  7. 2023大厂高频面试题之Vue篇(2)

    系列文章: 2023前端大厂面试题之JavaScript篇(1) 2023前端大厂面试题之JavaScript篇(2) 2023前端大厂面试题之JavaScript篇(3) 2023前端大厂面试题之J ...

  8. 2019年大厂面试题合集:Java架构师技术栈为什么竞争越来越激烈?程序员必看!

    2019年大厂面试题合集:Java架构师技术栈为什么竞争越来越激烈?程序员必看! 就今年大环境来看,跳槽成功的难度比往年高很多,一个明显的感受:今年的Java技术栈面试,无论一面还是二面,都特别考验J ...

  9. 全套BAT大厂面试题整理锦集

    金三银四是面试求职高峰期,最近有很多网友都在求大厂面试题.发出来分享给大家. 这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的题目.熟悉本文中列出的知 ...

最新文章

  1. ## **scrapy+kafka+sparkstream爬取京东Iphone12评论储存数据**
  2. linux磁盘第一个扇区分析,Linux磁盘分区
  3. AVL树的旋转与插入(C语言)
  4. java 高级工程师面试
  5. 吕书健 我考H3CIE的经历
  6. c计算机怎么读音发音英语,英语怎么发音
  7. Softlink Hardlink
  8. C++实践参考——动物这样叫
  9. 广域网宽带接入技术七GPON技术
  10. sql注入 mysql 猜数据库名字_sql注入 - osc_dfi5j6xi的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. 留学Essay挂科后如何进行补救?
  12. Docker Build Cache 缓存清理
  13. pandas 生成笛卡尔集
  14. 阿里云服务器优惠活动中的突发性/共享型/计算型/通用型实例怎么选
  15. ★《唐琅探案》后记【2】
  16. 图像匹配sparse-ncnet复现
  17. 以太坊的交易树和收据树
  18. 多目标进化算法基础知识整理
  19. javaSE相关知识点总结
  20. 深刻:现在计算机专业学生怎么这样

热门文章

  1. Java 校招面经合集
  2. 2022年3月28日记:Linux服务器开发,二叉树与红黑树
  3. STARTING POINT TIER 1 Responder
  4. 导航电子地图的制作过程
  5. 学习笔记(01):8小时Python零基础轻松入门-类
  6. 【暴利项目】一个人就能创业的赚钱项目,踏踏实实年入15-20万
  7. mysql errcode 22 myi_[置頂] MySQL報錯 Errcode:28
  8. Flask部署 —— nginx+gunicorn+supervisor
  9. 深度挖掘 从苹果云计算窥探云端产业发展
  10. java实现敏感词过滤算法DFA并忽略敏感词中的特殊字符