所有题目与解答均围绕后端开发实时性、稳定性、降级恢复、数据一致性的考察要求,按Java后端核心知识点分类整理,便于针对性备考。
一、分布式事务与数据一致性
核心考察:结合机器人业务场景设计分布式事务方案,区分强一致性 与最终一致性的适用场景,处理网络异常、服务宕机后的补偿机制。
- 问题 :机器人调度系统跨服务资源扣减,如何设计分布式事务确保零差错,处理网络分区的部分提交问题?
核心解答 :采用TCC+全局事务状态表+定时补偿,Try预占机器人物理/计费资源,Confirm完成扣减、Cancel释放资源;网络分区时扫描异常事务强制回滚,核心资源增加过期时间兜底。 - 问题 :机器人任务完成后异步更新状态、发送通知,如何基于事件总线保证最终一致性,处理消息积压?
核心解答 :事件总线+本地消息表+指数退避重试,任务完成发布事件,消费者异步消费;本地消息表保证消息不丢,积压时做分区消费+流量削峰,失败消息进入死信队列后人工+自动补偿。
二、高并发治理与限流熔断
核心考察:机器人集群高并发指令请求的流量管控,多级限流/熔断/降级的设计,API网关的流量治理,保障核心业务(编队、移动)的可用性。
- 问题 :机器人集群高峰请求激增50倍,如何设计多级限流,过载时自动降级为延迟执行模式?
核心解答 :网关层分级令牌桶+应用层Sentinel集群限流,核心编队指令分配高优先级令牌,非核心指令过载后存入Redis有序队列,负载恢复后按序执行。 - 问题 :多设备管理微服务,如何设计API网关实现动态路径、鉴权熔断,且在网关层缓存设备状态?
核心解答 :基于Spring Cloud Gateway+自定义过滤器,配置中心管理动态路由;JWT+设备证书双重鉴权,Sentinel实现熔断;Caffeine本地缓存+Redis分布式缓存缓存高频设备状态,设备变更时主动刷新缓存。 - 问题 :依赖第三方地图API超时,如何设计降级策略切换离线路径规划,保证机器人移动连续?
核心解答 :Sentinel多级熔断+本地兜底+半开状态切回,触发熔断后自动使用本地缓存地图做基础导航,API恢复后异步补全高精度数据;半开状态尝试调用,成功则恢复正常调用。
三、缓存设计与缓存一致性
核心考察:机器人高频读取场景的多级缓存架构设计,解决缓存与DB的并发更新脏读问题,支持缓存预热、惰性更新,兼顾低延迟与一致性。
- 问题 :修改机器人控制参数后,如何同步更新DB与缓存,避免分布式节点并发脏读且不影响实时指令?
核心解答 :采用更新DB→删除缓存双写策略+Redis分布式锁防并发;机器人本地用Caffeine做微秒级缓存,分布式Redis仅做状态同步,缓存设置短期过期时间兜底。 - 问题 :机器人频繁读取地图数据,如何设计Caffeine+Redis多级缓存,支持预热和惰性更新?
核心解答:读请求「Caffeine→Redis→DB」,写请求「更新DB→删除缓存+节点通知」;机器人启动时按设备ID预热本地缓存,凌晨低峰期预热Redis;地图数据做增量更新,减少网络传输。
四、分库分表与数据库优化
核心考察:百亿级机器人运行日志、传感器时序数据的分库分表策略,数据库读写分离、索引设计,解决多维查询、跨表统计的性能问题。
- 问题 :百亿级机器人运行日志需多维查询,如何分库分表解决跨表统计设备健康度的性能问题?
核心解答 :按设备ID哈希分库+按时间戳按月分表(Sharding-JDBC),建立(device_id, create_time, event_type)联合索引;实时健康度用Redis异步聚合,离线统计同步至时序数据库(InfluxDB)。 - 问题 :机器人监控平台读写并发高,如何设计读写分离策略,保证实时查询性能且分离分析型查询?
核心解答 :MySQL一主多从+半同步复制,Sharding-JDBC实现读写分离;实时查询路由至低延迟从库,分析型查询路由至专用从库;关闭从库binlog,大表分表降低同步延迟,从库延迟过高时实时查询切主库。 - 问题 :机器人传感器数据表查询慢,如何针对「设备ID+时间范围+数据类型」优化索引,避免全表扫描?
核心解答 :按「等值在前,范围在后」建立联合索引(device_id, data_type, create_time),覆盖核心查询避免回表;删除冗余单字段索引,热冷数据分层(7天热数据留原表,冷数据归档至时序库);禁止索引字段做函数操作。
五、分布式锁与消息队列
核心考察:基于Redis实现分布式锁的可靠性与扩展性 ,解决机器人重复指令问题;消息队列(RocketMQ)的消息不丢、不重复、高可用,处理消费者宕机后的重平衡。
- 问题 :如何基于Redis实现分布式锁防止机器人重复指令,支持锁自动续期和优先级调度?
核心解答 :使用Redisson可重入锁+看门狗自动续期,锁键绑定机器人ID+指令类型;建立Redis ZSet有序队列按指令优先级排序,高优先级指令优先获取锁、执行。 - 问题 :使用RocketMQ处理机器人异步指令,如何确保消息不丢失、不重复,处理消费者宕机后的重平衡?
核心解答 :生产端「同步发送+本地消息表」,Broker端「主从+同步刷盘+同步复制」,消费端手动ACK保证不丢;基于「机器人ID+指令ID」做业务层幂等保证不重复;利用RocketMQ内置重平衡,宕机后消息队列重新分配给存活消费者,集群消费模式做负载均衡。
六、系统设计与实战落地
核心考察:微服务全链路追踪、分布式会话、大文件上传、实时流处理等实战场景,贴合机器人WebSocket实时控制、固件升级、传感器海量数据处理的业务需求。
- 问题 :微服务架构中,如何设计全链路追踪系统,快速定位机器人控制延迟根因,支持实时拓扑?
核心解答:基于SkyWalking非侵入式埋点,生成全局TraceID/SpanID,记录全链路耗时;设置耗时阈值告警,通过TraceID定位延迟节点;定制化业务拓扑图,按机器人模块分组,核心指令全采样、非核心指令低采样降低开销。 - 问题 :控制台集群部署,如何实现WebSocket会话共享,保证机器人实时指令不中断,支持会话迁移?
核心解答 :Redis Hash存储会话信息,Redis发布订阅实现节点间会话感知;指令按会话所在节点精准路由,节点宕机时自动重定向至存活节点,未发送指令存入Redis队列兜底;心跳检测实现自动重连。 - 问题 :机器人GB级固件升级包,如何设计分片上传、断点续传,保证同步到边缘节点的可靠性?
核心解答 :前端按100MB分片,后端建上传状态表 实现断点续传;MinIO存储分片,合并后MD5校验;边缘节点采用P2P+中心分发同步,分片校验保证一致性,失败自动重试并推送告警。 - 问题 :机器人传感器TB级时序数据,如何用Flink设计流处理管道,实时检测异常振动信号并预警?
核心解答:架构「Kafka接入→Flink清洗计算→规则引擎检测→预警+时序库存储」;Flink滑动窗口(5s窗口/1s步长)做实时统计,提取异常特征;规则引擎秒级匹配,严重异常触发机器人急停;Flink并行计算+流批融合提升处理性能。
七、安全防护与认证授权
核心考察:Web控制台的防攻击设计,机器人与平台MQTT通信认证,兼顾应用层安全与物联网设备通信安全。
- 问题 :Web控制台如何防止重放攻击和越权操作,设计基于双方证书的MQTT通信认证机制?
核心解答 :① 防重放:Nonce随机数+时间戳+签名 ,登录接口JWT短期令牌+刷新机制;② 防越权:基于RBAC做权限控制,接口层校验资源权限,后端校验核心参数防止篡改;③ MQTT认证:搭建私有CA,实现双向SSL/TLS证书认证,服务端/机器人互验证书合法性,加密传输所有消息,证书硬加密存储+连接限流兜底。