DE Shaw 校外新生面试经历
我是如何申请的?
我通过他们的职业页面 https://www.deshawindia.com/OpenPositions.shtml 申请。
我是通过一个朋友了解他们的招聘的。然后在申请一周后收到了校外考试的邀请。
黑客等级测试:
考试时间为 90 分钟,满分 100 分。测试格式如下:
- 编程部分: 20 分和 40 分的 2 道编程题,限时 50 分钟。
- MCQ 部分:这有 10 个技术问题和 10 个能力问题,每个问题的时间限制为 20 分钟。每个正确答案将获得 2 分,错误答案将获得负 0.5 分。
- 技术问题将涵盖数据结构和算法、操作系统、数据库系统、SQL 和网络。
- 能力问题将涵盖定量能力、解决问题以及逻辑和口头推理。
第一个编码问题很简单,与数组操作和实现有关。另一个是关于查找字符串的第 k 个排列 (k<=1e9)。
第 1 轮:CodePair 第 1.5 轮
经过一个月的测试,我得到了他们的答复。在 CodePair Round 中,面试官让我解决两个编程问题。第一个非常简单直接,它说要找到给定数字可以表示为超过 1 个连续自然数之和的方式数量。您可以找到链接 https://practice.geeksforgeeks.org/problems/count-of-sum-of-consecutives3741/1。
第二个是:给定一个矩阵 (n * m) 和一个位于 (n-1,m/2) 的皇后。找出女王到达牢房的方式数。 (x,y) 的最小移动次数。 (x,y) 有 Q 个查询。皇后可以在一个移动中向八个有效方向中的任何一个移动。允许对 O(n 2 ) 进行预处理,并且应该在 O(1) 中回答查询。
然后对我的项目进行了一次小讨论,并提出了一些关于多态性的问题,虚函数以及其他 OOPS 概念被问到。
第 2 轮:技术轮 1 小时
这一轮也是在 HackerRank CodePair 上进行的。我应该解决一个编程问题。问题是:给予 N 天的股票奖励。每天您都可以购买股票或出售您之前购买的部分/全部股票。也允许一天不做任何操作。
买入股票将被视为利润的负增长,而卖出股票将被视为利润的正增长。找出给定股票奖励 N 天可以实现的最大利润。
示例:[1,5,2,100,3,2]
前三天买入股票 = -1 + -5 + -2 = -8
第四天卖出所有股票 = +100*4
在第五天和第六天不要做任何事情,因为没有办法以更高的价格卖出买入的股票。因此,最大利润 = -8 + 100*4 = 392
我的解决方案:找到每天的下一个最高股票价格,只有在有任何可用的更高奖金时才购买该股票。所以利润将是:
对于第 i 天买入股票 ( – stockPrize[i] ) 并在晚些时候卖出最高股票奖励的股票 (即 +max(stockPrize[i+1,n-1] ) )。给定线性时间的解,可以使用后缀最大值轻松计算此范围最大值。
除了这个编码问题之外,我还被问到了 DBMS、操作系统、项目的问题:
- 什么是综合指数?它是如何工作的?
- 一些使用连接的 SQL 查询。
- 外连接中的条件有什么意义?
- 关于我的项目技术栈的一些问题。
- 关于 ReactJS 的问题,因为我有一些项目和实习。
- React 的生命周期?为什么使用 React?什么是虚拟 DOM?它是如何工作的?等等
第 3 轮:技术轮 1.5 小时
这一轮也是在 HackerRank CodePair 上进行的。设计并实现一个类,该类可用于分配和取消分配一定数量的内存块。该类最初将有一个固定的内存块,仅用于分配内存。说 1024 块。
- 他们希望我思考和设计一个原型,该原型将按照内部内存管理的工作方式工作。
- 讨论可以使用什么数据结构来分配连续的内存块。将使用什么方法以及他们的签名是什么?
- 哪种数据结构最合适,为什么?分配和解除分配功能的复杂性是什么?
您将如何处理可变数量的内存块的情况? - 在我实现类的原型时,他们要求我编写 Copy Constructor 并要求为类重载下标运算符。
- 复制构造函数是做浅拷贝还是深拷贝?如果是 Shallow,那么您将如何将其设为 Deep Copy?浅拷贝有哪些问题?
类设计没有正确或错误的答案。他们只是想判断您如何应用 CS 基础知识来解决问题,您是否能够识别设计中的一些缺陷,并且他们希望您最终解决这些缺陷。
给定一个包含数百万条记录的文件。数据采用结构化格式,即表格格式,每条记录由许多属性组成。
- 鉴于文件存储在辅助存储器中,您将如何对文件执行搜索操作?优化它。
- 如果可以将整个文件带入主存怎么办?
- 排序不是一种选择,因为需要根据不同的属性搜索数据,您将如何最佳地解决这个问题?
- 如果允许在对文件进行一些预处理后存储其他数据结构以执行优化的搜索操作。您将使用哪些数据结构以及它将对最优性产生多大影响?
什么是 Trie 数据结构?解释它的节点结构和工作原理?它的应用是什么?
你将如何优化 Trie 中的内存使用?
一个简单的博弈论问题:给定两个玩家 A 和 B,相隔 N 个牌。在一次移动中,每个人都可以向前移动一到两步。如果玩家 A 开始并且每个人交替和最佳地玩,谁会赢。无法进行任何移动的玩家输掉了游戏。
A _ _ _ _ B 代表 n=4
解决方案 :
如果 n=1 或 2,则 A 一步获胜。因此,n=1 和 n=2 都是获胜状态
n=3,B 获胜,因为从 n=3 我们可以进入 n=1 或 n=2 并且两者都是获胜状态
因此如果 f(n) = 0 如果 B 获胜并且
1 如果 A 赢
f(n) = 0 如果 ( f(n-1)==1 和 f(n-2)==1 )
f(n) = 1 if( f(n-1)==0 或 f(n-2)==0 )
基本情况 f(2)=1 和 f(1)=1 这可以在线性时间内解决。但是如果你写下 f() 的所有值,你会发现如果 n 是 3 的倍数,则它分解为 f(n) = 0,否则 f(n)=1。
一两天后,我接到他们的电话,他们愿意为我提供这个职位。