Oyo Rooms 面试体验(SDE 校内)
第 1 轮(在线编码轮):这一轮包括 20 道 MCQ,来自数据结构、算法、基于输出的 C 程序、操作系统、DBMS(SQL 查询)和一些能力问题。有 2 个编码问题如下:
- 第一个问题很简单“数组中的最大和子序列不取相邻元素”。 https://www.geeksforgeeks.org/find-maximum-possible-stolen-value-houses/
- 第二个是基于可视化的问题。给出了与点 (1, 1) 对角线相对的“n”个点,形成边平行于轴的矩形。此外,还有 'r' 个建筑物,其坐标 (xi, yi) 及其高度 (hi)。我们必须找出矩形内所有建筑物的最大高度。在第二天进行的下一轮面试中,共有 32 名学生从 150 人中入围。那些能完全答对一题而在第二题中得到部分分数的人被选中。本轮在 HackerEarth (2hrs) 举办
第 2 轮(技术第 1 轮 F2F):面试从简历的基本介绍开始,面试官要求我解释我在大学期间所做的一切。然后他开始了一个这样的问题
- 给定一个尺寸为 (L x R) 的矩形表。我们还得到了一组数字对 (Xi, Yi),它们是我们可以在纸张上执行的切割尺寸。问题是“我们如何以最佳方式继续切割矩形板,以便最后留下最小的未切割区域?”可以多次选择阵列中的相同切割尺寸。我想到了 DP 中的 tile-problem,并开始思考它。向他解释了我的递归方法,他似乎并不满意。我无法完全得到解决方案。他的暗示很少。然后他继续第二个问题。
- 给定一个整数数组和 k=3 的值。在每个大小为 k 的子数组中找到最大值。我从蛮力方法开始,并开始使用滑动窗口方法对其进行修剪。然后我使用双端队列进一步优化它。他要求为该方法编写代码。在边缘情况的一些帮助下,我编写了工作代码。这一轮进行了大约 1 小时 20 分钟。
33名学生中有18名被选为下一轮。
第 3 轮(F2F 技术第 2 轮):面试官从通常的“介绍一下你自己”开始,然后深入了解我从事的项目和技术。后来,他继续提出一些算法问题:
- 给定一个整数数组,在当前元素的左右两个元素的索引之间的所有绝对差中找到比它小的并且离它最近的最大值。
例如:数组:{2、3、5、1、3}
对于索引 1 (3) 处的元素,2 小于右侧的元素,其索引 i=0。然后 1 小于右边的它,并且是最近的索引,j = 3。所以对于元素 3,diff = abs(ij) = |0-3| = 3. 对所有元素执行此操作并找出最大值并打印出来。经过思考,我得出了蛮力(O^n2)解决方案,方法是对中的所有元素移动到元素的左侧和右侧数组。这是无效的。因此,我很快意识到“最近”的重要性,并按照使用堆栈来维护顺序的思路进行了思考。我使用了两个堆栈 lstack 和 rstack 来存储最近的索引。https://www.geeksforgeeks.org/find-maximum-difference-between-nearest-left-and-right-smaller-elements/
- 给定一个整数数组,在小于 O(n) 的时间内找到峰值元素。
https://www.geeksforgeeks.org/find-a-peak-in-a-given-array/
这一轮之后,他们从 18 人中选出了 6 人。