首页 > 其他分享 >面试题专辑

面试题专辑

时间:2024-01-15 19:13:14浏览次数:26  
标签:黑树 面试题 hash 哈希 专辑 链表 数组

hashmap:

底层数据结构不同:

1.7是数组加链表,1.8是红黑树加数组。

为何用红黑树:,为何不上来直接树化,树化值为为啥是8,合适会树化,何时会退化为链表?

1.红黑树为了避免dos攻击,防止性能下降,树化树偶然那个情况

1.1哈希表查找时候,更新时间复杂度为o1,红黑树的查找时间复杂度为olog2n,TreeNode占用空间也比普通的大,如非不要,盖是用红黑树

1.2hash值如果足够随机,hash按照posong分布,负载因子为0.75情况下,长度超过8为0.000006,选择8最小树化

树化2条件:数组超过64或链表长度超过取值

退化情况一:在扩容时如果拆分数,<5退化为链表

退化情况二:根节点,左右孩子有一个为空

索引如何计算:

计算对象的hashCoe(),在进行HashMap的hash()方法进行二次哈希,最后得到索引值

二次哈希是为了分不均匀

2的n次mi效率更高 hash &odlCap==0 留在原位置,,否则计算新位置=旧位置

+oldCap

 

标签:黑树,面试题,hash,哈希,专辑,链表,数组
From: https://www.cnblogs.com/zyb-luckey/p/17966086

相关文章

  • MySQL面试题(1):count
    InnoDB和MyISAM的count(*)有何不同MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数(无where条件)InnoDB执行count(*)的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数为什么InnoDB不跟MyISAM一样,也把数字存起来呢?因为......
  • 【前端面试】2024年前端面试题之JS篇
    请简述JavaScript中的thisJS中的this是一个相对复杂的概念,不是简单几句能解释清楚的。粗略地讲,函数的调用方式决定了this的值。我阅读了网上很多关于this的文章,ArnavAggrawal写的比较清楚。this取值符合以下规则:在调用函数时使用new关键字,函数内的this是一个全新的对......
  • 软件测试笔试面试题目完全汇总
    软件缺陷:1)软件未实现产品说明书要求的功能2)软件出现了产品说明书指明不应该出现的错误3)软件实现了产品说明书未提到的功能4)软件未实现产品说明书虽未明确提及但应该实现的目标5)软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好。软件测试:为了发现......
  • 软件测试常考面试题-软件测试面试宝典(一篇足矣)
    软件测试常考面试题-软件测试面试宝典(一篇足矣) 介绍解决锻炼思维问题的思路和方法,从不同角度分析问题,让思维变强大,变宽广的同时在测试方面进行学习和方法的拓展,也会分享读书心得和问题思考。 问:软件测试的原则?答:软件测试的八个原则_山鬼谣弋痕夕的博客-CSDN博客_软件测试......
  • c#面试题及答案(二)
    c#面试题及答案(二)  注意:红色字体部分是本人更正了网络上的一些错误答案。 2.列举ASP.NET页面之间传递值的几种方式。答.1).使用QueryString,如....?id=1;response.Redirect()....                 2).使用Session变量         ......
  • C# 面试题 (持续更新中)
    1.抽象方法和虚方法在编程中都是处理继承和多态的重要概念,它们之间的关键差异是什么?①定义和实现:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法。虚方法有方法体,子类可以覆盖,也可不覆盖。②声明位置:抽象方法只能声明在抽象类中,使用关键字......
  • MyBatis面试题
    MyBatis执行流程读取mybatis-config.xml文件构建会话工厂sqlSessionFactory创建会话SqlSessionExecutor执行器MappedStatement对象访问数据库完整回答:1、读取MyBatis配置文件:mybatis-config.xml加载运行环境和映射文件2、构造会话工厂SqlSessionFactory3、会话工厂......
  • spring框架基础面试题
                 ......
  • 数据库mysql面试题
                          ......
  • 35道必懂的 Linux 运维面试题
    Linux运维面试题,给大家参考下~1、现在给你三百台服务器,你怎么对他们进行管理?管理3百台服务器的方式:1)设定跳板机,使用统一账号登录,便于安全与登录的考量。2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。3)建立简单的服务器的系统、配置、应用的cmdb信息管理。......