📜  亚马逊面试经历

📅  最后修改于: 2021-11-18 01:17:08             🧑  作者: Mango

第 1 轮(在 Hacker Rank 平台上编码):

  1. 给定一个字符串数组,每个字符串都有一个 id 和与之关联的版本。带有字母版本的字符串是旧版本,带有数字版本的字符串是新版本。我们需要排列要翻新的字符串,以便旧版本的字符串(带有字母版本的字符串)需要按字典顺序排在最前面。如果排列有任何冲突,则按照 id 的字典顺序排列它们。修改后的字符串需要按照输入顺序保留。
    Example: 
    Input:{a a , c  b , b b, a 1, b 2}
    Output:{a a , b  b , c b, a 1, b 2}

    预期时间复杂度 O(N* log(N))。我能够用堆(C++ 中的优先队列)解决它。

  2. 给定一个二维数组,每个单元格的值分别为 1, 0, 9,其中 1-> land , 0-> sea , 9->obstacle,我们只能在陆地 (1) 中遍历。

    需要找到到达障碍物所需的最小步数(9)。我们只能向右、向左、向下和向上遍历。

    预期时间复杂度: O(M * N) 。我能够用 BFS(广度优先搜索)解决它

第 2 轮(Amazon chime 配对编码 F2F):

  1. 给定一个包含姓名和电话号码的联系人列表,我们需要将具有相同姓名或相同电话号码的联系人分组在一起。
    Example:
    Input :{{abc ,9987},{xyz,9986},{dfg,9987}}
    Output:{{{abc ,9987},{dfg ,9987}},{{xyz,9986}}}

    联合查找算法或深度优先搜索算法适用

  2. 给定一个 Sorted 数组,除了一个数字外,每个数字都恰好重复两次,我们需要找到那个数字https://practice.geeksforgeeks.org/problems/find-the-element-that-appears-once-in-sorted-array0624/1#

    Example:
    Input:{1,1,2,2,3,4,4,5,5} 
    Output: 3

    预期时间复杂度:O(log(N)) 二进制搜索适用

  3. 线程和进程的区别
  4. DNS 服务器机制

第 3 轮(Amazon chime 配对编码 F2F):

  1. 给定数组中的进程 id 和单独数组中这些进程 id 的父进程,以及我们需要杀死的进程 id。找到在杀死给定进程时将被杀死的进程列表。

    例子:

    pid{1,2,3,4,5,6,7,8,9} 
    parentpid{2,0,2,3,3,3,3,4,5} 
    Killing Process: 3
    Output :{4,5,6,7,8,9} 

    在父子进程之间创建有向图并执行BFS(广度优先搜索)

  2. 给定一个链接,改变链接列表如下
    Input:l1->l2->.. ln-2->ln-1->ln
    Output: l1->ln->l3->ln-2...

    通过备用节点将链表分开,我们得到两个链表,将第二个链表反转,然后将它们连接起来。
    https://practice.geeksforgeeks.org/problems/reorder-list/1

  3. LRU 缓存实现的讨论。 (双链表和HashMap)
  4. 亚马逊领导原则问题。 https://www.amazon.jobs/en/principles

第 4 轮(Bar Raiser Round F2F-Amazon chime):

  1. 关于亚马逊领导力原则的几个问题
  2. 给定一个代表 Covid 患者的字符串,我们需要按字典顺序隔离(删除)字符串中的每个字符

    每次隔离的代价等于字符的索引值

    Example 1: 
    Input : aacb  
    Output : 1+1+2+1=5

    使用双链表进行更改,使用哈希图进行字符频率。

第 5 轮(招聘经理-Amazon Chime):

  1. 关于亚马逊领导力原则的几个问题
  2. 给定一个整数数组,找到总和离零最远的对。
  3. 上述问题的一些变化

最后,在 5 轮之后,我收到了一封来自 HR 的邮件,说明了我的选择。