在线技术测试——这一轮是一个在线 Hackerrank 测试,由3 个问题组成,其中1 道简单, 1 道简单中等, 1 道中等。这些都是基于有竞争力的解决方案方法以及良好的 DSA 知识的独特问题。
在这轮中被选中后,我在测试后的 1 周内收到了面试邮件和技术招聘人员的电话。
技术第一轮——这一轮是解决问题的一轮,面试官给出了3 个编码问题( 2 个简单的中等, 1 个中等)。
- 找到具有最大数量 1 的行:给定一个二维矩阵,每行包含 0 和 1,按行排序。找到最大数量为 1 的行。有一个互动讨论从O(n * m) 到 O(n log m) 最后到 O(n + m) 。
- 最小化计算出的总和:给定一个数组,取两个数相加,将和放入数组中,从数组中取出取到的数。将由此形成的总和添加到变量 res。重复此步骤直到数组只剩下 1 个元素并最小化最终总和。我在这里使用了优先队列方法。
- 将两个以LinkedList形式给出的数字相加:同样有后续问题,条件是不允许反转到LinkedList,不能使用额外的空间,我不得不解释所有这些的方法,最后编码最好的。
Technical Round 2 –这一轮也是在上述面试后 1 小时后进行的问题解决轮,面试官给出了2 个编码问题( 1 个中等, 1 个困难)。
- 找出所有具有零和的唯一三元组:给定一个整数数组,找出数组中所有唯一的三元组,使得它们的总和等于 0,i < j < k 并且 i != j != k。从使用循环开始,到 HashMap,最后到排序的最佳方法,我们讨论了每种方法,并按照面试官的要求编写了最后两种方法。
- Stepping Numbers:这个问题和这个问题很相似,从蛮力法开始,最后到了BFS法,面试官在这一点上对我解决问题和思考的能力印象深刻。
技术第 3 轮——这一轮是在第二天进行的,又是一个问题解决轮,面试官给出了2 个编码问题( 1 个中等难度, 1 个困难)。
- 给定一个二维布尔矩阵,其中 0 表示可访问的单元格,1 表示不可访问的单元格,以及两个点 A 和 B。如果我们可以向右移动(⇒ ) ,对角线右上角( ⇗ )和对角右下角( ⇘ )。从 DFS 开始,到 BFS 方法面试官告诉我进一步优化它然后去O(n + m) ,我编码了这个方法,之后他抛出了一个后续问题,说明如果所有单元格都是 0 并且我告诉你进一步优化给定的方法。对于这种情况,我想出了一个O(1) 解决方案。
- 给定一台机器可以在 1 秒内完成每个任务,但如果要连续执行两个相似的任务,则有 k 秒的冷却时间。找出所有任务应该执行的最短时间和执行模式,以便它花费最少的时间。在充分讨论了我向他解释的两种方法的所有场景和优缺点之后,我想出了一个使用优先队列的解决方案。
技术招聘经理第 4 轮–这是与高级招聘经理的技术轮次。他首先简要介绍了他的团队处理哪些域以及它在后端实际如何工作。这对我来说是一次非常平静的讨论,然后他跳到了我过去的实习经历和我建立的项目以及我从事的技术堆栈上。然后最后跳到设计谷歌表上的一个高级设计问题。那里 从数据库的选择、表格和关系的形成到请求的处理,以及构建诸如移动行/列、复制粘贴、协作编辑和优化每个请求的功能,这是一次良好而健康的讨论,在谷歌表中。他还问了一些与我正在实施和讨论的设计相关的好问题。这是一个高度互动且知识渊博的回合,您还可以在 Google Sheet 的系统设计 (https://medium.com/nerd-for-tech/system-designing-google-sheet-bdf12321b99c) 上找到我的博客。
在此之后,我问了他一些与他们试图解决的技术堆栈和问题有关的问题,以及不推出一些我一直很想问的新功能的原因:P。
人力资源第 5 轮——这是关于我的特警分析、我的目标以及我对工作和生活的愿景的正常人力资源讨论。其他一些问题是基于我当前的报价和手头的其他报价。
结果:
2 天后,我接到招聘人员的电话,祝贺我入选,最后,我获得了Swiggy 的全职 SDE-1 职位。