高德面经 "大概"这种程度当晚挂还是需要很清楚的

无手撕  面试官迟到三分钟(这应该不算迟到)

以为会问八股,结果全是项目引申的,麻了 有的面试官不问我这玩具项目呜呜+在日常实习就没看,自己介绍都没讲清楚
1. 线程通信方式  oom  线程安全 死锁
2. 分布式事务 如果c超时没反应, 咋处理。直接通知回滚的话,可能有c先处理回滚的命令,后面又执行了本地事务(c查看本地事务的状态 执行中就不回滚 还是咋处理)
3. 协调者挂了 咋办  
项目: 库存变化流程 redis回滚库存为啥会超卖 mq重投db会不会超卖 (幂等判断和回滚在一个事务中)
4. 分库和分表的区别(分库一般是多个实例解决高并发,分表是单表数据量比较大  分库和分表很像,都是按分片键路由)
基于买家id分表分库的话,卖家想查询怎么办(binlog 卖家id分片)
自己说话要坚定,不能弱弱怂怂的
 晚上一看,挂了
感觉是除了分布式事务那两问题基本都能回答个大概,可能"大概"这种程度不行吧,太久没看了,自己的项目都不熟了,分布式事务确实就学了一点   

看见我的项目都想吐,重复看的东西。。#毕业后不工作的日子里我在做什么#
呜呜呜呜,好菜,本科学历不太行感觉银行国企也不太稳麻了

3. 我搜的是1.TCC  2.本地消息表  3.多节点选举机制(如Raft协议)实现高可用,避免单点故障     三阶段提交只是缓解了单点故障问题      (TCC和本地消息表根本就没有协调者所以没有单点故障   没有往这上面想 一直在绕三阶段提交)
2. #### 1. 参与者C超时无响应
**解决方案:**
- **事务状态查询机制**:协调者先发起事务状态查询(3PC中的CanCommit阶段)
- **异步补偿机制**:记录操作日志,超时后通过定时任务重试事务查询
- **最终一致性兜底**:若长时间无响应,记录异常事务日志人工介入
- **示例流程**:
  1. 协调者发送prepare请求
  2. 参与者C超时未响应
  3. 协调者发起事务状态查询请求
  4. 若C本地事务已提交 -> 继续提交其他参与者
  5. 若C未提交/回滚 -> 发起全局回滚
(我前面讲的RMQ的事务消息 也是反查本地事务状态 这没回答出来)
4. ### 二、分库分表核心区别
|          | 分库                          | 分表                  |
|----------|-----------------------------|---------------------|
| 拆分维度  | 数据库实例级别                   | 单表结构级别           |
| 核心目标  | 降低单点压力,提升并发处理能力        | 解决单表数据量过大问题   |
| 典型场景  | 电商系统买家库、订单库分离           | 用户表按月分表          |
| 实施难度  | 需要处理分布式事务、跨库join        | 主要处理SQL路由        |
全部评论

相关推荐

评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务