阿里一面.md 1.7 KB

2023/4/4 电话面试 -- 35分钟

  1. kafka消费乱序如何解决
  2. kafka消费乱序的原因
  3. kafka消息丢失问题
  4. 如何保证消息不能丢失
  5. 消息如何保证幂等性,全链路的幂等性
  6. mysql和redis锁的优化,性能的提升
  7. redis分布式锁的问题 -- 故障转移,锁的丢失
  8. hashmap的get和put函数
  9. put函数的细节
  10. hashmap的数组长度为什么是16? --- 扩容方便,只有一半的节点需要移位
  11. 链表什么时候为转换为红黑树
  12. 链表为什么不直接转换为红黑树?为什么选择扩容就可以解决冲突? --- 不会
  13. jvm判断对象是否死亡
  14. 哪些对象可以作为 GC Roots 呢?
  15. 年轻代回收和老年代回收的差异
  16. 为什么年轻代使用标记复制算法 -- 不会
  17. 如何理解微服务 -- 不会
  18. mysql如何提升查询性能
  19. 加入索引的讲究 --- 数据检索的条件字段,聚合函数的聚合字段,排序字段,防止回表,关键字段
  20. 联合索引a,b的顺序

2023/5/5

设置IP黑名单类

如果一个IP,3分钟之内访问超过5次加入黑名单

自动解锁,如果IP在黑名单里面超过5分钟没有再次访问,则移除黑名单

需求:高并发

ConcurrentHashMap ips; 
HashSet blacks;
boolean check(string ipaddr) {
    // 判断是否大于5 和 时间大小
}
void add(string ipaddr) {
    synchronized(ipaddr.intern()) {
        // 加入IPS,这一步骤加锁
    }
    // 判断是否超过5分钟
    if (check(ipaddr)) {
        blacks.insert(i)
    }
    // 另外启动一个线程,执行remove
}
void remove(string ipaddr) {
    // 遍历每个blacks去除
}