📜  亚马逊 SDE-1 面试体验(校园内)(1)

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

亚马逊 SDE-1 面试体验(校园内)

最近我有幸参加了亚马逊校园招聘的SDE-1面试,以下是我的面试体验和面试题目的总结。

面试环境和时间

面试时间为1个小时,面试环境是在亚马逊的展位内进行面试。面试官是一位Senior SDE,在面试前给我介绍了一下自己的背景和亚马逊的业务。

面试题目
1. 找出两个字符串中相同的字符

给定两个字符串,找出它们中相同的字符,并输出这些字符。

解题思路

使用哈希表记录第一个字符串中的字符,然后遍历第二个字符串,如果存在相同的字符,将其输出。

代码示例

def find_common_chars(s1, s2):
    char_dict = {}
    for char in s1:
        char_dict[char] = True
    common_chars = []
    for char in s2:
        if char in char_dict:
            common_chars.append(char)
    return common_chars
2. 判断一个链表是否存在环

给定一个链表,判断链表中是否存在环。

解题思路

使用双指针遍历链表,如果存在环,那么两个指针最终会相遇。

代码示例

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def has_cycle(head: ListNode) -> bool:
    if not head:
        return False
    slow = head
    fast = head.next
    while slow != fast:
        if not fast or not fast.next:
            return False
        slow = slow.next
        fast = fast.next.next
    return True
3. 合并两个有序数组

给定两个有序数组,将它们合并成一个有序数组。

解题思路

使用双指针遍历两个数组,比较指针所指向的元素大小,将较小的元素插入到新的数组中。

代码示例

def merge_sorted_array(nums1, nums2):
    m = len(nums1)
    n = len(nums2)
    nums_merged = [0] * (m + n)
    i = 0
    j = 0
    k = 0
    while i < m and j < n:
        if nums1[i] < nums2[j]:
            nums_merged[k] = nums1[i]
            i += 1
        else:
            nums_merged[k] = nums2[j]
            j += 1
        k += 1
    while i < m:
        nums_merged[k] = nums1[i]
        i += 1
        k += 1
    while j < n:
        nums_merged[k] = nums2[j]
        j += 1
        k += 1
    return nums_merged
总结

面试过程中,面试官会考察面试者的基本编程能力和解题思路,所给的题目难度不算太高。如果想要进入亚马逊这样的大厂,不仅需要具备扎实的计算机基础和编程能力,还需要注重细节和主动与面试官交流。