每天一套面试题Day28-八股高频(9)

题目来自牛客 我对每日一题专栏,一起收藏打卡

48.消息队列如何保证不重复消费?

消息队列层面:利用Kafka的生产者幂等或RocketMQ的消息去重,减少源头重复

业务层面(核心):根据场景选择方案。比如对于订单支付,我们使用‘数据库唯一索引+状态机’,先插入一条消费记录,利用唯一约束防止重复

监控层面:记录消费日志,定期对账,发现异常人工干预

49.说说synchronize的用法及原理

说说synchronize的用法及原理

50.什么是 LRU 算法?

LRU(Least Recently Used)算法是一种缓存/页面置换策略:始终优先淘汰“最后一次被访问时间最久远”的那一项,用时间局部性原则来最大化命中率。

51.布隆过滤器的原理

添加元素 将元素依次通过k个哈希函数,生成k个哈希值。 对每个哈希值取模m,得到在位数组中的位置h₁, h₂, ..., hₖ。 将这些位置的值设为1。 查询元素 对查询元素执行相同的k次哈希和取模操作,得到k个位置。 若所有位置的值均为1,则认为元素可能存在(可能误判);否则元素一定不存在(无漏判)

52.redo log / undo log / binlog 各自作用?

alt 博客

53.介绍一下分布式事务和常见解决方案。

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统节点上。当一个业务操作需要跨多个服务、数据库或消息中间件来完成时,为了保证数据的一致性,就需要分布式事务。 强一致性:以2PC为代表,性能低,阻塞大。 最终一致性(主流):以TCC、事务消息、Saga为代表,通过业务设计(补偿、重试、校对)来达到最终一致,高可用。 选型关键:根据业务场景在一致性、性能、复杂度之间做权衡

54.线程间同步方式有哪些?

线程间同步是指协调多个线程的执行顺序,确保它们能够正确地共享资源,避免出现数据竞争和不一致的问题。 线程间同步方式主要有以下几种:

互斥锁(Mutex):用于保护共享资源,确保同一时间只有一个线程可以访问该资源。

条件变量(Condition Variable):用于线程间的条件等待,当某个条件不满足时,线程可以等待在条件变量上,直到其他线程改变条件并通知它。

信号量(Semaphore):用于控制同时访问共享资源的线程数量,可以是二进制信号量(类似互斥锁)或计数信号量。

读写锁(Read-Write Lock):允许多个线程同时读共享资源,但写操作是互斥的。

自旋锁(Spinlock):与互斥锁类似,但不会让线程进入睡眠状态,而是循环检查锁是否可用,适用于短时间的等待。

55.聚簇索引与非聚簇索引的区别?

聚簇索引(Clustered Index) 并不是一种单独的索引类型,而是一种数据存储方式。InnoDB引擎中,表数据文件本身就是按B+树结构组织的一个索引,叶节点包含了完整的行数据。一个表只能有一个聚簇索引。

非聚簇索引(Non-Clustered Index / Secondary Index) 是独立于数据存储结构的索引。其叶子节点不包含行数据,而是包含指向行数据的指针(在InnoDB中,这个指针是主键值)。一个表可以有多个非聚簇索引。

alt

#面试真题#
每日一套面试真题 文章被收录于专栏

记录刷过的面试真题

全部评论

相关推荐

重生之我在潮汐监狱当...:两个工作一天回家后,都只想躺着,什么都不想干
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-25 09:53
点赞 评论 收藏
分享
抓蛙得要春天:别想那么多,找得到再说,有面试再说
点赞 评论 收藏
分享
头像 会员标识
11-27 10:04
门头沟学院 Java
面了100年面试不知...:不可能,ai作弊的问答绝对很明显
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务