我参加了亚马逊 SDE 全职角色的面试,这是我的经验
技术面试第一轮
- 第一个问题是给定n根不同长度的绳子,我们需要将这些绳子连接成一根绳子。连接两条绳索的成本等于它们的长度之和。我们需要以最低成本连接绳索。 https://www.geeksforgeeks.org/connect-n-ropes-minimum-cost/
例如,如果我们有 4 根长度为 8、5、1 和 2 的绳索。我们可以通过以下方式连接绳索。
- 首先,连接长度为 1 和 2 的绳索。 现在我们有三根长度为 3(1+2)、5 和 8 的绳索。
- 现在连接长度为 3 和 5 的绳索。 现在我们有两条长度为 8(5+3) 和 8 的绳索。
- 最后将两根绳子8+8连接起来,所有的绳子都连接好了。
连接所有绳索的总成本为 3+8+16 = 27。
我告诉他使用优先队列的解决方案,也可以使用最小堆来实现,所以他让我通过实现整个堆函数来编写代码然后他问我代码的时间复杂度,堆的所有函数,为什么堆的时间复杂度是 log(n) 并解释它们的每一个代码函数。我能够编写代码并解释时间复杂度,但他问为什么插入、删除的时间复杂度是 log(n),我告诉他因为堆的最大高度将是 log(n)(其中 n 是堆的大小),每个级别的元素计数将加倍,然后下一个,因此第一级将有 1 个元素,然后下一个最多 2 然后 4 像这样,最后一个元素将有 2^h 个元素
2^h=n
h=log(n)
这样,最大高度将是 log(n) 但他似乎并不满意,也许我没有得到他的问题,所以他告诉我我们将转到下一个问题,然后我们将讨论这个问题。
- 下一个问题是强盗计划抢劫房屋,所有房屋都以树的形式连接。每栋房子都藏有一定数量的钱,阻止强盗抢劫每个房子的唯一限制是连接的房子有安全系统,如果两个连接的房子被抢劫,它会自动联系警察。你必须找到劫匪在不报警的情况下可以收集的最大金额
我正在考虑解决方案,并且我正在与面试官讨论我的解决方案我偏离了轨道,但是面试官很有帮助他给了我测试用例,我的逻辑会失败并给了我一些提示,所以我想出了一个递归解决方案,而且他对解决方案也很满意。他问我关于时间和空间复杂度的问题。
技术面试第二轮
- 项目的讨论。
- 然后他问我编码问题给定一棵二叉树,二叉树中的一个目标节点和一个整数值 k,打印出与给定目标节点距离为 k 的所有节点。没有可用的父指针。 https://www.geeksforgeeks.org/print-nodes-distance-k-given-node-binary-tree/https://media.geeksforgeeks.org/wp-content/uploads/20210506121359/BinaryTree4-300×258。 PNG
Consider the tree shown in diagram Input: target = pointer to node with data 8. root = pointer to node with data 20. k = 2. Output : 10 14 22 If target is 14 and k is 3, then output should be “4 20”
我告诉他逻辑 O(n) 解决方案。
- 然后讨论实习项目为什么只使用这种方法等等。
- 你已经给出了一个歌曲列表,你必须随机播放歌曲,你将如何实现它们。
我告诉他我将使用随机函数找到一个随机数,然后用列表的大小对其进行修改以找到从 0 到大小的索引,然后我将播放与该索引对应的歌曲。
然后他告诉我歌曲不应该重复,然后我告诉他将当前歌曲移到列表的末尾,然后我会减小大小,这样我们就不会考虑我们可以使用向量的最后一个元素。
技术面试第 3 轮
- 这是技术和行为方面的回合
- 你有没有遇到过紧迫的最后期限你是如何处理的
- 任何困难的情况
- 你如何处理工作场所的冲突(与团队或经理)
- 您收到经理负面反馈的时间
- 告诉我你承担的最大风险
- 给定火车的结构,给定火车的到达和离开时间以及最初,如果两列火车重叠颜色将变为蓝色以实现该函数,则每列火车现在将具有绿色。这个问题的变体 https://www.geeksforgeeks.org/minimum-number-platforms-required-railwaybus-station/
列车结构
C++
struct train { string color; int arrival_time; int departure_time; }
首先我告诉他基本的 O(n^2) 解决方案,然后我告诉他 O(n) 解决方案,他让我编写 O(n) 解决方案的代码。
提示:-
- 继续要求澄清问题和边缘情况。
- 尝试与面试官讨论你的方法并大声思考,面试官会帮助你。
- 跟踪所有边缘案例并询问您的面试官。
- 如果面试官无法理解您的方法,请尝试在伪代码的帮助下进行解释。
- 不要做出自己的假设,告诉他们您正在做出这些假设,如果他们对此表示满意,则仅继续执行您的解决方案。
- 希望这会有所帮助,祝你好运……
结论:选中!
感谢 GeeksforGeeks 在整个准备过程中帮助我,我从 GeeksforGeeks 完成了完整的准备工作。