📜  亚马逊面试经历|设置 261(对于 SDE1)

📅  最后修改于: 2021-09-23 05:43:01             🧑  作者: Mango

我有大约 1 年零 9 个月的经验。

电话面试:
首先是对我和我的工作的简要介绍。然后他问了我一个编码问题

1) 给定一个链表,例如:1->2->3->4->5->6,做如下修改 1->6->2->5->3->4
很容易,但很长。不得不编写生产级代码。

2-3小时后,我收到了亚马逊校园内部面试的邀请:

第 1 轮:面 2 面
首先是关于我以前的工作和项目的讨论。讨论结束后,他提出了以下技术问题:
1) 给定一个前序遍历,构造一个二叉搜索树。

简单的解决方案。要求我编码。

2) 给定一本外星字典,找出字典中字母的顺序。
只需要方法。我向他解释了方法,他很满意。无论如何,这是代码的链接:
https://www.geeksforgeeks.org/given-sorted-dictionary-find-precedence-characters/

3) 以最小成本连接 n 根绳索

我被要求为上述问题编写生产级代码。

第二轮:面对面
面试再次以讨论我的项目开始,然后他问了一个技术问题。
1) 给定 m 个具有 n 个元素的排序数组,将这些数组合并为一个大小为 m*n 的排序数组
我之前确实听说过这个问题,但从未真正看到过优化的解决方案,所以我给出了一个 O(m*m*n) 解决方案。他让我优化它,但我做不到,因此他让我编写 O(m*m*n) 解决方案。我花了很多时间来编码它,因为我想处理所有的边缘情况。最后我编码了它。他没有发现任何问题,但他要求我改进。然后我建议使用堆来获得所有 m 个数组中的最小值。

很多关于为什么堆和为什么不 BST 的问题。请我用数学方法证明它。
但是一旦我使用堆给出解决方案,他就很满意。

第 3 轮 Bar Raiser:电话
讨论我以前的项目并问了一些行为问题,比如你为什么离开现在的公司,与你的经理有冲突等

技术问题:
1) 找出数组中先递增后递减的最大元素

2) 在数组中找到毕达哥拉斯三元组
给出一个 O(n3) 的解决方案,然后使它成为 O(n2logn)。他让我进一步优化它。
最后想出了 O(n2) 解决方案。

3) 给定一个不能存储在变量中的非常大的二进制数,确定二进制数除以 3 的十进制等价物的余数
我对这个问题一无所知。他给了我一个提示,我用它来解决它。但后来,他让我找出任意数 k 的余数。他再次给了一个提示,我能够解决它。

基本上,当我们将一个数字附加到一个二进制数时,前一个二进制数会加倍,因此余数也会加倍。

For example :     101  -> 5
          1010 -> 2*5 + 0 = 10
              1011 -> 2*5 + 1 = 11
        
If k = 3 then  
    5 = 1*3 + 2
    2*5 = 2*3 + 2*2 
Hence the remainder will be
(2*2 + 0)%3 = 1 for 1010

Similarly for 1011 the remainder
will be (2*2 + 1)%3 = 2 

通过跟踪前一个二进制数的余数,可以确定当前的余数。

第 4 轮招聘经理:面对面
行为问题以及有关我以前项目的一些问题。
然后他给了我一个技术问题:
1)给定一个数字,比如“1234”,用单词返回数字,即一千二百三十四

能够覆盖所有场景。他对我的做法很满意

建议:
大声思考并自信。如果你一开始不知道答案也没关系。他们主要看你如何解决你不知道解决方案的问题。

感谢 geeksforgeeks。你们做得很棒。

亚马逊的所有练习题!