20240611 讯飞JAVA工程师(研发经理岗)面试

1.线程安全的集合类
在Java中,一些线程安全的集合类有Stack、Vector、Properties、Hashtable等
2.线程池中execute和submit的区别
1)参数及返回值不同
excute只能提交Runnable,无返回值
submit既可以提交Runnable,返回值为null,也可以提交Callable,返回值Future
2)异常抛出不同
execute执行任务时遇到异常会直接抛出
submit执行任务是遇到异常不会直接抛出,只有在使用Future的get方法获取返回值时才会抛出异常

3.线程池创建的方式

ExecutorService threadPool1 = Executors.newFixedThreadPool(5); //5个窗口

 ExecutorService threadPool2 = Executors.newSingleThreadExecutor(); //一个窗口

 ExecutorService threadPool3 = Executors.newCachedThreadPool();

//表示延迟一秒,后执行3秒
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {
          log.info("delay 1 seconds, and excute every 3 seconds");
 
      }
}, 1, 3, TimeUnit.SECONDS);

4.缓存击穿、缓存穿透和缓存雪崩的区别

(1)缓存击穿:热点数据过期,导致大批量查询数据库

解决办法:

1)对热点数据采用永不过期策略,避免缓存击穿。
2)缓存读库加锁

(2)缓存穿透:指当一个查询请求访问一个不存在于缓存中且也不存在于数据库中的数据时,这个请求会无效地继续访问数据库,而不会被缓存。如果黑客故意发送大量非法请求,则缓存层无法起到过滤作用,可能导致数据库负载过大。

解决办法:

1)业务类型校验,屏蔽不合规的KEY
2)布隆过滤器,无法确定是否存在,但可以确定一定不存在

(3)缓存雪崩:指当缓存集中在某个时间点失效或由于某个原因发生故障,导致大量的请求直接打到后端数据库,造成数据库瞬时压力过大,甚至引起数据库崩溃。在缓存雪崩期间,系统性能急剧下降,无法正常提供服务。

解决办法:

1)过期时间打散
2)缓存不过期
5.常用的设计模式
6.架构方面的工作
7.团队管理的经验
8.虚拟机调优的经验
9.大数据调优的方式

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值