亚马逊面试经历 |设置 266(SDE1 校外)
笔试(在 Hackerrank 上)
90 分钟内解决 20 个 MCQ 和 2 个编码问题
1)下一个排列:具有相同数字集的下一个最大数字。
例如:I/P:123,O/P:132
2) DFS + DP 标准题。我不记得确切的问题陈述,但它是相当标准的,需要 DFS+DP 解决方案。
第一轮(电话)
1) 给定一个由 0 和 1 组成的数组。您可以将任何一个 0 翻转,以最大化一个的连续数量。
2) 仅给定二叉树的一个节点,在 O(1) 空间中找到下一个有序后继。树根不明。
正如他告诉假设除了根的位置之外的任何东西,为了解决这个问题,我假设 Treenodes 还包含指向它们各自父级的父级指针。
第二轮(F2F)
1)给定一个二叉树。垂直打印其元素。使用水平距离概念和哈希图解决了它。
2)上述问题的变体,不允许使用Hashmap。讨论了很多方法。在经过大量讨论和变体后,他应用了不使用任何散列的约束,提出了作为节点列表的双向链接列表的解决方案。由于我不允许使用散列,我要解决的变体是维护一个指向双向链表的全局指针,将它向左移动到当前树节点的左子节点的双向链表中,并向右移动当前树的右子节点-节点。
第三轮(F2F)
介绍和实习相关的讨论,然后是这些技术问题
1) 给定一个有序整数流。输入向量的大小未知。找到一个给定的整数。预期的复杂性;对数(n)
提示:在二分搜索方法中使用 Perfect Square 作为开始索引和结束索引。
2)上述问题的变化,因为我们不知道终点。假设我们有一个函数,如果阈值索引(输入向量的大小)返回 NULL
已经越过了。现在改进上述解决方案来处理此案。
例如:让我们假设数组大小是
3) 主题相关问题:TCP v/s UDP、虚拟内存、密码学等
4) 设计一个音乐播放器,它以随机顺序播放歌曲而不重复。提供 O(n) 时间和 O(1) 空间解决方案。
第四轮(F2F)
简介,项目相关问题,然后是:
1)给定k个排序的链表。将它们组合成一个排序列表。
使用自定义最小堆方法来做同样的事情。
2)针对上述问题实施自定义最小堆。
3) 打印距二叉树中给定节点距离为“k”的节点。
第五轮(电话)
1)介绍和项目讨论。
2)将给定的整数转换为罗马数字格式,但使用最少数量的条件语句。想了很多办法,
他对任何方法都不满意,并要求尽可能多地删除条件语句。
3) 给定一个由 0 和 1 组成的数组。找到具有相同数量的零和一的子数组的最大大小。提出了 O(n) 时间和 O(n) 空间的解决方案。