一段时间以前,我接受了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
第四小的元素是6,无论是否出现
我问我是否可以使用哈希,但是他正在寻找空间复杂度较低的东西,无法进一步回答这一特殊问题。 - 螺旋形式的水平阶遍历
- 在给定的二叉树中找到子节点和父节点的任何组合之间的最大差异。在此,子节点可以位于父节点之下的任何级别,但应位于从父节点开始的同一子树中。使用递归,自下而上的方法解决,将最大差和最小节点值返回到当前节点,然后返回到每个级别的上层节点。
解决方案:GeeksforGeeks链接 - 关于项目的详细讨论,我设计的新东西,为什么这样做,为什么不这样做等,我的团队如何工作,完整的过程,我的个人角色,责任和贡献。您在代码中是否有错误,以及如何纠正。您的代码中的任何错误都已进入生产环境。您在工作以外所做的事情,是否有任何开源贡献等?
- 给定二叉树中的任何两个节点,请找到从第一个节点到另一个节点的路径,并确定该路径是直线,还是在线路上有匝数,请找到匝数。
解决方案:GeeksforGeeks链接 - 有关Java哈希图,哈希集,其内部工作及其复杂性的详细讨论。
- 许多行为问题,例如最复杂的事情完成,您如何做,面临的挑战,收到的负面反馈,如何改进以及更多其他交叉问题。
给准备类似亚马逊的会员的建议:
- 首先要对基本的数据结构概念有很好的了解,可以明智地参考geeksforgeeks.org一节,也可以参考Narasimha Karamunchi之类的书(我指的是本书),不仅要阅读,而且要实现。
- 阅读《破解编码面试》一书,以了解如何回答行为问题。这些问题非常有限,但对于亚马逊来说是必须的。
- 练习和解决来自Practice.geeksforgeeks.org的最后40个亚马逊面试经验
希望这些信息对您所有人有所帮助,并祝您一切顺利。
亚马逊的所有练习题!