📅  最后修改于: 2023-12-03 15:36:06.259000             🧑  作者: Mango
本文是一位程序员在亚马逊SDE实习生面试中的经历。内容包括面试流程、问题类型、答题技巧等等。希望能对正在准备亚马逊面试的程序员有所帮助。
面试分为两轮:
第一轮是完全以技术为主,主要考察的是编程和数据结构的能力。整个面试持续了一个半小时,包括一个白板编程的问题和几个基础的算法和数据结构问题。常见的问题包括:
第二轮主要考察的是通用的问题解决能力和丰富的代码经验。这一轮比较注重对候选人沟通和解决实际问题的能力。可能包括以下问题:
面试官: HashSet和HashMap的区别是什么?
面试官: 请写出二叉树的先序遍历、中序遍历和后序遍历的实现代码
对于下面这棵二叉树:
1
/ \
2 3
/ \
4 5
先序遍历:1 2 4 5 3
中序遍历:4 2 5 1 3
后序遍历:4 5 2 3 1
代码实现:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public class TreeTraversal {
// 先序遍历
public void preOrder(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preOrder(root.left);
preOrder(root.right);
}
// 中序遍历
public void inOrder(TreeNode root) {
if (root == null) {
return;
}
inOrder(root.left);
System.out.print(root.val + " ");
inOrder(root.right);
}
// 后序遍历
public void postOrder(TreeNode root) {
if (root == null) {
return;
}
postOrder(root.left);
postOrder(root.right);
System.out.print(root.val + " ");
}
}
面试官: 如何在一组字符串中找到最大公共前缀?
思路:先取第一个字符串做为比较基准,从第二个字符串开始向后寻找共有的前缀,如果当前字符串不包含这个前缀,则将基准字符串截取一个字符在进行搜索,直到找到共有前缀或者基准字符为空
代码实现:
public static String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
String pre = strs[0];
int i = 1;
while (i < strs.length) {
while (strs[i].indexOf(pre) != 0) {
pre = pre.substring(0, pre.length() - 1);
}
i++;
}
return pre;
}
亚马逊的面试重点是考察候选人的解决问题的能力和编程技术。以下是一些答题技巧:
亚马逊的面试是非常有挑战性的,也是非常有价值的经验。希望这篇文章能帮助正在准备亚马逊面试的程序员。