跳到主要内容

哈希和散列表

LRU 缓存机制

treemap和hashmap的实现以及区别?

一致性哈希

  • 解决分布式缓存的扩展性问题
  • 环形哈希空间
  • 虚拟节点
  • 应用:分布式缓存、负载均衡

HashMap的并发问题

  • 并发问题:
    • 死循环(JDK1.7中的并发扩容问题)
    • 数据丢失
    • 数据覆盖
  • 解决方案:
    • 使用Collections.synchronizedMap()
    • 使用ConcurrentHashMap
    • 使用HashTable(不推荐,性能差)

洗牌算法

答案
方法基本原理示例代码片段
sort+随机函数利用sort的比较函数返回随机值,实现数组元素的随机排序array.sort(() => Math.random() - 0.5)
Fisher-Yates洗牌从后向前遍历,随机选取位置交换,保证每个元素等概率出现在任意位置for(let i=array.length-1;i>0;i--){...}
55%