腾讯音乐技术增长实习一面:活动设计、线程内存溢出与 Redis 主从
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 你在之前的项目里负责什么模块?
- 如果要让你设计一个运营活动,你打算怎么设计?
- 商品活动的三大特征是什么?
- 什么情况下线程内存会溢出?
- 你用过 Redis 吗?
- Redis 的主从复制了解吗?
- 反问。
《参考解析》
设计一个运营活动:技术增长岗问这个是在看你会不会把「业务目标」翻译成「系统设计」。给一套可复用的框架:① 目标与指标——拉新 / 促活 / 转化,对应注册数、DAU、下单率,先定北极星指标;② 玩法与规则——任务、奖励、门槛、库存与限购,规则要能被程序精确表达(避免「随机送」这种模糊描述);③ 流量与并发——预估峰值 QPS、热点商品/奖品、是否需要排队与限流;④ 数据模型——活动配置、用户参与记录、奖品库存扣减、幂等键;⑤ 风控与兜底——防刷(设备指纹、频控、黑名单)、超卖兜底、降级开关、活动结束后的对账;⑥ 观测——埋点、实时看板、异常告警。最后补一句灰度:先小流量验证转化再全量,这是增长岗最想听的。
商品活动的三大特征:常见口径是「限时、限量、限价」——限时制造紧迫感、限量制造稀缺感、限价(折扣/满减)给直接利益。也有按「价格让利、时间窗口、参与门槛」来归纳的。被问到这类题时,先按自己的理解给出三条并各配一个例子(秒杀、优惠券、拼团),再补一句「不同平台口径可能不同,核心都是通过约束制造稀缺与紧迫」。答案本身不如结构清晰重要。
线程内存溢出:分几种情况说。OutOfMemoryError: Java heap space——堆里对象回收不掉(内存泄漏:静态集合不断 put、ThreadLocal 没 remove、监听器未注销)或一次性加载太多数据;unable to create new native thread——线程数超过系统上限(每个线程默认 1MB 栈,线程池无界创建);Metaspace 溢出——动态生成类过多(反射、CGLIB、热部署);Direct buffer memory——NIO 直接内存没释放。再补「栈溢出 StackOverflowError 是递归太深,不属于堆内存溢出」,把概念边界划清。线上排查路径:jmap/jstack 抓现场、MAT 看支配树、-XX:+HeapDumpOnOutOfMemoryError 保 dump。
Redis 主从复制:流程分三段——① 建立连接与握手(从库发 PSYNC,主库回 +FULLRESYNC <runid> <offset>);② 全量同步(主库 BGSAVE 生成 RDB 发给从库,期间的写命令缓存在 replication buffer,发完 RDB 再补发);③ 增量同步(之后主库把写命令传播给从库,靠 offset 与 backlog 环形缓冲区支持断线重连后的部分重同步)。要能答的追问:主从是异步复制,所以有丢数据窗口;repl-backlog-size 太小会导致断线后无法部分重同步、退化成全量;主从延迟会造成读从库读到旧数据;写操作只能在主库,从库默认 read-only。再往上提一句哨兵做故障转移、Cluster 做分片,展示知识边界。
复盘:这场只有 15 分钟,面试官迟到且明显是走流程(原帖判断大概率挂了或 KPI 面)。增长岗的面试重点在业务理解与指标体系,纯技术八股只是门槛;准备时把「做过什么活动、带来什么指标变化」准备成一两个能讲透的案例,比刷八股有用。