📜  亚马逊面试经历 |第 222 集

📅  最后修改于: 2022-05-13 01:58:39.212000             🧑  作者: Mango

亚马逊面试经历 |第 222 集

能力倾向轮:(1:30 小时)
20 个多选题
操作系统、数学能力和算法等方面的 MCQ。很少有关于指针的输出问题。看看旧的 GATE 论文,你可能会得到一些可见的问题😉

2个编码问题:(关于hackerRank)

  • 给定一个具有正数和负数的数组。重新排列数组,使正数和负数交替
    例如 – 输入:{ -3, 1, 5, 7, -4, -7, -6} 输出:{-3, 1, -4, 5, -7, 7, -6}(问题要求;ed元素的顺序不应该改变)
    在具有 O(1) 空间的 geeksforgeeks 中给出了一个类似的问题,但它使用了不稳定的快速排序概念,因此在许多测试用例中顺序会发生变化。
    我使用简单的方法将数组分成正数和负数两部分,然后将它们一一合并,这很有效。
  • 将一棵树转换为它的求和树
    https://www.geeksforgeeks.org/convert-a-given-tree-to-sum-tree/

面试:
第1轮:

  • 谈了一些我的项目和介绍。
  • 二分查找的一种修改。例如 - 5,5,8,8,9,11,11,13 .. 如果我们给输入 8 那么它应该返回索引 1 即前一个元素的索引到第一次出现
    给定的输入数字。即使找不到数字,它也应该像 input = 12 一样工作,答案应该是 7。
  • 在 N 元树(N 不固定)中创建链接到树中,其中每个节点的子节点都有下一个指针以螺旋方式连接到它的兄弟姐妹。
    同样在 1 级最右边节点的下一个指针应该指向 2 级最右边的节点,并且以螺旋方式向上根的下一个应该指向最左边的子节点。
    我用了两个堆栈来解决这个问题。面试官让我编写代码,我无法完成,但她对我的方法深信不疑。

第 2 轮:

  • 它有简单的问题,也许他们想检查已知问题的编码技能。并且还询问了项目。
  • 给定两个字符串,然后检查它们是否是字谜。 (字符集不仅仅是 26 个字母,它还可以是特殊符号,如 $ %!)
    此外,如果字符串有空格,那么它们也是字谜,如“adf ds”和“addfs”也是字谜。我使用 HashMap 在Java中实现了它。
  • 给定两个排序的链表,将它们合并为一个链表(迭代和递归代码)

第三轮:

  • 告诉我你最喜欢的科目。我告诉过数据结构和算法、数论和密码学。他向我询问了网站页面上可能发生的不同攻击。并问我什么是中间人攻击。也许他只是想检查我对我的领域的了解。
  • 有一个社会有 8 个停车位,有 7 辆车。每辆车都应该停在某个固定的位置,并且需要留下一个插槽。
    示例 – 让 { A ,” “, D, E, B, F, G, C} 成为完美排列。但社会人从不遵守规则,停在任何位置。你的工作是设计一个策略,在一天结束时以最少的交换次数完美地安排汽车。这一轮我只能解决这一个问题。我曾经制定过这样的策略:
    1.我会先找到空槽,然后检查是否有一些汽车应该正确放置在那个位置并交换汽车。
    2. 如果空槽位置正确,我会找到一个放置不当的汽车并将其放置在空槽处,然后重复执行步骤 1,直到我得到完美的安排。

第四轮:

这是与亚马逊团队一起来的主要人物的回合。他从早上开始接受采访,看到我和我的朋友讨论他进行的采访。晚上 7 点 30 分,我的面试即将开始,所以在去电梯房间的时候,他问我是否知道他的任何问题。我老实说,是的,我知道一些。他向我询问了他们和他们的解决方案。一个类似于第一轮的问题 2。另一个是排列列表。他说他现在会提出新的问题😛

  • 再次对二分搜索进行修改:例如:{c,f,k,v} 现在给定元素的输入,我们必须在数组中打印它旁边的元素(即使它不存在)
    Input Output
      a      c
      c      f
      j      k
      v      c
  • 然后他问了我一些关于我具有挑战性的项目的事情。一些我必须在固定期限内提交的项目。还问我是否参加在线编码比赛。
  • 然后他问了一个简单的问题,即找到最大和子数组(Kadane 算法)。我做得很快,所以他问了另一个问题来找到下一个更大的排列。我给出了算法并对其进行了编码。
    • 他问的最后一个问题就像在 github 中一样,当我们保存代码时,它会产生提交点。因此,如果某些代码已被多次保存并且有许多分支被分割然后被合并。我们必须找到两个给定提交点的最小共同父节点。
      它类似于一个链表,它被分割然后再次合并多次。
      AA - B - C (divided in two) - D (merged into one)- -- F - G (divided) --- H - I - J 
                | ---------------------   E          |------------------K - L
      As :
      A - B - C - D  - F - G  ---  H - I - J
                    \      /         \     
                       E              K - L

      我有一个按时间顺序为节点的父母提供的表格,我们也可以直接访问父母。
      例如——在这种情况下
      节点 – JIHLKGFDECBA
      父级 – IHGKGFD,ECCBA NULL

      如果 I/P 为 (H, L),则输出必须为 G。它看起来类似于 LCA 的树概念,但只是对其稍作修改。我讲述了堆栈的概念,我将搜索给定的节点,然后存储在两个堆栈中,并弹出直到我从堆栈中获得相同的值。这个弹出我会根据节点父表的信息来做。
      我无法完成它,但能够展示我的方法并处理了极端情况。他对此很满意。

        • 我建议始终仔细听面试官的意见,如果您有任何疑问,他们肯定会有所帮助。如果您无法编写代码,请至少告诉他们您的方法。练习在纸上写代码。讲述项目时要非常小心。他们可能会对你的项目非常感兴趣,这对你很有帮助。对于亚马逊数组,链表和树是非常普遍的概念。应熟练练习数据结构和算法。非常感谢 GeeksforGeeks 🙂🙂

        亚马逊的所有练习题!