SDE 的亚马逊面试经验 |校园 2019
第一轮:在线评估轮
在线测试在mettyl平台上进行: 28道技术MCQ和2道编码问题。测试时间为90分钟。
我记得的技术问题是——
1. 使用2个队列实现栈,给定push应该是o(1)和一系列push和pop操作。执行的入队和出队操作的数量是多少
2. int a = (b=6)+(c=8)。 a的价值是多少?
3.有一些关于运算符优先级的问题。
都是 C 和 C++ 相关的问题。如果您了解 c 和 c++ 的基础知识,您将能够解决大部分问题。
编码问题
1. 考虑到给定的各种约束,给定一个带有小写字母的字符串,将该字符串转换为适当的 URL 格式。 (就像 ru 总是域扩展和其他一些约束)
i/p - ftpramgruindex
o/p – ftp://ramg.ru/index
2. 给定大小为 k 的一维矩阵。将其视为 m 行和 n 列的 2D 矩阵(使得 m*n=k)并返回 maxrow-sum 和 maximum-column sum 的总和。
i/p – [1, 2, 2, 3], 2 rows and 2 columns
o/p – 10
面试流程
面试过程包括4次技术面试。每次技术面试主要是基于数据结构和算法。每一轮中提出的每个问题的优化解决方案的代码都应该写在纸上。
技术回合 1:50 分钟
1. 浏览我的项目和成就。
2. 一个与最低平台非常相似的问题
3. 给定一个布尔值数组(大小为 365),表示特定人是否在当天旅行。门票计划是 1 天的费用为 2 卢比,7 天(连续)需要 5 卢比等。我们必须以这样一种方式选择门票,以使所有门票的总费用在整个旅行中最低。 (有点类似于硬币兑换问题)。
技术回合 2:90 分钟
1. 以最有效的方式反转 LinkedList。我们可以在 0(1) 空间复杂度中反转吗?
2. 以 0(1) 空间复杂度检查 LinkedList 中的回文。
3. 在给定每个人的进出时间的情况下,找出一个聚会中的最大人数。
4. 给定一个包含按行排序的 0 和 1 的 2D 矩阵,编写最有效的算法来返回单行中 1 的最大数量。
5. 一个类似于这个画家分区问题的问题。他想要一个 O(k*N^2) 时间复杂度的动态规划解决方案。
6. 讨论我的项目实施。
技术回合 3:60 分钟
1.关于我的项目数据库和后端实现的小讨论。
2. 您将获得有向图的边流。你必须知道循环是在什么时候形成的。 (我的方法是使用不相交集)。他问我是否也可以对无向图实现相同的算法?他让我实现不相交集算法,并通过秩和路径压缩使用联合来提高效率。我们讨论了它的时间复杂性。
3. 向我询问有关 Ford-Fulkerson 最大流量算法的问题。我们讨论了算法的应用、空间和时间复杂性。
4.有一个赢得比赛的码字,一个输入的字符流来了。当输入流形成一个码字时,玩家获胜。找出玩家在什么时候获胜。基本上这是子字符串搜索问题。我用 Z 算法讲述了我的方法,后来我们讨论了 KMP 算法。
5. 关于操作系统的一些简单问题,如信号量、线程、调度等。
技术回合 4:60 分钟
1. 他正在检查我写在简历中的技能。后来他问了我的区块链项目问题。
2. 为 N 叉树的 DFS 的递归求解编写代码
3. 为 N 叉树的 DFS 的迭代求解编写代码。
4. 为无栈的 N 叉树的 DFS 的迭代求解编写代码。
5. 在给定父指针的情况下,为无堆栈的 N 叉树编写 DFS 的迭代求解代码。
判决:选定
尖端-
在听完问题后澄清你的任何疑问,否则你最终可能会解决一个错误的问题,这会给面试官留下不好的印象。即使你知道解决方案,也要先告诉蛮力,然后再优化它。达到优化算法后编写代码。与面试官讨论空间和时间复杂性之间的权衡。如果您花更多时间来解决问题,请不要惊慌,他们希望您这样做。如果您无法提出优化的解决方案,请不要惊慌,而是与面试官就您的方法进行互动,以便他可能指出您出错的地方。告诉他们你的思考过程,而不是直接告诉他们解决方案。亚马逊更加重视实施优化的数据结构,而不仅仅是提出解决方案。因此,请确保您的数据结构实现采用优化形式。保持自信并相信自己的直觉。