哈希和散列表
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--){...} |