亚马逊专访 |设置 10
最近我在亚马逊海得拉巴接受了采访。我只是想分享我的经验。希望有人能从中得到一点帮助。
1. 电话
一种。在二叉树节点中,节点结构中给出了额外的指针->next。在每个级别制作链表。
我使用由双向链表组成的队列来做到这一点。时间复杂度 O(n),空间 O(n)。我也被要求在 collabedit 网站上编写代码。
湾。数组中的平衡点,equiPoint = 第 i 个索引,其中 Sum(Left array) = Sum(right Array)。
它是 O(n) 时间复杂度和 O(1) 空间。我也被要求对其进行编码。
2.电话
一种。在 BST 中找到每一对,它加起来是给定的数字 k。
解释了不同的方法,他让我编写一个代码。
我按照以下方式进行了操作。
无效的findPairs(节点*开始,int k)
{
如果(开始 == NULL)
返回;
查找对(开始->左,k);
如果(k - 开始->数据>开始->数据)
{
if(search(start->right, k – start->data)) // 这个搜索是普通的 BST 搜索。
printf(“(%d, %d), “, start->data, k – start->data);
查找对(开始-> 右,k);
}
}
湾。几乎没有其他简单的问题。我不记得知道。
1. 现场:与招聘经理一起。
一种。关于项目、交叉提问等
湾。两个包含大量数字的文件,每个文件一个。你只有 fopen()、int read(fp)、fclose()、fwrite()。添加这两个数字并仅在给定函数的帮助下写入第三个文件。
向他解释了逻辑,他对此表示同意。
C。编写 sql 查询以获取给定员工的直接和间接报告人。假设员工表(empId,ManagerId)。
写了它,他验证了它,没关系。递归查询,CTE。
d。糟糕的概念,要求用所有可能的例子来解释静态关键字。
用Static关键字一一解释,变量,方法,类。
2. 现场:与开发人员一起。
一种。数组的打印编码。
规则:考虑由给定数组组成的 BST。假设数字 x 存在于 BST 中并到达 x,如果向右打印 1,如果向左则打印 0。
现在给定数组 A 中的索引 i(因此 x = A[i])并打印编码而不构造 BST 以达到 x
并且没有时间复杂度最小的空间。
我不能当场做,但是这次面试后,我有一些空闲时间解决了它,把论文交给了面试官。我喜欢这个问题。有点意思。
湾。在数组中找到三元组,使得 a+b+c = k, k 与数组一起被给定数字。
C。然后开始寻找数组中所有可能的对集合。请注意 SET 一词。也要注意重复。
尽可能降低时间复杂度。
3. 现场:与开发人员。
一种。给定数组,找出加起来等于给定整数 K 的所有可能元素集。
我在短短几秒钟内只用 4-5 行对其进行了编码。很快他就明白了解决办法。
我在一个数组中输入了 6 个数字,并要求我运行我的解决方案直到最后。这是递归的,他让我继续写,写,写,直到他没问题,它会正常工作。
湾。我被问了几个我已经知道的问题,我告诉了他,然后我们继续讨论下一个问题。我不记得他问了什么。
C。树是否为 BST。编码它。
4. 现场:一名经理和高级 SE。
一种。讨论我目前的项目。很好的讨论。花了相当多的时间。
他们问我还能想到哪些功能增强,我在我的项目中做了什么。
我解释了一些我能当场想到的不同的事情,他们很喜欢。
湾。带有“mad”指针和“next”指针的链表,mad 可以指向任何位置(也可以为空)。返回给定此类链表的克隆。
我已经知道最好的方法了。然后他让我想点别的。我提到了哈希。他没问题,我们继续前进。
C。将数组中的元素替换为从元素右侧开始的下一个更大数量的元素。
我告诉他我已经知道这一点,我问他是否要我解释算法。他这么说,我解释。然后我们继续前进。
d。反转链表中的每个 K 节点。
例如 1->2->3->4->5->6->7-_ 给定
输出 3->2->1->6->5->4->7-_
e.两个字符串S 和 S1。从 S 中删除所有存在于 S1 中的字符。
向他们解释了我能想到的所有可能的方法(有空格,没有空格)。最后,他们正在寻找 BitMap 解决方案。在有人提到它之前,我也解释了这一点。
F。设计一个国际象棋游戏。
给出了不同的班级和他们的关系,一些程序,然后交叉提问,我能够给出他提到的所有答案,非常合理。
他们对设计没意见。
在整个面试过程中,我被问到了 8-10 个我已经知道的问题,我也提到了面试官。有人告诉我你为什么读这么多。
总的来说,这对我来说是一次很好的体验。我喜欢面试官互动的方式。他们也非常支持和友好。
不幸的是,我没有被选中。 🙁 我不知道他们在找什么。
亚马逊的所有练习题!