📜  SDE 实习的 CommVault 面试经验

📅  最后修改于: 2021-11-17 10:15:23             🧑  作者: Mango

第 1 轮:在预筛选过程完成后开始。几乎所有来自SRM所有校区的学生都进入了这一轮。

所以 CommVault 给了我们 SDE 或 SDET 的选择。我选择 SDE 是因为我只对软件开发感兴趣,不想做任何与测试相关的事情。

第一轮从 Aptitude 和与您选择的编程语言相关的问题开始(在我的情况下是Java,可用的选项是 C++/ Java for SDE,对于 SDET,我们有Java/C++/ Python)。

这一轮是在托管测试的在线平台上进行的,我们使用网络摄像头进行监控。能力倾向问题是基本的和合乎逻辑的。 Java部分,问题有点棘手,大部分都与OOPS的概念有关。整个考试时间为 45 分钟,共 25 道题。

第 2 轮:因此进入第 2 轮,这是一个编码挑战,我们收到了 4 个问题,我能够在运行所有测试用例的情况下解决 2 个问题,并在运行 2 个测试用例的情况下解决 1 个问题。

题目不是很难,但时间限制较少。他们给了我们 65 分钟的时间来解决 4 个问题。这些问题基于图、贪婪方法、链表、动态规划。

  1. 贪婪问题:这是一个非常流行的分数背包问题。
  2. Reverse Linked List in K group:在给定大小的组中反转链表
  3. 动态规划:这个问题类似于楼梯问题,你可以一次走 1 步或 2 步,你必须告诉你要走多少步才能到达目的地。所以问题是:- 有一只青蛙,在他面前有一个N长的湖想过湖,但他一次只能跳近M米。湖中有N-1块青蛙可以跳跃的石头,这些石头相距1米。你必须告诉青蛙到达湖对岸的可能方式的数量。

有一个与图表相关的问题,由于时间限制,我没有阅读。

本轮到此结束。 26 名学生被选为下一轮长编码。长编码回合将持续 4-5 个小时,我吓得要死。

第 3 轮:所以第 3轮是一个长编码挑战。我不知道他们在这一轮中会问什么。我试着在网上搜索,在阅读了所有的东西后,我能想到的就是我做不到。我发现的所有问题看起来都像是要求我们编写文件系统或与 Linux 相关的东西。但实际上,这是一种完全不同的体验。我真的很喜欢这一轮。这一轮确实测试了我的面向对象编程技能和将数据存储到自行设计的数据结构中的逻辑能力。

本轮比赛于上午 8 点 40 分开始。我们被简要介绍了我们将要做的事情。这一轮有26名学生被选中,我们分成三人一组,但任务是独立完成的。

问题是:我们必须设计一个 mp3 播放器。听起来很复杂吧?但是不,我们不必制作任何用户界面或读取任何文件。我们必须设计一个可以存储不同歌曲细节的程序。主要玩家列表,多个播放列表,我们必须对它们执行不同的操作。

好吧,这看起来可能很复杂。这是我所做的。

我制作了一个 Song 类,其中包含歌曲名称、歌曲长度、版权、歌手等属性。创建对象时生成构造函数和初始化值。

为播放列表制作了另一个类。这将有一个 SongName 作为键和 Song 作为其值的哈希图。

为整个逻辑操作制作了另一个名为 mp3Player 的类。

然后有这个 Main 类,作为模板提供给我们,以便我们可以设计缺失的功能。我想这是几乎让我哭的回合。这一轮之后我很沮丧,感觉过去两个月我所做的一切都毫无意义。

所以这一轮是2小时。是的,你没听错,有 2 个面试官,我必须说他们很聪明。我很惊讶,在一家公司工作了这么长时间后,他们记得几乎所有 CSE 核心科目的每一个小概念。

所以当面试开始时,他们让我做自我介绍。然后他们问我关于我的项目。我告诉他们我更喜欢Java不是其他语言。

所以他们问了我这些问题:

  1. 什么是Java编译器以及Java如何运行代码。
  2. Java编译器的名称Java in time 编译器(当时我没有任何线索)。
  3. Java如何支持 OOPS & 什么是 OOPS 原则。
  4. 多态有多少种类型?
  5. 给出运行时多态的真实例子?
  6. 运行时多态与静态多态有何不同?
  7. 继承在现实生活中的使用?
  8. Java和 C 哪个更快?为什么?
  9. 为什么你用Java而不是 C++ 编码?
  10. 我在哪些框架上工作过?
  11. HashMap 在Java?
  12. 为什么我们只使用 Map 而在 Map 的左半部分 m=new HashMap<>();为什么我没有使用 HashMap 而不是 Map?
  13. 迭代器和枚举器之间的区别。
  14. DBMS ACID 属性。
  15. 规范化及其类型?
  16. 什么是死锁?
  17. 进程和线程的区别?
  18. 在这些情况下内存消耗将如何变化,有一个包含 1 个线程的进程和一个包含 0 个线程的进程?
  19. 什么是注解?他们在做什么?
  20. 什么是信号量?
  21. 什么是调度算法?
  22. 什么是有向图和无向图?
  23. 无向图可以是树吗?如果是,需要什么条件?
  24. C中的结构和联合之间的区别?
  25. 我们为什么要使用联合?举出适合使用 Union 的真实例子?
  26. Java的多线程是如何实现的?
  27. 如何确保使用相同函数的两个正在运行的线程不会发生冲突并导致不需要的输出?

DSA(3 题):

  1. 有一个旋转的排序数组。您必须查找该元素是否存在于数组中并返回其索引。如果不存在,则返回 0。此操作应在 LogN 时间内完成。
  2. 这是一个整数数组,您必须找到包含连续整数的最长子数组的长度。返回最长子数组的长度。这应该在 O(N) 时间内完成。
  3. 给定一个整数数组。您必须创建一个大小相同的新数组,该数组将包含下一个更大元素的值,并且在数组的每个位置具有最小差异。

    例如:

    Question=> 2 5 3 1 5 8 34 23 2 
    Answer => 3 8 5 2 8 23 -1 -1 -1