📜  亚马逊面试经历 | 346 组(用于 SDE-1)

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

亚马逊面试经历 | 346 组(用于 SDE-1)

第一轮:

  1. 检查树是否是二叉树或二叉搜索树。
  2. 编写程序输出功率(m,n)。
  3. 给定一个无限长的排序数组,最后是 -1,在该数组中搜索一个值
  4. 提供上述问题的复杂性。

20 分钟后,两个人进入了我的小屋,他们直接开始了技术工作。他们从我的项目开始,我告诉我正在从事支持项目

第二轮

  1. 设计一个具有功能的音乐点唱机
    1)添加歌曲
    2) 删除歌曲
    3) 在任何时间点播放的前 10 首歌曲
    大约 40 分钟,我们使用不同的数据结构(如 hashmap、heap)对此进行了很多讨论。
  2. 二叉树中最长的连续路径。
    我告诉了我的方法,但他们没有得到,然后我编写了递归代码并进行了解释。
  3. 求二叉树中所有左叶的总和。
    最初我告诉了水平顺序遍历方法。他们让我编写代码。他们似乎很满意,但又提出了一个优化空间的问题。告诉了使用后顺序遍历的方法

第三轮:
这个人非常友好。

  1. 将两个排序的链表合并为一个,没有任何额外的空间。
  2. 给定一个二叉树和一个值。问题是找到那个节点的镜像,值总是存在于二叉树中

亚马逊采访

  1. 对于这个 2 的树镜像是 4,对于 1 镜像是 NULL。
  2. 给定一个包含 n 首歌曲的数组,我们只需播放所有歌曲一次。只给定 2 个函数
    1)playsong(songid)
    2)getRandom(n) – 返回 1 到 n 之间的随机值
    告诉 hashmap 方法,他告诉 getRandom() 如果数百万次给出相同的值,那么它很糟糕。所以我修改了我的方法,他印象深刻。

第四轮:
这一轮是和另一个团队的SDM

  1. 在不使用额外空间的情况下分隔列表中的偶数和奇数。
  2. 一种设计问题。给定两天的亚马逊日志文件。他让我找到这两天都登录的用户。使用 Hashmap 进行了讨论,他想进一步优化我使用 trie 给出了解决方案,对其结构几乎没有修改
struct Trie {
    int count[2],
    bool isleaf;
    Trie *child[26];
    Trie() {
          count[0]=count[1]=0;
          isleaf = false;
          for(int i=0;i < 26;i++)
          child[i]=NULL;
    }
};
  1. 他很欣赏我,然后离开了。

第五轮(提高标准)

  1. 讨论了我的项目及其扩展。他给了一些建议
  2. 序列化和反序列化二叉树。
    我使用两个遍历顺序和预购来告诉方法。他让我直接编码,然后我向他解释,但他没有得到我的方法,他不断地问很多问题。最后我告诉使用带有标记的预遍历,他告诉了他知道那个解决方案。

我要感谢我的朋友和geeksforgeeks,他们一直在我身边帮助我,

亚马逊的所有练习题