📜  2019年3月亚马逊面试体验(校外-云助理1)(1)

📅  最后修改于: 2023-12-03 15:13:06.696000             🧑  作者: Mango

2019年3月亚马逊面试体验(校外-云助理1)

简介

该面试是我参加的亚马逊校园招聘的一部分,具体岗位是云助理1。面试是在线的,通过电话和电脑屏幕分享解决方案进行。整个面试过程持续了大约1小时。

面试流程
自我介绍

面试官先向我介绍了自己,然后要求我介绍自己的学术和工作经历。此时,我简要地介绍了我的背景信息和在计算机科学领域的研究方向和实习经验。

解决方案

接下来,面试官问我有多少解决方案能够使用 AWS Lambda 实现,每个方案占用多少内存和 CPU 时间。我讲了三个场景:

  1. 对于一个网站,如果用户上传图片文件,则可以使用 Lambda 函数对图像进行预处理,例如裁剪、压缩和调整大小等操作。
  2. 对于一个有大量并发读/写请求的实时数据处理系统,可以使用 Lambda 函数来按需缩放处理能力。
  3. 对于一个高可用性的大型网站,可以使用 Lambda 函数来监控并维护不同的服务,例如数据库、缓存、安全性、负载均衡器和内容分发网络等。

然后我讲了如何预估内存和时间占用量。

问题解答

接下来面试官问我以下几个问题:

  1. 描述一下你编写定时器的过程。我讲述了编写一个定时器所需的基本元素,并且描述了与调度器的交互方式。
  2. 在 Linux 和 Windows 系统上运行 Java 程序时,你使用的是什么方案?我解释了如何在两种操作系统上编写可移植的 Java 代码,并且介绍了开发环境。
  3. 在设计 REST API 时,你最看中什么?我谈到了如何设计用户友好、易于维护和具有健壮性的 API。
代码实现

接下来,他要求我写一个函数,根据输入数组的长度和目标值,返回一个 4 元组的索引,该 4 元组的总和等于目标值。我的思路是基于两个指针的“一前一后”的方法,它们扫描输入数组。我实现了这个函数,并测试了一些输入参数。

def fourSum(nums, target):
    # Sort list
    nums.sort()
    # Define 4 sum numbers as a and b, starting from 2 pointers from start and end of the sorted list
    res = []
    for i in range(len(nums)-3):
        if i > 0 and nums[i] == nums[i-1]:
            continue
        for j in range(i+1, len(nums)-2):
            if j > i+1 and nums[j] == nums[j-1]:
                continue
            left, right = j+1, len(nums)-1
            while left < right:
                total = nums[i] + nums[j] + nums[left] + nums[right]
                if total == target:
                    res.append([nums[i], nums[j], nums[left], nums[right]])
                    while left < right and nums[left] == nums[left+1]: left += 1
                    while left < right and nums[right] == nums[right-1]: right -= 1
                    left += 1
                    right -= 1
                elif total < target:
                    left += 1
                else:
                    right -= 1
    return res
总结

虽然这是我的第一次亚马逊在线面试,但我感到面试官非常友好和专业。他试图了解我的程序设计和算法能力,并考查我的经验和知识。整个过程非常刺激,让我意识到亚马逊是一家非常有雄心壮志的公司,它正在通过现代的云计算技术重塑未来的商业模式。