一、高并发与秒杀系统

  1. 设计一个百万QPS的秒杀系统

    • 分层削峰:Nginx限流 → Redis预减库存(Lua脚本保证原子性)→ 消息队列(Kafka/RocketMQ)异步下单

    • 热点隔离:独立Redis集群处理秒杀商品,本地缓存(Caffeine)兜底

    • 防刷:IP限流+用户行为分析+验证码

  2. 如何解决Redis库存超卖问题?

    • Lua脚本示例: 

 

 

    • 兜底方案:数据库乐观锁(version字段)+ 定时任务对账

  1. 订单30分钟未支付自动取消的实现方案

    • RocketMQ延迟消息(支持精准时间粒度)

    • Redis过期监听keyspace notifications)+ 补偿任务

  2. 如何设计一个高可用的优惠券系统?

    • 防重领:Redis原子计数器(INCR)+ 数据库唯一索引

    • 过期处理:定时任务+状态机(避免大量无效数据)

  3. 热点Key导致Redis集群负载不均如何解决?

    • 本地缓存:Guava Cache缓存热点数据

    • Key分片:对热点Key增加随机后缀(如item_1001_{0..9}

  4. 如何设计实时库存预警系统?

    • 技术栈:Flink消费库存变更Binlog → 计算阈值 → 触发企业微信/短信报警


二、分布式与事务

  1. 跨境支付如何保证数据一致性?

    • TCC事务:Try阶段冻结资金,Confirm阶段实际扣款,Cancel阶段解冻

    • 对账机制:每日核对交易流水与账户余额

  2. 分库分表后如何实现跨库查询?

    • 基因法分片:将关联ID(如用户ID)嵌入分片键

    • ES异构索引:将多表数据聚合到Elasticsearch

  3. 如何设计一个可靠的分布式ID生成器?

    • Snowflake优化:解决时钟回拨(本地时钟+ZK协调)

    • Leaf-Segment:DB号段缓冲(适合金融场景)

  4. RPC调用超时可能的原因及排查方法

    • 原因:网络抖动、线程池堵塞、下游服务GC

    • 工具:SkyWalking全链路追踪 + Arthas线程分析

  5. 如何实现跨机房数据同步?

    • 方案:MySQL Binlog + Kafka(跨机房专线)

    • 冲突解决:时间戳优先/人工干预通道


三、数据库与缓存

  1. 十亿级订单表如何优化分页查询?

    • ES方案search_after深度分页

    • MySQL方案:覆盖索引+游标(WHERE id > ? LIMIT 100

  2. MySQL主从延迟导致脏读如何解决?

    • 读写分离:强制关键查询走主库(/*FORCE_MASTER*/

    • 半同步复制:至少一个从库ACK才返回

  3. Redis持久化策略如何选择?

    • 高可用:RDB(定时快照)+ AOF(每秒同步)

    • 恢复速度:RDB > AOF

  4. 如何解决缓存与数据库不一致?

    • 延迟双删:先删缓存 → 更新DB → 延迟500ms再删缓存

    • Canal监听:订阅Binlog自动更新缓存

  5. 大促期间MySQL CPU 100%如何紧急处理?

    • 止血:Kill慢查询(SHOW PROCESSLIST

    • 降级:非核心业务切到只读从库

  6. Elasticsearch集群写入变慢如何优化?

    • 调整参数refresh_interval=30s

    • 分片策略:按时间范围分片(如每月一个索引)


四、微服务与架构

  1. 如何实现全链路灰度发布?

    • 流量标记:通过Header传递(如x-env: gray

    • 路由策略:Istio动态路由到灰度Pod

  2. 服务熔断与降级策略如何配置?

    • Sentinel规则:慢调用比例 >50%时触发熔断

    • 降级预案:返回缓存数据或默认值

  3. 如何设计一个高可用API网关?

    • 限流:令牌桶算法(Redis+Lua)

    • 容灾:多机房部署+DNS故障切换

  4. Spring Cloud微服务如何划分边界?

    • 原则:按业务能力划分(如订单服务独立于支付服务)

    • 陷阱:避免分布式事务(尽量最终一致性)

  5. Service Mesh落地有哪些性能损耗?

    • Sidecar:增加约10%延迟(需压测调整线程池)


五、故障排查与优化

  1. JVM FullGC频繁如何定位?

    • 步骤jmap -histo查大对象 → MAT分析内存泄漏 → 调整G1 Region大小

  2. Kafka消息堆积如何解决?

    • 扩容:增加Consumer实例

    • 跳过:重置Offset到最新(非关键业务)

  3. 线程池任务拒绝如何处理?

    • 策略:记录日志+异步重试(MQ)

    • 监控:Prometheus报警线程池活跃度

  4. 如何优化Java应用启动速度?

    • Spring Boot:AOT编译(GraalVM)

    • 懒加载:非核心Bean延迟初始化


六、前沿技术

  1. 如何将大模型(如GPT)集成到客服系统?

    • 架构:LangChain4J封装API + 本地知识库向量检索

  2. Serverless在电商中的应用场景?

    • 案例:定时秒杀预热任务(事件驱动)

  3. K8s中如何实现自动扩缩容?

    • HPA配置:基于CPU/内存阈值或自定义指标(如QPS)

  4. 如何用AI辅助生成CRUD代码?

    • 工具:GitHub Copilot + 代码安全扫描(如SonarQube)


 

 

 

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐