亚马逊面试经历 | Set 388(全日制在校内)
第 1 轮:在线编码测试- 90 分钟(HackerEarth)
它有 2 个编码问题和 20 个 MCQ。
- 背包变体(您可以任意选择一个项目) GeeksforGeeks Link
- 给定一个由 0、1 和 2 组成的二维数组。 1 表示新鲜的苹果,2 表示腐烂的苹果,0 表示该位置没有苹果。
每个腐烂的苹果需要 1 天的时间才能使其邻居(8 个,给定一个新鲜的苹果,已经在那里)腐烂。计算所有苹果会腐烂的天数。如果不是,则打印永远不会腐烂的苹果的数量。
MCQ 包括一些基于 C 语言的输出问题 (5)、时间复杂度 (2)、数据结构 (10)、OS(2)、基于 Java 的输出问题 (1) 等。
第 2 轮 (F2F1)
面试官很冷淡,让我自我介绍,然后他让我解释我的任何项目。然后他问了我两个问题:
- 给定一棵特殊的二叉树,求树的高度。
特长:每个叶子都以循环双向链表的方式连接到下一个叶子(从左到右)。
时尚。假设 2 个连续的叶子是 A 和 B,所以,A->right = B 和 B->left = A。最左边的叶子的左边指向最右边的叶子,最右边的叶子的右边指向最左边的叶子。
预期时间复杂度 = O(n),空间复杂度 = O(1)。
GeeksforGeeks 链接 - 翻转最大 k 位以找到二进制数组中连续 1 的最大数量。
预期时间复杂度 = O(n),空间复杂度 = O(1)。
第 2 轮 (F2F2)
他首先描述了我的项目,然后问了我几个问题,主要是:
- 给定字符串的下一个排列(可以包含重复项)。 (编写完整的代码,包括交换、反向等)。
GeeksforGeeks 链接 - 找到一棵树的镜像,其中每个节点可以有任意数量的孩子。 (写完整的代码)
GeeksforGeeks 链接 - 边界顺序遍历。
GeeksforGeeks 链接 - 检查给定的 2 个节点是否是表亲。
GeeksforGeeks 链接 - 检查给定的树是否是求和树。 (任何节点的值 = 所有子节点值的总和)。
GeeksforGeeks 链接
第三轮(F2F3)
她首先描述了我的项目,然后他问了我几个问题,主要是:
- 递归和迭代之间的区别(略长的讨论)。
- 数组、链表和树之间的区别。
GeeksforGeeks 链接 - 讨论所有 O(n logn) 排序算法。
- 仅一次对包含 0、1 和 2 的数组进行排序。
GeeksforGeeks 链接 - 给定 2 个数组,它们表示要插入到两个单独的二叉搜索树中的元素。查找是否二分查找
树将相同或不同,而无需实际构建树。
GeeksforGeeks 链接Eg: 2 3 1 2 1 3 Ans = Yes. Eg. 1 2 3 3 2 1 Ans = No.
- DBMS 中的范式。
- 线程和进程之间的区别。此外,在多线程和多处理之间。
- 从给定的二叉搜索树中返回一个随机节点,并在树中找到第 k 个最小值(可以改变结构)
GeeksforGeeks 链接 - 方阵中的螺旋顺序遍历。
GeeksforGeeks 链接 - 在已排序的旋转数组中查找元素。预期时间复杂度 = O(log n)。
GeeksforGeeks 链接
第 4 轮(电话 + 屏幕共享)
他还开始描述我的项目。然后他只问了一个问题。
- 给定一个数组,找出数组中的反转数。GeeksforGeeks Link
通话质量和互联网连接很差。我无法在电话中解释我的解决方案(递归)。
然后我在共享屏幕上写了代码。他让我在一个案例上试运行它。就在我即将试运行时,我遇到了 502 Bad Gateway 错误。尽管如此,他仍然可以看到我的代码并问我一些问题
在我的代码中,例如使用“and”而不是“&&”和声明数组,例如 int temp[n],而不使用 malloc
(特别是:为什么 malloc,如果你可以声明这样的数组?)。后来,我听不见他的声音,所以他决定在这里结束采访。
相关练习题
最大化 1 的数量
亚马逊的所有练习题!