高盛面试经历 |设置 36(校内)
高盛每年都会访问我们的校园进行校园实习和实习。最近,他们的流程变得相当稳定,他们通常在网上进行三部分测试,然后在第 1 天(12 月 1 日)进行面试。我通过校园安置单元申请,入围面试,最终获得了offer(我接受了)。这是我所经历的测试和面试过程的概述。
在线测试:
在 Hackerrank 上举行,您可以在部分之间切换。每个部分都有一个单独的计时器,当你切换时它会停止。一种策略可能是牺牲一些部分(ML,因为它很糟糕)并将这段时间用于其他问题。如果您有一些运气并且适当地管理您的时间,则可以完全完成两个部分。另请注意,GS 不会使用整个测试结果来入围。不同的团队会看不同的东西,所以如果你在一个或两个部分做得很好,你就有很好的面试机会。
CS :
60 分钟,5 个 MCQ,2 个编码问题。每个 MCQ 是 +10/-3,编码问题是 +20,部分评分是 +30(虽然没有具体说明多少,Hackerrank 确实显示通过了多少测试用例)
(30) 点
您将获得一份包含 n 个游客预订的列表(开始日期、持续时间),以及可以同时在该国的游客总数。在处理预订时,您必须检查当前存在的游客数量是否超过允许的数量,如果是,则拒绝预订。 O(n^2) 显然是在给 TLE,有可能在 O(nlogn)
(20) 点
给你一个数字(以字符串的形式)和一个整数 k。您必须输出可以从给定数字形成的最大回文数,并且最多对数字使用 k 次更改(替换数字是唯一允许的操作)。如果不可能得到回文,则输出 -1。
多选题:
- 给你一个 BST(填充了一些 6-7 个值),问题是可以给出多少输入订单,这样你最终得到相同的 BST。 (如,你得到一个输入流,你通常用它们制作一个 BST 而没有平衡等,有多少流会给出相同的 BST)
- 我们希望使用图形着色来解决数独填充问题,方法是将边放在不能具有相同数字的节点之间。此图中的最小节点数是多少?答:810
- 给定一个数字(n 位长),如果该数字是 2 的幂,那么找到该数字的复杂度是多少?答案 - O(n)
- 维护堆栈中的下一个最小元素的额外空间复杂度是多少。Ans O(1)
- n |= n>>1, n|= n>>2, n|= n>>4, ... n|= n>>16, cout<<(n>>1) 的可能输出是什么? 127
毫升:
1 0 个问题,所有 MCQ,每个 +10/-3。持续时间为 30 分钟
- X1 ~ N(0,1), X2 ~ N(2, 4), 什么是KL (X1||X2)
- 令 w 是 Unif(0,theta) 中 theta 参数的无偏估计量。给定 n 个样本,什么是 w 方差的无偏估计量
- X ~ N(0,1)。令 p 表示 x 的 cdf。定义 y 是随机变量,y = s(log(p) – log(1-p))。 y 的 cdf 是多少?答案:1/(1+e^(-y/s))
- 给定向量 (X,Y) 的 n 个样本,什么是 cov(X,Y) 的无偏估计量。选项以 H 为单位,定义为样本的协方差。
- 3 个人爱丽丝、鲍勃和查理。 Alice 可以以 0.2 的概率射击,Bob 的射击概率为 0.5,Charlie 的射击概率为 1。如果他们都以循环顺序射击,那么 Bob 幸存的概率是多少。答案:13/30
- 在词向量的余弦相似度之前应用什么样的归一化(均值,最小值-最大值)。 Ans – 没有,因为它会导致信息丢失(暂定答案)
- 在时间序列中,使用哪种方法进行测试?窗口法、洗牌法或 k 折交叉验证。 Ans – 我认为应该是窗口,因为其他一切都会破坏 dat 的顺序性
- 关于余弦相似度的另一个问题。 MxN 矩阵。根据矩阵的秩是否为 N 和 M>N,相似性是否在 [0,1] 或 [0,1) 之间。 –
- 假设有两个具有偏差 p 和 q 的硬币,您将“事件”定义为在两者中选择一个随机硬币,然后将它们扔三次。给定结果为 {HTT} 和 {TTH},执行一次期望最大化以找到 p、q 的值。从 p = 0.4 开始,q = 0.8
数量:
10个问题。 9 个 MCQ 和 1 个数字类型,都是 +10,MCQ 有 -3,数字没有负数。
- 吸管在 unif(0,1) 中随机称重。骆驼在背部折断前可以承受 1 的总重量。压死骆驼的最后一根稻草的预期重量是多少。答案: 2-2/e = 0.64
- 在骆驼的背被折断之前可以放置的预期吸管数量是多少 Ans : e
- 几何题,给出了钝角三角形ABC(B为钝角)。 D是BC的中点。角度 ADB = 45,角度 ACB = 30。求 tan B答案:-2-sqrt(3)
- 给出了矩阵,第一行的条目是 cos 1,cos 2,cos 3,……等等,对于 n^2 个条目。当 n 趋向于行列式的无穷大时,极限是多少。答案:0( https://math.stackexchange.com/questions/1003453/a-limit-determinant-question)
- M, N 取自 unif(1,100) 整数。 7^m + 7^n 能被 5 整除的概率是多少?答案:0.25
- 考虑到在 n 次抛硬币中观察到 r 次正面,第一次抛正面的概率是多少 Ans:它的 r/n
- A和B互相玩游戏。 P(A 获胜) = 2/3。每轮的失败者给获胜者 1 美元。如果 A 以 1$ 开始,B 以 2$ 开始,他们将玩的预期轮数是多少。答:15/7
- 另一个行列式简化问题,您必须执行基本的 R1 -> R1 – R2 类型操作并提取公共元素。
- 集合的最小长度数,使得存在一个总和可被 11 整除的子集。 Ans : 11 https://math.stackexchange.com/questions/1939620/prove-that-there-is-at-least-one- 11 个数字的子集,其总和可被整除
- x^2 + 2bx +c = 0 – 假设 b, c 是从 [-1, 1] 均匀随机抽取的,这个有实根的概率是多少。 (实际分布)Ans – 2/3
入围名单基于您的简历和考试成绩。根据您在每个部分的表现如何,不同的团队会将您列入面试名单。对我来说,我尝试了 5 个编码 MCQ 中的 5 个正确(并且做错了一个),以及 10 个量化问题中的 9 个(全部 9 个正确)。我在第一个编码问题上得到了一些测试用例,这可能部分给了我更多的分数。 ML 部分完全是垃圾。这足以让我在寻找编码技能(GS 技术)的团队和寻找量化技能的团队中都进入候选名单。
采访:
如前所述,根据有多少团队关注您,您可能有多个候选名单。我进行了 2 次编码面试(由技术团队进行)和 4 次量化面试。我相信每一种,第一个是筛选测试,第二个是选拔测试。我的面试顺序是 Qp/Q1/Q2/Tp/T1/Q3,其中 Q/T 表示 Tech/Quant,p 表示预赛轮,而数字表示特定团队的特定轮次。在每次面试时,试着了解他们所在部门的名称,并尝试向他们询问那里的工作情况。如果您的面试进展顺利,您可能会在多个团队中获得机会,这是找出您最感兴趣的团队的好方法,并尝试在面试中明确这一点。
技术团队:
面试一:
- 说说你自己
- 给定一个链表,你将如何在其中找到一个循环(我告诉他我以前见过这个问题,所以我只是简要介绍了解决方案,然后我们继续下一个)
- 给定一个整数数组,找到最小的缺失自然数。最终不得不给出一个 O(n) 时间,O(1) 空间解决方案,从朴素的 O(nlogn) 解决方案开始
采访的其余部分是对团队的简要概述,他们做了什么。我问了一些关于他们面临的规模的问题。面试官谈到了他正在做的一个项目,该项目是在毫秒内确保全球范围内的同步。这对我来说似乎很整洁,但我已经解释过我没有系统暴露,我更喜欢量化团队而不是技术团队。
面试二:
- 给定一个矩阵,给出一个将矩阵旋转到位的算法。 (响应做垂直+水平镜像)
- 给定一组字符串,找出所有字符串中最长的公共前缀。 (响应按字典顺序对所有字符串进行排序+比较第一个和最后一个字符串。我提到的另一种方法是随机取任意两个字符串,检查它们的 LCP(假设为 A),然后继续检查每个剩余的字符串,设置 A = LCP (A, string_i))
在两次面试中,面试官都会谈论他们的团队。这是提出具体问题的好机会。由于我没有任何数据库或网络背景,我无法真正欣赏他们团队的规模或影响,所以我只是问了一些关于工作等的一般性问题。
量化团队:
面试一:
基本概率谜题。我让他们跳过我遇到的所有谜题,所以这没什么大不了的。
- 解释什么是 PCA。举个例子,会不会一直报线性组合?
- Josephus问题(我不知道这个问题,问的是100,我听错了n,然后在计算100时犯了一些小错误)
- 给定一个随机数数组,局部最小值的预期数量是多少(我最初没有检查端点,并说n / 4,然后立即更正)
- 给定一个多项式x^2 + ax + b,它有实根的概率是多少(a,b取自unif[0,1])(我提到在测试中已经问过了,所以他们问我解决它并展示我所做的)
- 假设一根棍子被分成 3 部分,最大部分的预期长度是多少? (这很简单。找到 X = max(X1, X2, X3) 的 cdf 并积分)
- 假设一根棍子被分成 3 部分,最小部分的预期长度是多少? (这我被卡住了,特别是当被要求概括为 n 休息时)后来被要求评论订单,展示你如何使用不同的方法解决这个问题
面试二:
又一轮概率谜题。同样,主要是简单的东西。我不记得任何具体的谜题,因为这发生在其他采访之间,我几乎处于自动驾驶状态,不知道发生了什么。只要确保你从基础开始处理问题,并一直与面试官交谈。
- 变色龙拼图:http://www.cut-the-knot.org/blue/Chameleons.shtml将其减少到可被 3 整除的形式,他们对此很满意)
- 给定两个抛硬币序列:HTH、HTT,根据预期,哪个抛硬币次数更少? (我最初不知道该怎么做,但经过一番交谈,发现第一次在第三次投掷失败后会重新开始,而第二次会在第三次失败后从第二次投掷中恢复。因此第二次预期的投掷次数会更少)
- 你会说什么是你的力量,并举一个例子。
- 什么是你的弱点的一个例子,这对你有什么影响?
- 你会说你是个人贡献者还是团队成员(并提到没有正确的答案,比如什么!)
面试三:
这更像是一次讨论会。我被问到一个谜题,然后是关于面试官团队工作的讨论。
- 假设机器人从某个整数 X 在实线上开始,并以某个整数速度 Y 移动,并且您可以每秒查询实线上的任何积分点。您将如何在有限步内找到机器人的位置?我首先问是否可以从 X = 0 开始。在这种情况下,很容易弄清楚你必须每隔 i 秒查询一次 i^2,你总能找到机器人。这本质上只是按顺序检查所有整数。现在对 X, Y 的扩展是立即的,您只需要检查 (X, Y) 的元组,这实际上简化为检查序列中的所有有理数(或整数正网格中的所有点)。同样,由于两个序列都是可数的,您可以在有限的时间内找到机器人。
- 给定一堆产量值和肥料使用值,尝试模拟在给定肥料量的情况下产量的样子。这需要一些刺激和大声交谈,最终决定将产量和肥料建模为联合高斯随机变量(Y,F),协方差未知。然后他问我如何估计这个分布的利润(用 P*Y – C*F 衡量)(直接积分)。然后他问我如何找到利润的期望值,假设利润大于某个已知数量(与适当的限制相结合)。然后我们就这个案例中的集成进行了一些讨论(他误读了我的笔迹和符号,并认为我做错了什么)。然后他问我如何从分布中计算给定样本的期望值(计算数量并取平均值)。再次讨论了如何做到这一点,为什么这是准确的,等等。
- 然后他问我,当只能访问从 Unif[0,1] 生成的生成函数时,如何生成这两个联合分布的高斯随机变量。在这里,我要求将其分解为更小的步骤。我解释的第一步是从两个不相关的高斯随机变量生成两个相关的随机变量(Do y = a + p*b,其中 a 和 b 是标准高斯,p 是您需要的协方差)。我习惯于谈论协方差,所以犯了没有正确规范化的错误。他指出了这个错误,我很快就纠正了相关性而不是协方差。然后他问我如何从制服中生成这个高斯,我回答说可以使用逆 cdf 方法。随后又提出了一些问题,他似乎对我的表现很满意。
然后他解释了他的团队的工作,以及他们使用了什么样的模型。这对我来说是一次非常有趣的谈话,我没有意识到这个特定团队的运营规模,我设法问了几个问题,因为它真的很有趣。
面试四:
这是一个谜题,加上一些关于我的弱点和优势的一般性问题,以及关于团队工作的讨论。我记得的一些问题:
- 让我们取 100。你把它分成两部分,比如 50 和 50。让 A1 = 50*50。现在将每个 50 分成两部分,例如 25、25 和 25、25。A2 = 25*25,A3 = 25*25。您基本上对数字进行分区并通过将分区的每个项相乘来构造一个项。这样你就可以构建一个二叉树。现在将您定义的所有术语(所有产品)加起来。证明/反驳无论您在每个节点选择的分区如何,总和都是恒定的。 (我最初被这个难住了,所以我尝试使用 n = 4,n = 5 而不是 100。然后我声称无论值如何,它都可以工作,所以尝试为一般 N 做它并惨遭失败。然后他问我是如何会去证明这样的事情,我说它看起来像归纳。所以现在你基本上可以对形成的二叉树的每个子分区进行归纳。我首先说总和应该是n *(n + 1)/ 2,然后使用归纳能够证明它,从而找到价值)
- 找到数组中的 k 个最小元素(从简单的 O(nlogn) 解决方案开始,然后说它可以改进到 O(nlogk)。他问是否有更好的可能,我说不,因为这可能意味着排序可能比O(nlogn)。不确定这是否正确,但他似乎很高兴)
- 问我是否熟悉 ML 和统计(大错误,ML != 统计推断)。被问到为什么我们通过除以 n-1 而不是 n 来计算标准差。 (不知道答案,所以编造了一些关于平均值本身不是真实平均值的东西,所以我们可能不应该准确估计它。这个需要一堆提示,最后答案竟然是这些行)
- (我当天遇到的最难的问题)给定圆内部三个均匀随机选择的点,形成的三角形包含圆心的概率是多少。 (我首先在两个随机点之间画了一条线,并找出第三个可能相关的位置。这导致我将每个点连接到中心并将这些线中的每一个延伸到圆圈,所以现在你会得到一个角度theta的扇区,其中theta是这两点之间的角度。我说这是相关区域,我们需要整合它。他们问我需要整合多少个参数,我说两者的半径点,以及它们之间的相对角度。然后问半径是否重要,结果并不重要。所以我说答案只是 theta 的平均值,然后我说 theta 的范围从0 – 2pi,修正为 0 – pi。结果是 1/4,面试官对我的解决方案和方法很满意,完全避免了整合)
在所有的 quant 采访中(除了第三次),我还被问到了很多其他的谜题。其中大部分是我之前看到的(用带阴影三角形的正方形平铺,折断棍子并形成三角形,蚂蚁在三角形上碰撞等)。对于所有这些,我要求他们换一个不同的问题。我最初认为这会严重影响我作为候选人,但我现在不太确定。我认为如果你事先告诉他们你已经看到了一个谜题,那会很好。在最坏的情况下,他们会要求你向他们展示解决方案,在最好的情况下,你会得到一个不同的谜题来解决。始终尝试与面试官一起澄清问题的各个方面,不要犹豫,大声思考或给出部分解决方案。他们更感兴趣的是你如何能够从一个简单的、低效的、低效的解决方案转变为一个优化的解决方案。