前段时间我参加了 Amazon.com 的 SDE-1 角色面试,以下是我帮助其他有志者的经验:
书面 – 笔和纸轮
必须用我选择的任何编程语言编写生产级代码,涵盖所有边缘情况,并清楚地提到我的代码的复杂性。
- 二叉搜索树中的最低共同祖先
- 删除最少数量的字符,使两个字符串成为字谜
- 给定一个数组,为每个元素打印 Next Just Greater Element。元素 x 的下一个更大的元素是数组中 x 右侧的更大元素。如果右侧没有更大的元素,或者如果右侧再次出现相同的元素(在重复的情况下),则返回相同的元素
For e.g. given input array : 3,5,8,4,2,6,3 output should be : 3,6,8,6,3,6,6
解决方案:GeeksforGeeks 链接
使用二叉搜索树解决它
面对面回合?
面试官非常乐于助人,而且很专注于方法,他们会先问基本的蛮力解决方案,然后是最佳解决方案,然后他们可能会稍微增加问题的复杂性,如果你能够令人满意地解释你的方法,然后会要求您用您选择的任何编程语言编写生产级代码,使用笔和纸覆盖所有边缘情况:
- 在未排序的数组中找到一个元素,使得所有左边的元素都较小,所有右边的元素都较大。
解决方案:GeeksforGeeks 链接
需要 O(n) 时间复杂度解决方案。 - 在按行按列排序的矩阵中查找第 k 个最小元素。讨论了最小堆和最大堆方法以及两者的复杂性。
解决方案:GeeksforGeeks 链接 - 如果矩阵中有重复元素,我们必须将所有重复元素视为一个位置,即如果矩阵包含像 3,6,4,3,5,4,7 这样的元素,那么
第一个最小元素是 3
第二小的元素是 4
第三个最小的元素是 5
4th 最小的元素是 6,无论是否出现
我问我是否可以使用散列,但他正在寻找空间复杂度较低的东西,无法进一步回答这个特定的问题。 - 螺旋形式的层序遍历
- 找出给定二叉树中子节点和父节点的任意组合之间的最大差异。这里子节点可以在父节点下的任何级别,但应该在从父节点开始的同一子树中。使用递归,自底向上的方法解决,将最大差值和最小节点值返回到当前节点,在每一层上层节点。
解决方案:GeeksforGeeks 链接 - 关于项目的详细讨论,我设计的新东西,为什么这样,为什么不这样等等,我的团队如何工作,完整的过程,我的个人角色,责任和贡献。您是否有代码错误,您如何纠正。您的代码中的任何错误是否已进入生产环境。你在工作之外做什么,你有没有任何开源贡献等等。
- 给定二叉树中的任意两个节点,找出从第一个节点到另一个节点的路径,并判断该路径是直线,还是线上有匝,求匝数。
解决方案:GeeksforGeeks 链接 - 关于Java hashmap、hashset、其内部工作及其复杂性的详细讨论。
- 很多行为问题,例如最复杂的事情做了,你是怎么做的,你面临什么挑战,你收到的负面反馈,你如何改进,以及更多交叉问题。
给准备像亚马逊这样的会员的建议:
- 首先对基本的数据结构概念有一个很好的理解,可以参考geeksforgeeks.org section wise 或任何像Narasimha Karamunchi 这样的书(我参考了这本书),不要只是阅读,而是实施。
- 阅读像 Cracking The Coding Interview 这样的书来学习如何回答行为问题。这些问题非常有限,但对于亚马逊来说是必须的。
- 练习和解决来自 practice.geeksforgeeks.org 的最后 40 次亚马逊面试经验
希望这些信息对大家有所帮助,祝大家一切顺利。
亚马逊的所有练习题!