SDE 的 Commvault 面试体验 | NIT詹谢普尔
Commvault 访问了我们的园区,担任 SDE(C、C++ 开发人员)和 SDET(Python开发人员)的两个角色。
资格标准: CGPA 7.5 及以上。所有分支机构都符合条件。
第 1 轮:这是一个 1 小时 15 分钟的轮次。它有 20 个 MCQ 问题和 3 个编码问题。 MCQ 问题包括来自 OOPS、DBMS 和 OS 的问题。
共有三个中等难度的编码问题。
给定一个值 n,对于所有可能的长度为 n 的二进制字符串,找到其中包含连续字符串的字符串的计数。
例子:
for n=3. Output = 3 ( 110 , 011 , 111)
我们得到一个只有两个字符C 和 D 的字符串。我们需要打印使 C 和 D 交替所需的最小交换。
例子:
Input : CCCDDD Output: 1 (CDCDCD by swapping index 1 with index 4)
找到二叉树中两个节点之间的最大元素。
我完全解决了两个编码问题,另一个部分解决了。本轮过后,约有 25 人入围。
第 2 轮(7 小时编码轮):这一轮从早上 8 点开始,有问题陈述说明,实际编码轮从 9:30 开始。我们应该在 commvault 当局提供的系统上远程编码。我们由我们指定的一位导师持续监控。屏幕共享和网络摄像头在整个过程中都处于打开状态。建议使用良好的互联网连接,因为他们强烈提到在任何时间点都不应丢失连接。
问题陈述:我们需要设计一个基于文件的存储系统,就像我们为任何其他操作系统所做的那样。它会有带有子文件夹和文件的文件夹,我们需要有效地设计它。它应该执行一些基本功能,如创建、删除、更新、链接不同的文件、重命名、创建软链接等。
所有这些都应该使用 OOPS(C++ 或Java)来完成,就像我们定义了类一样,我们需要实现这些类及其功能。在实际编码之前,我们需要首先与我们的导师讨论我们将如何实现这些的想法。经过一番思考,我想到了使用一些基于指针和递归的机制来实际实现这些。然而,对它们每一个进行编码都是一项艰巨的任务,需要整整 7 个小时。如果他们很长一段时间没有取得任何进展,他们就会不断地把人送走。
我们提供了一个像 CPP 文件这样的模板,它具有空的类名,比如类 Directory 和另一个名为 File 的类。我们需要实现这些类及其成员函数。 main函数有一些基本操作,如下所示:
- 创建(路径,内容)
- 删除(路径)
- 链接(路径 1,路径 2)
类似的操作写在 main 里面,我们的程序应该相应地返回正确的输出。
- 我的类使用指向其子目录和文件的指针来访问文件夹的子目录,这些指针允许基于递归的实现,因此每个操作都可以轻松实现。
这就是我在这一轮中进行的方式,但这肯定不是完成这项任务的唯一方法。这完全取决于想象力,以及人们在多大程度上理解问题陈述及其要求。我的一个朋友使用基于尝试的方法来实现此任务。
本轮结束时,只有6人入围下一轮技术轮。
建议:一定要注意问题解释,因为他们会解释每一个操作以及我们在实施时需要考虑的一些极端情况。对于这一轮,我建议不要被问题陈述所淹没,因为这些任务的设计是为了通过思考和对 OOPS 的基本了解来完成这一轮。使用构造函数和析构函数将获得额外的分数,因为它们主要关注 OOPS。耐心是关键。
第三轮(技术面试):这一轮主要考察对数据结构和算法、操作系统和DBMS的基本理解。基本问题,例如 C++ 和Python之间的比较((因为我的项目包括Python),C++ 和Python程序如何编译(重要),我更喜欢什么时候以及为什么等等。这些是被问到的一些特定于语言的问题. 紧随其后的是与上一轮编码相关的问题,解释了我的想法和实现细节。
问了 3 个编码问题,我被要求在编辑器中对所有这些问题进行编码。
压缩两个数组。
例子:
Input: arr1 = [1 , 2 , 3] arr2 = [4 ,5 , 6] Output: [1 , 4, 2 ,5 , 3 , 6]
压缩两个链表
例子:
Input: list1 = 1->2->3 list2 = 4->5->6 Output: 1->4->2->5->3->6
铁路/汽车站所需的最少站台数量。
编码后,我被问到有关线程的问题,线程中的同步问题,如何解决这个问题,CPU调度算法,进程和线程的区别,os中的上下文切换。
建议:一个人应该能够轻松地一次编写无错误的代码。此外,需要判断面试官是立即期待最佳的复杂性解决方案,还是有时间从蛮力开始逐步达到最佳解决方案。修改核心 CS 主题并熟悉它们,因为它们几乎受到每家公司的评判。
第 4 轮(HR 轮):我们 3 人进入了最后的 HR 轮。有一个由 4 名成员组成的小组,他们说这将是一个快速的回合,因为它是在深夜举行的。
我的第一个问题是解释蛇和梯子游戏以及我将使用什么数据结构来实现它。我建议我使用地图,因为我需要将这些有向边存储在我的数据结构中。他们对此很满意。之后,我被问到向量和链表,以及我是否可以使用链表实现向量以及如何实现。在解释之后,有人问我这个实现的缺点。
最后,有人问我一个谜题。给定三个被错误标记为橘子、芒果和混合的罐子。我要通过从罐子里采摘最少的水果来纠正标签。经过一点帮助,我能够解决它。
我是被选为 SDE 角色的三个人之一。第二轮是最有趣和最引人入胜的一轮,人们可以体验如何将我们的编码技能应用于日常问题并有效地实施它们。