📅  最后修改于: 2023-12-03 15:20:02.604000             🧑  作者: Mango
SDE-1(Software Development Engineer)是亚马逊的一级软件开发工程师职位,主要负责软件的开发和维护。亚马逊是全球最大的电商平台之一,面试相对来说比较难,主要考察对数据结构和算法的掌握程度以及工作经验和解决问题的能力。
亚马逊的初试一般是电话面试,面试时间大约为45分钟至1小时,主要考察对数据结构和算法的掌握程度,也会有一些类似于系统设计的问题。面试时需要自备电脑,可以在面试过程中使用谷歌搜索引擎。下面是一个例子:
问题
给定一个无序整数数组 nums,找出其中未出现的最小的正整数。
解题思路
将所有的负数和0都变成大于nums.length的数字,然后将每个数对应的下标标记为负数,最后遍历数组,找到第一个正数的下标即可。
代码
public int firstMissingPositive(int[] nums) {
int n = nums.length;
for (int i = 0; i < n; i++) {
if (nums[i] <= 0) {
nums[i] = n + 1;
}
}
for (int i = 0; i < n; i++) {
int num = Math.abs(nums[i]);
if (num <= n) {
nums[num - 1] = -Math.abs(nums[num - 1]);
}
}
for (int i = 0; i < n; i++) {
if (nums[i] > 0) {
return i + 1;
}
}
return n + 1;
}
复试有两轮,每轮分别为45分钟至1小时,相对于初试难度会更高一些。其中,第一轮面试有两道题目,而第二轮面试则是一道题目,相当于是System Design的考核。复试面试时需要自备电脑,可以使用谷歌搜索引擎。
亚马逊的面试相对来说比较难,主要考察对数据结构和算法的掌握程度以及工作经验和解决问题的能力,提前准备很有必要,还需要熟悉面试时要使用的开发语言。同时,自信和冷静也非常关键。