每天一套面试题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-23 16:15
门头沟学院 Java
1.项目介绍2.说一下你那个xx系统,你们之前那个xx系统你说一下整一个信息流是怎么样的?系统的整个就是每个系统之间,它路就是整个做完这一笔业务,然后就是需要经过哪几个系统,然后每个系统做的什么事情3.资金流是怎么样的4.你们系统的订单支付系统幂等是怎么做的?5.锁是怎么做的,一分布式锁是怎么做的?6.说一说就是用redis的情况下,就譬如它锁是锁什么内容,然后他的单子又是怎么来的?7.你怎么判断它那个单子是不是存在?8.那怎么防止你那加了一个过期时间的话,怎么防止那个业务还没做完,但是那个锁已经被释放了。9.你们订单系统和支付系统,它之间的一致性问题是怎么解决的?10.刚才那个分布式事务,你说一下 TCC 第一个阶段具体是怎么做的?11.那怎么保证你,你第一个阶段,怎么保证在第二个 commit 的时候,能把第一个阶段的你所做的那个事情是可以 commit 掉?12.有这样一个场景,就是在某某商城上,如果是购买一个商品,你用户在支付的时候就不是正常要渲染一个收银台,这样收银台用户如果是用选择某一张银行卡支付需要收取它的一个手续费,然后你看下怎么设计13.怎么防止手续费算错而或者是防止手续费多收或者是少收?14.那他系统这样你去设计一套它的整一个系统的数据模型,你是怎么设计15.这个系统你会考虑用缓存吗?什么地方用缓存你觉得16.系统的扩展性和鲁棒性你是怎么考虑?17.你们系统,你们现在团队的系统稳定性是怎么做的18.你们资金安全是怎么保障的?19.手撕:有一条直线,总长度为N公里(比如 11 公里),我们把它当作边界线。每隔一公里安装一个摄像头,所以总共 N+1个摄像头,分别在 0km、1km、2km ... Nkm 的位置。这些摄像头是从不同厂家采购的,所以每个摄像头的拍摄半径不一样。每个摄像头可以拍它所在点的前后若干公里,比如摄像头 i 可以拍摄从 i - r 到 i + r 之间的整段。r 是一个非负整数(可能为 0,表示只能拍当前点)。问题是:我们希望启用最少数量的摄像头,就能把整个区间 [0, N] 都拍到(覆盖),不遗漏任何一段。摄像头不能坏,不考虑维修
查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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