当前位置: 首页 > news >正文

面试历程(3)

1、HashMap为什么要使用红黑树,不能使用平衡二叉树(AVL树)

二叉查找树具有的特性:

  • 左子树上所有结点的值均小于或等于它的根结点的值。
  • 右子树上所有结点的值均大于或等于它的根结点的值。
  • 左、右子树也分别为二叉排序树。

AVL树是严格平衡二叉树(左右两个子树的高度差的绝对值不超过1),在进行大量插入和删除操作时,会频繁地进行平衡调整,严重降低效率;

红黑树虽然不是严格的平衡树,但是其依旧是平衡树;查找效率是 O(logn);在大量插入和删除时,对树改动较小

2、AQS如何实现公平和非公平的?

公平锁是将所有线程依次放入CLH同步队列,然后再从队列中依次取出来执行;

而非公平锁是已经进入同步队列的线程会像公平锁一样获取锁,但是其他尚且没有进入同步队列的线程可以与CLH同步队列中的首节点线程竞争锁;

这也是为什么非公平锁性能比公平锁性能更佳的原因

3、JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计JVM的堆的线程安全的?

new对象实际上需要指针移动分配空间,将入多个线程一起new会出现指针碰撞问题

解决方案:
给每个线程分配私有的指针,存对象的内存空间还是给所有线程访问,其它线程无法在这个区域分配,保证堆的线程安全
Thread Local Al

http://www.lryc.cn/news/18375.html

相关文章:

  • 【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(二)
  • (免费分享)基于ssm的BBS社区论坛系统带论文
  • RebbitMQ 消息队列(简单使用)
  • OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)
  • CRM系统能帮外贸行业解决哪些问题
  • 掌握lombok简化Java编码完成后端提效
  • 【蓝桥集训】第七天——并查集
  • 该来的总会来,继岳云鹏走红之后,孔云龙也和主流相声界打成一片
  • 索引的创建与设计原则
  • day51【代码随想录】动态规划之回文子串、最长回文子序列
  • 拟凸函数,拟凹函数,单峰函数
  • 数据处理(伪)代码:卡尔曼滤波 vs. 卡尔曼平滑
  • 华为OD机试题,用 Java 解【比赛评分】问题
  • 【基础算法】哈希表(开放寻址法)
  • 优化算法(寻优问题)
  • 基于视频流⽔线的Opencv缺陷检测项⽬
  • 百万数据excel导出功能如何实现?
  • 华为OD机试题,用 Java 解【合规数组】问题
  • SAP ABAP中的数据类型 Data Types
  • HashMap~
  • EasyNLP集成K-Global Pointer算法,支持中文信息抽取
  • mysql lesson3
  • python源码保护
  • 第51讲:SQL优化之COUNT查询的优化
  • ArrayBlockingQueue
  • DeepLabV3+:对预测处理的详解
  • 【Git】与“三年经验”就差个分支操作的距离
  • 【经验】win10设置自启动
  • Linux SPI-NAND 驱动开发指南
  • 【THREE.JS学习(3)】使用THREEJS加载GeoJSON地图数据