Java面经

说说Redis怎么在项目中用的?

   1.缓存热点数据
  • 在Java服务中,根据业务逻辑决定何时从Redis中获取数据,何时从数据库获取并更新到Redis。
  • 可以通过设置Redis的过期时间自动淘汰旧数据,或者通过LRU(最近最少使用)等策略管理缓存空间。
   2. 分布式锁
  • 使用Redis的SETNX(Set if Not eXists)命令或Redisson等库提供的分布式锁实现。
  • 通过设置锁的过期时间避免死锁,解锁时需要确保操作的原子性,通常使用Lua脚本来完成。
   3. 消息队列
  • 使用Redis的List或Stream数据结构作为消息队列。
  • 生产者将消息推送到队列中,消费者从队列中拉取消息并处理,可以结合发布/订阅模式(Pub/Sub)实现更复杂的消息传递机制。
   4. 排行榜(积分,商品)
  • 使用Redis的Sorted Set数据结构,它可以存储一个不重复的元素集合,且每个元素都会关联一个double类型的分数。
  • 通过ZADD命令添加元素,ZRANGE命令获取排行榜。
   5. 计数器
  • 统计页面访问量、用户点赞数等。
  • 使用Redis的INCR、DECR命令实现原子性的自增或自减操作。
  • 可以通过INCRBY、DECRBY命令实现指定步长的增减。

object有哪些方法?

equals,hashCode,toString,getClass,clone,finalize,wait,notify

sql索引失效情况举例5种?

   1. 查询条件中使用了函数或表达式
   2. 索引列的数据类型不匹配
   3.使用了LIKE进行模糊匹配,且匹配字符串以%开头
   4. OR连接的条件列未被全部索引
   5. 复合索引未使用最左前缀列

springCloud的作用

服务治理,配置管理,路由(网关),监控和追踪

线程和线程池实现方式

线程:继承Thread类,实现Runnable接口,使用线程池,@Async注解和配置类
线程池:Executors工厂方法,ThreadPoolExecutor构造函数,@Async注解和配置类

rabbitMQ是用来做什么的?

消息中间件,消息传递与异步通信,生产者,路由器,routingKey,消息队列,消费者


list的add方法有哪些性能问题(ArrayList和LinkedList)

ArrayList扩容为1.5倍,将旧数组复制到新数组,查询快,插入慢

LinkedList插入快,根据头结点查询

hashmap的put方法底层

1.计算索引

2.检查桶是否为空

3.扩容操作

mysql索引的注意事项

1.避免在列上使用函数和进行运算
2.尽量避免使用OR来连接条件
3.优先考虑覆盖索引
4.遵守最左前缀法则
5.注意NULL值的索引
6.合理使用LIKE模糊查询    

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值