亚马逊专访 |设置 41(校园内)
第一轮有 20 道选择题,涵盖 C 编程、数据结构、算法、数学和谜题,以及网络和操作系统的问题。测试持续时间为 90 分钟,评分方案为 +1,-0.25
它还有两个编码问题。
i)给定一个数字数组,找出可以从数组中的任何一对数字中获得的绝对差的最小值。
ii)查找字符串中第一个不重复的字符。如果没有这样的字符,则返回 -1。
4轮技术面试,没有HR轮。以下是在技术轮次中向我提出的主要问题。我必须首先提出逻辑,与面试官讨论,然后他让我编写代码。
第1轮 -
1)检查给定的树是否是二叉搜索树。很简单的问题。
2) 你得到一个数组,它的每个元素代表塔的高度。每座塔的宽度为 1。开始下雨了。塔之间收集了多少水?
例如。 [1,5,3,7,2] - 那么答案是 5 号塔和 7 号塔之间的 2 个单元。
看起来很简单,但如果你没有好好观察,那么你可能会像我一开始那样陷入错误的逻辑。还有很多可能的极端情况。幸运的是,我能认出它们。
3) 给定一个数组和一个固定的窗口大小 X,你必须从每个窗口中找出最小值。不允许出队。所以我不得不使用 2 个堆栈来完成它。
第 2 轮 –
1)一些DBMS问题,例如数据库如何存储在内存中,图像如何存储在数据库中以及来自它的一些问题。
2)什么是高度平衡树。给出一个 O(n) 的解决方案来平衡它。然后他改变了平衡树的定义——如果特定级别中的每个节点都应该有相同数量的后代(而不仅仅是直接子节点),那么这棵树就是平衡的。每个节点都可以有任意数量的子节点。我必须设计这个类,然后为它编写代码。
3) 给定一个整数数组,找到一个索引,使得如果将数组分成两部分,则两部分元素之和之差的绝对值必须最小。在给他逻辑之后,他将其更改为将其拆分为 3 部分,以使所有部分中的元素之和相等。我不得不编码这个。
第三轮——
1)有一句话你的朋友知道,但是在给你的时候,他把所有的空格都丢了。你必须和你一起字典。你将如何使用它来重构原始句子。
2)如何从循环链表中删除特定节点。
3) 你会得到一个加密的文件。您不知道用于加密它的密钥。就像 A 可能映射到 B,B 到某个 D 和 D 到某个其他 F。但是您不知道这种加密方案。你有字典。你将如何解密文件?我建议了很多解决方案,比如穷举搜索,然后使用一些变体来最小化复杂性。他只给了我一个单词提示——直方图。所以我给了他一个逻辑,计算字典中每个字母出现的频率。然后将文件中最常用的字母替换为字典中最常用的字母。然后将单词与字典进行比较。在不匹配的情况下 - 跟踪并使用第二大等等。我还与他讨论过,在最坏的情况下它也可能具有很高的复杂性,但他继续前进。
4) 什么是 DBMS 中的索引。您将如何实现索引。
第 4 轮 –
1) 树中的一条完整路径是从根到叶。 k-heavy 路径是元素之和大于 k 的完整路径。编写代码以删除不在任何 k 重路径中的所有节点。
2)你有一个数组,它的元素首先严格增加然后严格减少。你必须找到改变的点。
所有轮次中的所有问题都需要尽可能低的复杂性(时间和空间)。我还必须编写最终解决方案的代码。结果终于来了,我被他们选中了。