亚马逊面试经历 |设置 287(校内)
亚马逊参观了我们的校园参加 SDE-1。面试过程从一轮在线编码开始,然后是 4 次面对面的面试。所有的面试都是从我的简介开始的。
线上回合:
一场骇客竞赛,有 22 个问题,包括 2 个编码问题和 20 个关于 C、OS、DBMS、网络的 MCQ。
编码问题:
1. 给定一个只有两个元素 '#' 和 '.' 的二维数组. '#' 代表樱桃,'.'代表什么。你能把数组分成两半,樱桃相等吗?您只能水平或垂直进行一次切割。
2. 大小为 k 的滑动窗口。在每个窗口中查找最大值。
无需优化,接受蛮力。
F2F 1(30 分钟,导演 + 技术)
1.你有一个二维矩阵,你必须以螺旋订单形式打印矩阵。需要生产代码。
2. 你用过的最有趣、最疯狂的数据结构是什么。
我说的是分段树。他让我解释一下。为什么要使用它,通过一些例子来解释它,证明它的复杂性。
F2F 2(40 分钟,技术)
1. 你有一个二维数组 (m*n) ,其中每一行和每一列都按升序排序。您必须返回一个已排序的数组(基本上必须对给定的二维数组进行排序)
方法 1- 在 map/set 中插入所有元素。 (O(mnlog(mn)))。
方法 2- 在堆中插入每行的第一个元素(与等长的 sort k 排序列表相同),然后调用 extract-min 并从所需行中插入下一个元素。
复杂度- O(mnlog(m) )
后续问题 - 如果 m>>n 怎么办?
解决方案 - 转置给定的矩阵并遵循与上述相同的过程。
2.给定一个包含正负值的二叉树,你必须找到通过父节点的最大和。 (需要 O(n) 解决方案)。
这两个问题都需要正确的代码。
F2F -3(1小时,技术)
关于操作系统和计算机网络的几个问题。
操作系统 - 多任务、多处理和多道程序之间的区别、虚拟内存、为什么要使用虚拟内存、与虚拟内存相关的问题、分页、分段、多线程、进程和线程之间的区别。
计算机网络 - 当您在 Web 浏览器中键入 www.amazon.com 时会发生什么,服务器如何处理请求,路由如何工作,HTTP 和 HTTPS 之间的区别,TCP 如何工作。
编码问题-给定一个数组,在 (xi,yi) 范围内找到最小元素。查询可能非常大。
首先,我给出了蛮力方法(每个查询为 0(n)),然后我给了他一个段树解决方案。他告诉我要证明时间和空间的复杂性。
后续问题 - 如果我们从段树中删除一些元素怎么办。你如何扩充你的数据结构。
我说我们可以将其更新为 INT_MAX 值,而不是删除。
F2F-4(1 小时,技术)
给定一个由 3 种括号( '(', '{', '[' ) 组成的字符串,为每个括号分配优先级。您必须检查给定字符串是否平衡且有效。
有效的定义 - 较高优先级的括号不能在较低优先级的括号内。
我通过一个 Stack 解决了它。
跟进问题-
找到平衡且有效的最长有效子串的长度。
然后他问你有没有什么问题。
面试技巧——
面试官不想要最优化的解决方案。他们会看到你如何处理问题,如果遇到困难,请与面试官互动,不要直接跳到代码上,大声思考并保持自信。
非常感谢 geeksforgeeks 和其他在线评委。