你好极客,上个月我参加了亚马逊的实习面试。
我的个人经验是,永远不要试图立即跳到正确的解决方案,而是花时间逐步思考给定问题的可能解决方案。
仔细检查边界测试用例,并且在与面试官的谈话中也不要完全保持空白,而是继续告诉他你想到的试探性解决方案。
我的整个过程包括3轮:
- 在线回合。
- 第一次电话面试
- 第二次电话面试
第1轮:
- 这是一个在线回合,包括 20 道选择题(来自 C 语言、操作系统、数据结构和算法以及软件开发概念)和 2 道编码问题:
- 给定 2 个链表构造了另一个包含这 2 个链表之和的链表。
e.g Given : 1 -> 2 -> 3 and 4 -> 5 -> 6 Ans: 5 -> 7 -> 9
- 求给定二叉树的垂直和。
第 2 轮(电话):
- 电话交谈的持续时间约为 60 分钟,面试官问了我 2 个编码问题:
- 给定一个由 +ve 和 -ve 组成的数组,通过对所有元素进行加/减运算,找出是否可以将其转换为 0。
e.g arr[]={1,2,3} YES (1+2-3) arr[]={3,6,2} 3+6-2 != 0 3-6-2 !=0 -3-6-2 !=0 -3-6+2 !=0 -3+6-2 !=0 -3+6+2 !=0 3-6+2 !=0 3+6+2 !=0 Hence ans= NO
- 给定一个二叉树,其中每个节点的结构都包含一个额外的“下一个”指针(最初全部为 NULL),修改二叉树,以便使用这些给定的额外指针连接同一级别的所有节点。
解决方案: (GeeksforGeeks 链接)面试官还让我写代码。
第 2 轮(电话):
- 电话交谈的持续时间约为 90 分钟,面试官问了我 2 个编码问题:
- 写一个代码来找出给定二叉树的直径
首先我给出了复杂度为 O(n^2) 的解决方案,然后他让我优化它,所以最后我在 O(n) 中完成了它。 - 给定一个数字,设计算法以找到包含完全相同数字的下一个更大的数字。
e.g. n= 123 next greater with same digits = 132 The number can be very large so its better to consider it as a sequence of characters.
我还被要求为此编写代码。
我在准备面试时度过了非常愉快的时光,并且学到了很多新概念。
我真的非常感谢GeeksForGeeks成为我准备工作的主要来源,相信我,这个网站很棒。你忘了说我终于收到了确认的亚马逊实习offer 😀😛
亚马逊的所有练习题!