JAVA相关面试题整理

近期面试记录

单例模式如何防止反射和反序列化

  • 构造方法中增加逻辑判断
  • 使用枚举单例
  • 添加readRsolve()方法返回对象(防止反序列化)

Redis里的List可以用来做什么

  1. LPUSH + LPOP = 栈
  2. LPUSH + RPOP = 队列
  3. LPUSH + LTRIM = 有限集合
  4. LPUSH + BRPOP = 消息队列

Redis缓存满了怎么办

内存淘汰策略

  1. noeviction策略:内存空间达到maxmemory时,不会淘汰数据,有新写入时会返回错误

在设置过期时间的key中淘汰

  1. volatile-ttl策略:越早过期的越先被删除
  2. volatile-random策略:随机删除
  3. volatile-lru策略:使用LRU算法删除
  4. volatile-lfu策略:使用LFU算法删除

在所有的key中淘汰

  1. allkeys-random策略:随机删除
  2. allkeys-lru策略:使用LRU算法删除
  3. allkeys-lfu策略:使用LFU算法删除

LRU:最近最少使用。LFU:统计key被访问的次数,先对比次数,次数一样对比过期时间

Redis事务

1)开启事务,2)命令入队,3)执行事务

multi:开启一个事务块,后续可添加key的操作命令

exec:执行刚刚开启的事务块

discard:取消事务,放弃所有已入队命令

watch:监视key,事务执行之前key被改动,则事务不会执行

redis的命令是原子性,但事务不是原子性,并且中途报错,已执行命令不会回滚

线程池有哪几种

  1. newCachedThreadPool:创建一个可缓存线程池
  2. newFixedThreadPool:创建一个定长线程池
  3. newScheduledThreadPool:创建一个周期性执行任务的线程池
  4. newSingleThreadExecutor:创建一个单线程化的线程池

HTTP/2和HTTP/1.1的区别

  • 请求的多路复用
  • 请求头压缩
  • 二进制协议
  • 服务端推送

TCP/IP协议几层

四层

  1. 应用层(报文):FTP,SMTP,TELNET
  2. 传输层(段):TCP,UDP
  3. 网络层(包):IP,ARP,ICMP
  4. 数据链路层(帧):网络接口和硬件

OSI模型几层

七层

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值