【面经】当 deepseek 遇上华为云的面试|01
🌟【友情提示】本篇面经来自粉丝投稿+智能润色,点击进入 -> 🔗互联网面经大全 围观25届校招修罗场!!每个技术细节都经过脱敏处理,请勿对号入座~
八股
🌈 面试官:
咱们先聊聊Redis吧,数据结构这块你平时用哪些比较多?
💬 小基:
最常用的是String和Hash。比如活动库存用String存,用户资料用Hash存字段。对了还有HyperLogLog,用来做UV统计省内存!持久化的话我们线上用混合模式,RDB做定时快照,AOF追加操作日志。之前遇到缓存雪崩,我们给不同业务线加随机过期时间,穿透问题用布隆过滤器先拦截非法请求。
🌈 面试官:
消息队列怎么保证消息不重复消费?我们系统遇到过凌晨批量任务重复执行的问题。
💬 小基:
上个月刚踩过这个坑!我们在生产者端给每个消息加唯一指纹,用Redis存已处理消息ID,TTL设6小时。消费者端做幂等校验,比如订单ID+操作类型组合键存DynamoDB。不过这样吞吐量会降,后来切到FIFO队列用内容哈希自动去重,但要注意5分钟窗口期不够的话得自己维护去重表。
🌈 面试官:
说说InnoDB的索引结构?为什么用B+树不用红黑树?
💬 小基:
B+树叶子节点连成链表,范围查询超快。像查18-22岁的用户,找到18后顺着指针扫就行。非聚簇索引存主键值,回表查数据时如果主键是UUID这类大字段就会慢,所以我们业务都用自增ID当主键。上次慢查询优化就是把*号改成具体字段,减少回表时的IO。
🌈 面试官:
实习项目里那个优惠券系统,怎么解决高并发发券的?
💬 小基:
当时用Redis库存扣减,Lua脚本保证原子性。但大促时发现集群分片不均,有的节点被打爆。后来改成预扣库存到本地缓存,异步批量同步到DB。最刺激的是有次脚本里的除法没转整型,导致多发券,凌晨三点用binlog回滚数据...
(手撕环节)
🌈 面试官:
给你一个数组,不修改数组且O(1)空间找重复元素,怎么写?
💬 小基:
这题有点像链表找环的思路。比如数字2出现两次,那下标2和下标4都会指向3形成环。用快慢指针遍历数组,相遇时从头开始同步遍历就能找到入口点。不过要处理0的情况,需要先判断元素值是否越界。
八股
🌈 面试官:
(在纸上画项目架构图)你这个微服务拆分为什么用八个模块?单个服务处理不行吗?
💬 小基:
(擦汗)当时用户增长突然爆发,单节点扛不住登录流量。拆认证服务单独横向扩展,用Redis分布式session。订单服务独立是因为要对接多个支付渠道,版本迭代快...
🌈 主管:
主备同步延迟大的话,业务上会有什么表现?
💬 小基:
#面经##华为##牛客创作赏金赛#用户刚提交订单后马上查列表可能看不到。我们业务允许短暂不一致,但金融类操作必须走主库。遇到过从库binlog积压,后来调整了sync_binlog参数,半同步模式下等至少一个从库ACK才返回成功。
本专栏收集了互联网上的面试经验贴