面试经验
文章平均质量分 55
Good.J
活在当下,享受不完美人生
展开
-
使用消息中间件时,如何保证消息不丢失且仅仅被消费一次
1、如何保证消息不丢失一条消息从生产到消费这条链路中,有三个地方可能会造成消息丢失,分别如下:消息从生产者写入到消息队列的过程投递失败。消息在消息队列中,持久化失败消息被消费者消费的过程出现异常1.1 在消息生产过程中投递失败消息生产者和消息系统一般都是独立部署在不同的服务器上,两台服务器之间要通信就要通过网络来完成,网络不稳定可能会发生抖动,那么数据就有可能会丢失,网络发生抖动会有以下两种情况:情形一:消息在传给消息系统的过程中会发生网络抖动,数据直接丢失。情形二:消息已经达到消息原创 2021-01-23 16:33:07 · 581 阅读 · 0 评论 -
多线程常见面试题
1、线程和进程有什么区别线程是进程的子集,一个进程可以有很多线程,每条线程执行不同的任务。不同的进程使用不同的内存空间,所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存来存储本地数据。2、如何在java中实现线程1:实现Runnable接口2:继承Thread类3:实现实现Callable结果,可以有返回值3:线程池3、java关键词volatile与synchronized的作用于区别1、修饰对象不同。volatile用于修饰变量,synchronized用于对语句原创 2021-01-18 14:15:35 · 87 阅读 · 0 评论 -
kafka常见面试题
1、为什么要使用 kafka,为什么要使用消息队列缓冲和削峰 解耦和扩展性 冗余 健壮性 异步通信2、Kafka的acks参数对消息持久化的影响往kafka写数据的时候,就可以来设置这个acks参数。然后这个参数实际上有三种常见的值可以设置,分别是:0、1 和 all(等价于-1)。API对应ProducerConfig.ACKS_CONFIG第一种选择是把acks参数设置为0,意思就是我的KafkaProducer在客户端,只要把消息发送出去,不管那条数据有没有在哪怕Partiti原创 2021-01-13 15:22:31 · 370 阅读 · 4 评论 -
Redis常见面试题
1、Redis支持的数据类型String字符串、Hash、List、Set、2、什么是缓存穿透?如何避免?缓存穿透:一般缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这叫缓存穿透如何避免:1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。2:对一定不存在的key进行过滤。可以把所有的可能存在的key放原创 2021-01-18 11:17:55 · 90 阅读 · 0 评论