目录
正在加载目录...

Amazon intern OA 考原题 | Amazon intern OA 70分钟两题经验

Amazon intern OA 考原题 | Amazon intern OA 70分钟两题经验

Amazon intern OA 最近大量发放,亚麻2月春招开始,又在开始批量发oa了,测试平台依旧是hackerrank,Coding两道题。

Amazon OA 题型

第 1 部分:2道Coding, 限时70mins 完成。

第 2 部分:Work Simulation 19 个问题,限时 4 个小时,有选择题和打分题 (1-5 分),问题不多,但阅读的信息量很大,注意把握时间。

第 3 部分:Work Approach 一共 21 个问题 (分成 7 页,每页 3 个问题),预计 10 分钟完成,考察你如何处理 software engineering work。

第 4 部分:Work Style 约 57 道题,预计 10 分钟完成。This set of questions assesses qualities important to succeeding at Amazon.每个问题由两句陈述组成, 根据自身的情况选择 Most Like Me 或者 More Like Me。

Amazon intern OA 真题

Q1

题目:在一个由 n 个机器人组成的系统中,每个机器人要么处于 Operating,要么处于 Standby。每个机器人都有一个阈值 coordinationThreshold[i],表示:当它处于 Operating 时,需要至少这么多其他 Operating 机器人,否则它会故障;当它处于 Standby 时,如果 Operating 机器人的数量达到或超过该阈值,它也会故障,系统只要有任意一个机器人故障,则该配置无效。题目要求计算所有可能的、不会导致任何机器人故障的有效配置数量。

思路:假设最终有 k 个机器人是 Operating,那么所有阈值 <= k-1 的机器人必须都能进 Operating,否则凑不够 k 个。如果某个机器人的阈值刚好是 k,它无论选 Operating 还是 Standby 都会出错,所以这种 k 必须排除。所以我们统计每个阈值出现次数 freq,并用前缀和算出 cnt = 阈值 <= k-1 的机器人数量。当且仅当 cnt == kfreq[k] == 0,这个 k 是一个合法配置,答案加 1。

代码:

def getValidConfigurations(coordinationThreshold):
    n = len(coordinationThreshold)
    freq = [0] * (n + 1)
    for t in coordinationThreshold:
        freq[t] += 1

    ans = 0
    cnt = 0
    for k in range(n + 1):
        if k > 0:
            cnt += freq[k - 1]
        if cnt == k and freq[k] == 0:
            ans += 1
    return ans

Q2

题目:判断在多个运送场景中,给定一组卡车及其最大承载能力,能否成功运送所有包裹。每次卡车成功配送一个包裹后,其载重能力会变为原来的一半,且卡车只能运送重量不超过当前载重能力的包裹。每个场景中给出多辆卡车及多个包裹,问是否存在一种分配方式,使所有包裹均被运送完成。

思路:每个场景把所有卡车容量放进一个最大堆(用 Python 的最小堆存负数实现),把包裹重量按从大到小排序,每次都用当前最大容量的卡车去送最重包裹,如果最大容量都送不了当前包裹,直接失败;否则送完后把该卡车容量更新为 cap/2 再放回堆里,全部包裹都能送完则返回 1,否则返回 0。

代码:

import heapq
def canAllPackagesBeDelivered(truckCapacities, packageWeights):
    ans = []
    for caps, pkgs in zip(truckCapacities, packageWeights):
        h = [-c for c in caps]
        heapq.heapify(h)
        ok = True
        for w in sorted(pkgs, reverse=True):
            if not h:
                ok = False
                break
            c = -heapq.heappop(h)
            if c < w:
                ok = False
                break
            heapq.heappush(h, -(c // 2))
        ans.append(1 if ok else 0)
    return ans

准备小结

如果你也在准备 Amazon Intern 或其他大厂的 OA/VO,可以直接联系 interviewAid 了解对应的面试辅助和陪跑支持。如果你想找我辅助面试,或者用 Amazon intern面经 中的原题 mock,感受最真实的 feedback,欢迎戳我。

全网唯一一家支持 L6 以上 system design mock,只放真实面经。

求职辅助服务,是关于时间和品质的较量。咨询interviewAid,获取最专业的Tech求职辅助。

正文完