📅  最后修改于: 2023-12-03 15:36:04.987000             🧑  作者: Mango
最近我有幸参加了亚马逊校园招聘的SDE-1面试,以下是我的面试体验和面试题目的总结。
面试时间为1个小时,面试环境是在亚马逊的展位内进行面试。面试官是一位Senior SDE,在面试前给我介绍了一下自己的背景和亚马逊的业务。
给定两个字符串,找出它们中相同的字符,并输出这些字符。
使用哈希表记录第一个字符串中的字符,然后遍历第二个字符串,如果存在相同的字符,将其输出。
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
给定一个链表,判断链表中是否存在环。
使用双指针遍历链表,如果存在环,那么两个指针最终会相遇。
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
给定两个有序数组,将它们合并成一个有序数组。
使用双指针遍历两个数组,比较指针所指向的元素大小,将较小的元素插入到新的数组中。
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
面试过程中,面试官会考察面试者的基本编程能力和解题思路,所给的题目难度不算太高。如果想要进入亚马逊这样的大厂,不仅需要具备扎实的计算机基础和编程能力,还需要注重细节和主动与面试官交流。