Amazon VO 面试实录:寻找战术制高点(Peak Finding)- 一亩三分地 – 亚麻面经

2025年7月 | Amazon VO 第二轮 | 面试平台:Chime
题型:Binary Search on Array | 时长:50 分钟

以下来自于我们CSOahelp真实客户的面试记录,CSOahelp面试辅助老师全程提供解题思路、Follow up 以及详细完整代码; 不用刷题轻松进大厂。


🪖 题设引入:你是王国的首席战略官

开场题非常 Amazon 风格 —— 引导性极强的场景化设问:


📜 原题描述

You are the kingdom’s chief war strategist.
Your land is encircled by a mountain range.
You know the height of each individual mountain in the range.
Enemies are trying to climb that mountain range and attack your kingdom.

To prevent these attacks you need to find any mountain (b) so that you can coordinate your forces with immediate neighboring mountains (a and c),
but the height of the neighboring mountains should be smaller than or equal to the height of the mountain (a <= b >= c).

➡ 本质上,是找一个“局部峰值” peak element:比左右相邻都高或相等即可。
➡ 可以有多个合法解,任意返回一个即可。

面试官读题时语速偏快,我们提醒:

确认题干逻辑并同步给候选人:“这题不难,local peak element,只要条件是 a <= b >= c。”

✅ Clarification 破冰 & 掌控节奏(第一阶段)

我们主导发起几个关键 Clarification,拉平基础设定:

  • “Is the input a list of numbers representing the heights?”
  • “Will the edge elements be valid peaks?” (比如 [1, 2, 3] 中的 3 是不是一个合法的山峰?)

得到确认:Yes, edge cases are acceptable。我们马上补刀:

“So in that case, a strictly increasing array ending in 10 still means 10 is a valid peak, correct?”
🟢 面试官点头确认,气氛松弛下来。

我们建议候选人从 Brute Force 入手(稳扎稳打):

- O(n) 时间
- loop 从 index = 1 到 n-2,判断两边是否满足条件
- 如果长度小于 3,则单独判断左右边界

这一步候选人能自行处理,但我们马上抛出进阶点:

“Want to discuss binary search optimization?”

⚡ 高阶策略:Binary Search + 思维引导(第二阶段)

我们帮忙明确搜索策略的两个核心:

  1. 不需要全局最大,只要任何一个 local maximum。
  2. 单调方向可压缩空间

于是开始推理:

  • 如果当前 mid 比左边小,那左边一定有峰值
  • 如果比右边小,那右边一定有峰值
  • 否则 mid 即为峰值

我们在 Chime chat 边打边讲,贴出英文推理模板:

        
Let left = 0 and right = n - 1.

While left <= right:
    mid = (left + right) / 2
    If heights[mid] >= both neighbors, return mid
    Else if left neighbor > mid, move to left
    Else move to right
        
    

🔁 面试官一度插话表示:“What if mid is at edge?”
我们快速回应:“We treat the edge with a single-neighbor comparison.”
现场把 mid == 0mid == n - 1 这两种特判解释清楚。

对方点头继续。

我们一起过了样例 [2, 3, 1, 1, 3, 10],并现场模拟了二分三轮:

        
mid = 2 → 1 < 3 → go left
mid = 0 → 2 < 3 → go right
mid = 1 → 3 >= 2 and 3 >= 1 
        
    
我们引导候选人 verbalize 每一步决策 —— 这正是 VO 考察的关键指标:能否边做边讲。

✅ Java 实现 & 边界处理

候选人按照我们的提示抄写出了以下代码


public int findPeak(int[] heights) {
    int n = heights.length;
    int left = 0;
    int right = n - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        boolean leftOK = (mid == 0 || heights[mid] >= heights[mid - 1]);
        boolean rightOK = (mid == n - 1 || heights[mid] >= heights[mid + 1]);

        if (leftOK && rightOK) {
            return mid;
        }

        if (mid > 0 && heights[mid - 1] > heights[mid]) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }

    return -1;
}
  

面试官全程无打断,甚至在候选人补完注释后说了句 “Nice clean implementation”。

🧠 Follow-up Q&A(第四阶段)

对方连续丢出多个 follow-up:

  • “What if all elements are equal?”
    → 我们回答:“Then any of them is a peak, the first one will be found.”
  • “What if the input is strictly increasing?”
    → 回答:“Last one is valid, and binary search will eventually land there.”
  • “Can we return all peaks?”
    → 我们主动回应:“That’s a different problem; we’d need O(n) scan, not binary.”

这一部分我们带着候选人逐个拆解,不抢答但紧贴关键点。效果极佳。


🧾 面试节奏 & 心理调节

  • 第 3 分钟:Clarification 主动发问,抢得节奏权
  • 第 10 分钟:提出 binary search,进入高阶解法
  • 第 18 分钟:代码开始落笔,我们做边界预警
  • 第 25 分钟:样例 debug,我们模拟演练
  • 第 30-38 分钟:Follow-up 连环追问,全面覆盖

候选人节奏非常稳,我们在背后做了大量 的引导,让面试官看到对方有思考、有转折、有探索感。


🧠 面试官总结反馈(结束前)

结束前 2 分钟,面试官给出了很温和的总结语气:

“Good discussion. I appreciate how you structured your thinking, and that you asked the right clarifications up front.”

这是典型 偏正面反馈,后续如果没有重大失误,这一轮我们判断 Pass概率极高


✅ 总结建议(CSOaHelp出品)

  • 本题核心不在代码,而在如何沟通、如何设计边界思维
  • Binary Search 并非标准模板,而是构造条件下的应用——重点是“移动方向的确定逻辑
  • 面试官更在意你“如何到达解法”,而不是“你有没有做出来”
  • 最好准备一个辅助样例数组,在 debug 时引导节奏

如果你也在准备Amazon、Meta、TikTok等大厂的算法与系统设计面试,却不清楚如何拆题和应对各种边界,欢迎添加微信 csvohelp,即可领取北美面试求职通关秘诀。我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *