📜  2021 DE Shaw 暑期实习面试体验 |校内 VIT Vellore

📅  最后修改于: 2021-11-10 06:53:43             🧑  作者: Mango

DE Shaw 于 2020 年 8 月 21 日访问了位于 Vellore 的 VIT,担任质量与测试工程实习生的职位。该职位是在 2021 年夏季为 2022 年批次(第 3 年)学生提供的两个月。他们从校园里挑选了2名实习生。我被选中担任这个职位,所以我想我可以帮助其他像我一样对这个过程感到好奇的人。

资格标准:

  1. X 和 XII 的 70% 或 7.0 CGPA
  2. 攻读学位的GPA 7.0(CS / IT相关分支)
  3. 8.0 CGPA(ECE / EEE 相关分支)
  4. 无拖欠

选拔过程包括三轮。

第 1 轮(出现 1500 多人):此轮是在hackerrank 上进行的。这是一个编程和 MCQ 测试,138 分,时间限制为 95 分钟。每个错误答案都将带有该问题 33% 的负面标记。测试的格式如下:

  • 能力倾向部分:28分钟14题(也包括2套3题)
    除了一个问题,我能够解决所有问题,这些问题是定量推理和一般能力的混合。
  • 技术部分:17 分钟 12 题
    本节包括伪代码问题、一般编程概念、SQL 问题以及一些基于数据结构和算法的问题。我能够自信地尝试其中 12 个中的 10 个。我没有尝试其他两个来代替负面标记
  • 编码第1:1 个问题 20 分钟
    问:给定一个正整数数组,找出仅由素数组成的子数组的数量。
    例如 – [2,3,1,7,2] –> 子数组将是 [2],[3],[2,3],[7],[2],[7,2]。所以答案是6。
  • 编码第2部分:1 个问题 30 分钟
    问:这个问题很长,有很多不必要的东西,比如灭霸要摧毁行星,但要点是——
    给出了两个数组,一个二进制数组 A(仅包含 0 和 1)和另一个长度相同的成本数组 B。您必须以最低成本将二进制数组转换为全 1。对于数组 A 中的每个i元素,从 0 转换为 1 需要 B[i] 成本。如果 A[i-1] 和 A[i+1] 为 1,则 A[i] 可以以 0 成本进行转换。找出将所有 0 转换为 1 的最小可能成本。

    我通过了问题 1 的一些测试用例,但无法通过问题 2 中的任何一个。
    但幸运的是,因为我在其他两个部分的表现,我被选中进入下一轮。

第二轮(17人入围):本轮定于8月21日至22日(同日次日)。对我来说,原定于 22 日进行 1 小时,但持续了 1 小时 30 分钟。有两个面试官,超级友好和支持。

这一轮是在hackerrank的CodePair平台上进行的,您可以在该平台上同时与招聘人员共享您的IDE和视频聊天。招聘人员也可以查看您的 IDE 并编辑代码。

它从一般的面试问题开始,比如自我介绍。然后他们问我之前是否有过实习经历,我在我的个人资料中描述了 2 个实习。然后我被问到我的项目。招聘人员对一个复杂的项目产生了浓厚的兴趣,我花了 10-15 分钟来解释该项目本身。

然后我得到了一个开放式的小问题来解决:

  • 给定一个由 ‘\d’、’\w’、’$’、^’、’+’、’*’ 组成的正则表达式(其中正则表达式符号具有它们通常的含义)。我被要求为任何给定的正则表达式输入生成尽可能多的字符串。

由于这个问题有点含糊,我问输出到底应该是什么,我被告知在开始时打印 50 个与正则表达式匹配的字符串,但最终他们要求打印尽可能多的字符串类型。在开始编写代码之前,系统会要求您解释您将如何解决这个问题,因此我将其分为两部分。

首先是标记不同的符号并将它们存储在包含 [[symbol,modifier],[symbol, modifier]…] 的向量向量中,其中符号是 1,2,3,4,代表 ‘\d’,’\w’, ‘$’,^’ 和修饰符是 1,2,-1 代表 ‘+’,’*’,没有任何修饰符,这意味着正好是一个字符。

我被告知首先只编码我所做的标记部分,当我这样做时,招聘人员非常支持提供不断的反馈,并尽可能修复我的一些错别字。

我随意选择用’1’s和’a’s来制作字符串,以简化问题。

此外,我创建了一个字符串向量 res 用一个空字符串对其进行了初始化。如果第一个符号不是 ‘^’,我将 4 个字符串’a’,’1′,’a1′,’1a’ 添加到向量中。我循环遍历标记向量(包含符号、修饰符的 2d 向量)并将 appendVal 设置为等于 ‘a’ 的 \w 和等于 ‘1’ 的 \d。然后对于 res -> 中的每个字符串s -> 如果 * 是修饰符,则添加另外两个字符串s+appendVal 和 s+(appendVal*2),对于 ‘+’ -> 修改 s=s+appendVal 并添加 s+(appendVal*2) ,如果没有修饰符,我只是设置 s=s+appendVal。在遍历整个标记后,我检查了最后一个元素的 ‘$’ 如果它不存在,然后将 s+’1a’,s+’a’,s+’1′,s+’a1′ 添加到 res 向量。

面试官很满意。然后他们问我我的方法的缺点以及我没有像其他字母和更长的字符串那样涵盖哪些测试用例。面试以一般的闲聊结束,然后他们问我是否有任何问题。

我被告知我在 5 小时内入围下一轮。

第 3 轮决赛(7 人入围):与第 2 轮(8 月 22 日)同一天进行。形式与第 2 轮相同。但问题更多、更棘手。这次的面试官不像第一轮那么友好(可能是因为我是当天的最后一次面试),但他们仍然纠正了错别字并在我编码时提出了建议。它也被安排为 1 小时,但持续时间稍长。

这次他们没有在介绍上浪费太多时间,而是直接开始提问。我被问到 3 个问题 ->

一季度。要点是 – 给定一个字符串数组 A,找到具有最大长度的字符串,其中每个前缀字符串存在于该数组中。例如 – 对于 [‘a’,’ab’,’abc’,abcd’,’aaaaa’,’aabsd’] 答案将是 ‘abcd’,因为 ‘a’,’ab’,’abc’ 存在于数组中。

这一次只花了我不到 10 分钟。我首先使用 hashmap 存储所有字符串。然后对于每个字符串,我使用哈希映射检查前缀子字符串是否存在,并返回最大长度的字符串。

Q2。游戏的最优策略
我首先给出了基本的递归解决方案,然后我才能修复一些错误并优化他们满意的解决方案,因为他们只关心我是否理解该方法并给了我下一个问题。

Q3。这是一个出租车问题,要点是 -> 给定pickup points , drop points 和tips 数组,每个i元素代表从pickup[i] 到drop[i] 的一次行程,这将赢得司机drop[i]-pickup [i]+提示[i]。并且对于每次旅行,下一个上车点应该大于或等于最后一个下车点。

我讨论了各种可能性并解释了可以采取的不同方法,面试官给出了一些建议,一些好的,一些误导,以检查我如何回应。但经过一些讨论,我得出的结论是,动态编程将是一条正确的道路。面试官一副想结束面试的表情,因为已经过了时限,所以我赶紧上代码,一边写一边解释我在做什么,解释了DP的做法。我的代码结构良好,但它出现了段错误,在我修复它之前,他们说这对于面试来说已经足够了,并问我是否有任何问题。我只是要求对我的表现以及如何进一步改进提供一般性反馈。

我在 23 日(第二天)早上从我大学的安置小组收到一封邮件,其中有 2 人被选中,我就是其中之一。 🙂