我申请了SDE1后端职位。整体面试体验还算顺利,面试官很亲切。
第 1 轮:我被问到 2 个编码问题。
- 最大矩形直方图面积(堆栈)
- 给定一个二进制矩阵,您可以向上、向左、向下和向右移动。您必须以最少的步骤将 1 中的每个相邻 0 转换为 1。提供要采取的步骤数。
技术主管开发的第 2 轮:提出了3 个编码问题和 1 个关于系统设计的问题。
-
给定两个数组,如果两个数组中都存在一个值,则可以切换黑白数组,找到最大和。
Input: ar1[] = {2, 3, 7, 10, 12, 15, 30, 34} ar2[] = {1, 5, 7, 8, 10, 15, 16, 17}
Output: 122.
在上面的输入中,由于两个数组都包含 7,在 7 处,您可以从 ar1-> ar2 切换,反之亦然。期望:O(n) 时间和 O(1) 空间
-
给定一个大小为 n 的排序数组,描述一个元素的频率是否大于 n/2。如果不存在,请给出指示。期望:O(log n) 时间
-
有给定值的转换。您将获得作为 2 个转化指标的输入,您需要找到两者之间的转化价值。
例子:
“m” to “dm” is 10, “cm” to “m” is 100 and so on.
Input: from, to (“cm”, “dm”)
Output: value (1000)
我的解决方案:使用有向图,其中一条边的权重为 x,另一边的权重为 1/x。执行 BFS 或 DFS 并乘以该路径的边权重。
-
Bitly 设计: Bitly 是一个 tinyurl 服务。做了一些盘问。我提到了 YouTube 上名为“简化编码”的频道。这很有帮助。
结果:选中