Amazon — 16 Leadership Principles · LP10. Frugality

讲讲你如何在预算紧张的情况下,用一个有创意的方法解决了一个问题。

Tell me about a creative way you solved a problem on a tight budget.

答案语言

考察要点

这道题考察候选人在资源有限的情况下,是否能打破常规思维,用创新的方法解决问题,并最终交付成果。它直接对应 Amazon 的两条领导力准则:

  1. Frugality (节俭):用更少的资源做更多的事。这不等于廉价,而是强调智慧地分配资源,避免浪费。
  2. Invent and Simplify (创新与简化):期望员工作为创新者,总能找到简化的方法。即便在外部看来已经很完善,也要想办法化繁为简,并探索新的可能性。

高分示范答案(STAR)

Situation(背景) 去年,我在一家中型电商公司担任后端技术主管,负责一个 5 人小组,维护商品搜索服务。随着业务快速发展,我们的 Elasticsearch (ES) 集群因为索引了大量非结构化的商品评论和问答数据,导致查询性能严重下降,尤其是在高峰期,P99 延迟飙升,直接影响用户体验和转化率。

Task(任务) 我的任务是将商品搜索的 P99 查询延迟从 800ms 降低到 200ms 以下。按照常规方案,我们需要将 ES 集群的规模扩大一倍,并采购更昂贵的 i3en 系列机型,初步预算超过 40 万人民币。但当时公司正处在成本控制阶段,这笔预算申请被财务和CTO直接驳回了。

Action(行动) 在预算为零的约束下,我必须找到创造性的解决方案。

  • 第一步,我重新定义了问题:我通过日志分析和业务沟通发现,用户搜索时真正关心的是商品的核心属性(品牌、品类、功效),而海量的、非结构化的评论数据虽然有用,但并非搜索的核心路径。问题不是“如何让现有集群更快地处理所有数据”,而是“我们是否必须在主搜索链路上处理所有数据?”。

  • 第二步,我设计了一个“读写分离”的简化架构:我提出了一个近乎零成本的方案。我利用现有的 Kafka 消息队列和一台闲置的普通服务器,构建了一个轻量级的数据预处理服务。这个服务会消费评论数据的增量消息,使用自然语言处理(NLP)的关键词提取技术,将非结构化的评论(如“这款面霜保湿效果很好”)转化为结构化的标签(tag:保湿)。

  • 第三步,我改造了索引和查询逻辑:我修改了索引构建流程,只将这些结构化的标签(Tag)存入主 ES 集群,而将原始的、冗长的评论文本归档到成本极低的 S3 对象存储中。这样一来,主 ES 集群的索引大小缩减了约 70%。当用户搜索时,我们只查询轻量的核心属性和标签;仅当用户点击进入“查看评论详情”时,才通过 ID 从 S3 中异步拉取原始评论。

  • 第四步,我推动方案落地并规避风险:为了说服产品和管理层,我用了一天时间搭建了一个最小可行产品(MVP),证明这个方案在不影响核心搜索体验的前提下,性能提升巨大。对于“关键词提取不准”的风险,我设计了一个反馈闭环,允许运营人员手动修正标签,并通过简单的模型再训练持续优化。

Result(结果) 这个方案上线两周后,在零硬件成本增加的情况下,取得了显著成果:

  • 商品搜索的 P99 延迟从 800ms 稳定降低至 120ms,降幅超过 80%。
  • ES 集群的索引体积减少了 70%,CPU 和内存负载下降了约 50%,为未来 1-2 年的业务增长预留了充足的资源。
  • 由于搜索体验改善,A/B 测试显示核心搜索页面的用户转化率提升了 3%
  • 我学到了,面对资源限制时,挑战问题本身(Challenge the premise)往往比直接解决问题更有效。

低分陷阱(常见扣分点)

  1. 方案不够“Creative”:只提“我加班加点优化了代码”或“我找别的组借了两台服务器”。这体现的是勤奋或协调能力,而非 Frugality 和 Invent and Simplify。反例:“我们团队一起熬夜,把最耗时的几个查询的逻辑优化了一下,快了一些。”
  2. 把“节俭”理解为“抠门”:选择了一个技术债高、长期维护成本巨大的方案,只为了短期省钱。面试官想听的是“聪明地省钱”,而不是“不计后果地省钱”。
  3. Action 停留在“我们”:全程说“我们分析了数据”、“我们设计了方案”。面试官无法判断你在这个创新方案中扮演的是领导者、核心贡献者还是普通参与者。反例:“我们觉得之前的方案太贵了,所以大家一起想了个新办法。”
  4. Result 缺少量化:只说“项目很成功,性能提升很明显”。这无法衡量你方案的价值。反例:“我们把服务部署上去后,搜索快多了,用户反馈很好。”
  5. 忽略风险和权衡:一个真实的创新方案必然有取舍。比如我的方案牺牲了对评论全文进行模糊搜索的能力。不提权衡会让故事显得不真实。

高概率追问(3 个 + 示范回答要点)

  1. 追问:你提到的“关键词提取”方案,如果准确率不高怎么办?这不会影响用户体验吗?

    • 要点1(承认并量化风险):承认这是方案最大的风险点。在上线初期,我们评估了模型的 F1-score 大约在 85% 左右,意味着确实存在部分标签提取不准或遗漏的情况。
    • 要点2(阐述缓解措施):我设计了两个层面的缓解措施。短期内,我们为运营团队提供了一个简单的后台界面,可以对高热度商品的标签进行人工校验和修正。长期来看,我设计了一个反馈闭环,将人工修正的数据作为高质量训练样本,每周对关键词提取模型进行增量训练,持续提升准确率。
    • 要点3(业务权衡):最关键的是,我向产品经理阐明了这是一个权衡(trade-off):我们用可控的、可迭代提升的标签准确率,换取了立竿见影的、80%的性能提升和数十万的成本节约。这是一个对业务当前阶段极为有利的交换。
  2. 追问:这个方案是你独立完成的吗?团队其他成员扮演了什么角色?

    • 要点1(明确自己的核心贡献):这个方案的核心思想、架构设计(数据预处理+读写分离)以及关键技术选型(NLP模型选择、反馈闭环设计)是由我主导提出的。我也负责了最核心的 PoC 搭建和对管理层的汇报。
    • 要点2(体现团队合作):在执行阶段,我将任务进行了拆分。一位同事负责 Kafka 消费者和数据预处理服务的工程化实现;另一位同事负责 ES 索引模板的修改和数据回刷脚本;我则负责关键词提取模型的调优和整体项目的进度把控。我在这里的角色更像 Tech Lead。
  3. 追问:如果当时预算充足,你还会选择这个方案吗?

    • 要点1(肯定创新方案的价值):是的,我依然会优先尝试这个方案。因为它不仅是省钱,更是一个更优雅、更简单的架构。它从根本上解决了“用重量级的通用方案解决轻量级核心问题”的弊病,降低了系统的复杂度。
    • 要点2(展现长远思考):即使预算充足,直接扩容也只是“推迟”了问题,而不是“解决”了问题。随着数据量继续增长,我们很快又会面临同样的瓶颈。我的方案从架构层面提升了系统的可扩展性。
    • 要点3(合理使用预算):如果预算充足,我会将省下来的钱投入到更有价值的地方。比如,我会建议采购一个专业的 GPU 服务器来加速我们的 NLP 模型训练,或者投入资源建设更完善的 A/B 测试平台,用来更精确地衡量这类优化带来的业务影响。这才是 Frugality 的精髓——把钱花在刀刃上。

故事复用建议

这个故事的核心是“在硬约束下,通过重新定义问题和简化架构来达成目标”,因此可以灵活复用于以下问题的回答:

  • Ownership (主人翁精神):当项目因预算被卡住时,我没有停止或抱怨,而是主动承担责任,寻找新的出路。
  • Deliver Results (交付成果):面对看似不可能完成的任务(预算为零),我最终交付了超出预期的结果(性能提升80%,转化率提升3%)。
  • Bias for Action (崇尚行动):我没有停留在理论分析,而是快速搭建了 MVP 来验证想法、凝聚共识。
  • Think Big (远见卓识):这个方案不仅解决了眼前的问题,还为系统未来的可扩展性打下了基础,并将“数据预处理”这个思路推广到了其他业务线。
  • Disagree and Commit (敢于谏言,服从大局):可以包装成向上管理的例子,比如一开始我不同意直接砍掉预算,但在理解公司困境后,我 commit to the constraint 并找到了新方法。