高盛面试经历 | 2019
第 1 轮:在线编码
这一轮是在 Hackerrank 上进行的。 600-700 名学生参加了考试。本轮由 2 小时的在线测试组成,分为 4 个部分:
第 1 部分:3 个编码问题:
1. 你是一个新闻频道的所有者,你有一个从 0 开始到 M 结束的节目。你有 N 个广告,每个广告都有一个与之关联的有效性值,它以大小为 n 的数组给出' 格式为 [v1, v2, ..., vn]。可以显示广告的时间以 [(x1, y1), (x2, y2), ..., (xn, yn)] 的格式给出,其中数组中的第 i 个元组表示第 i 个广告在第格式(开始时间,结束时间)。如果两个广告之间的最小时间间隔为 4 分钟,则您必须最大化广告的有效性值的总和。因此,如果您选择展示时间为 (1,5) 的广告,那么您无法在 10 之前展示下一个广告。因此,下一个广告 (9,14) 不可能,但广告 (10,14) 可以。约束:m>=xi,yi>=0
例如,m = 20,
广告:[(6, 9), (9, 11), (11, 14), (14, 18)]
有效性值为 [9, 10, 6, 7],
回答:广告 0 和广告 4(从零开始索引)最大。有效性 = 16
2. 另一个 DP 问题:给出了一系列成本。您可以向前跳两下或向后跳一跳。如果您登陆特定指数,则必须将成本添加到总成本中。找出穿过阵列或到达阵列末端所需的最小成本。
3. 高级编码问题:图表。我不完全记得这个问题,因为我没有尝试过。
第 2 部分:基于数据库管理系统、操作系统、OOP、数据结构、算法和数学问题(概率等)的 10 个 MCQ。这部分有负面标记。
第 3 部分:2 个主观问题:
- 写下你在团队中工作的经历,你不是领导者。你的贡献是什么?
- 从下周开始,你有期末考试,下周还有你梦寐以求的公司的面试。你会怎么办?
我可以完成前两个 DP 问题,并且大部分 MCQ 都是正确的。
32名学生被选中进入下一轮。
*也关注多选题和主观问题。它们同样重要。 *
第二轮:F2F
总时间:30-45分钟
这一轮是与一位副总裁一起进行的。他让我自我介绍。然后他转到我的项目和实习。我们讨论了我上次实习的情况,我被要求画出我实习项目的整个管道或架构以及我使用的工具。我的大部分工作都是在深度学习、NLP、数据科学领域,所以他开始问我上述领域的基本问题。
然后他问了我一个编码问题和两个谜题。
编码问题:我得到了一个类似图形的结构,如下所示:
问题:从根开始的每个节点,你可以移动到下一个级别,并移动到相应的连接节点。找到从根到最后一级可以获得的最大值总和。
解决方案:自下而上的 Dp 方法,从最后一层即叶子开始。继续将我们可以从特定层获取的最大值添加到向上层。
公式:特定节点(级别 i)=Max(节点 1 连接到(级别 i+1),节点 2 连接到(级别 i+1))
拼图:https://www.geeksforgeeks.org/puzzle-25chessboard-and-dominos/
还有一个我已经忘记的数学难题,但它与您在 Geeksforgeeks 上找到的难题相似。
尝试解决尽可能多的难题 https://www.geeksforgeeks.org/puzzles/。类似地,或多或少会询问修改过的谜题。
然后他问我是否熟悉 SQL 和数据库。我说我是。然后他让我写两个基本的查询,我可以。询问了一些关于标准化(1NF、2NF、3NF、BCNF)和 ACID 属性的更基本的问题。
最后,他问我有没有什么问题要问他。所以我问了一些我想问的关于公司的问题,高盛的日常工作与其他公司有何不同,等等。
这一轮很顺利。他对我的面试很满意,我也很满意。14人被选中进入下一轮。
第三轮:F2F
时间:1:20 至 1:30
这一轮对我来说是最重要的一轮。面试官问了我一些与我的项目、实习有关的问题,并测试了我的编码技能。我们详细讨论了我的两三个项目。他还致力于深度学习,因此提出了有关不同算法、优化技术、激活函数、不同神经网络模型以及来自 ML 或 DL 的数学问题的详细问题。他甚至问我 Google Colab 是如何工作的,我说我在那里训练了我的模型。他希望我比较和对比不同的方法或算法。他问我最后使用的方法以及我为什么使用它们。
编码问题:
1. 有毒植物 https://www.hackerrank.com/challenges/poisonous-plants/problem
解决方案:https://github.com/abhranil08/Leetcode/blob/master/Stacks/poisonousPlants。Java
2. BST 中的第 K 个最小元素。
解决方案:https://www.geeksforgeeks.org/kth-smallest-element-in-bst-using-o1-extra-space/
预期莫里斯遍历解决方案。
3.实现Trie、Min-heap、Max-heap。我必须在纸上写下实现以及它们不同功能的时间和空间复杂性。
他问了一些关于Java的问题,因为我正在用它编写代码。问题来自 Core Java — OOP 概念、构造函数、继承、多态 — 来自运行时和编译时多态、接口和抽象的输入/输出问题。当我在一次实习中实现 Redis、缓存和 MVCS 架构时,他还向我询问了它。
最后,我们开始讨论我的爱好。他非常友好和合作。
像往常一样,采访以“你有什么问题要问我吗?”结束。作为回答,我或多或少地问了与我之前的采访相同类型的问题。
在我看来,这次采访也很好,增强了我的信心。经过一些提示后,我可以为第一个问题编写一个有效的解决方案。当我朝着正确的方向前进时,他给了我一些我理解的小提示。对于第二个问题,我一开始写了一个幼稚的解决方案,但之后他希望我改进。所以过了一段时间,我写了莫里斯遍历解决方案。我不得不思考并得出解决方案,因此我花了一些时间来编写我的最终解决方案。检查所有编码问题的角落案例。我在第一次尝试中实现了 Trie 和 Heaps。
第 4 轮:与招聘经理的 F2F
时间:30-35分钟
这一轮是由一位高级副总裁进行的。
他不想让我介绍自己,因为他说他们已经讨论过学生。所以他从一些 CS 主题开始:
1.一些常用算法:DFS和BFS的区别; union-find,最短路径算法的区别(Dijkstra's algorithm、Floyd's algorithm、Bellman-Ford、Johnson's algorithm)。
2. LinkedList、HashMap、HashSet在内部是如何工作的。关于自平衡树的问题。
3. 如何解决系统中的 Resolving Dependency 问题?解决方案是拓扑排序。我只需要通过算法。
4. 修正雨水收集问题。他只想要算法。
5. 一些关于线程的基本操作系统问题,两种或三种不同的调度算法,死锁和信号量。他给了我一个关于信号量的问题,还要求我实现一个 LRU 缓存(只是算法)。
然后,一些人力资源问题随之而来:
1. 我可以看到您的大部分经验都在数据科学领域,但假设我不会给您任何数据科学方面的工作,而是在应用程序开发方面,您对此有何看法?
2. 5 年后你在哪里看自己? (我们就我的未来计划进行了很好的讨论。)
3. 我可以看到您在板球比赛中代表您的州,并且您是您大学的队长,您如何为我在高盛的团队带来改变?
4. 我看你的板球和学业都很好地管理了时间,那为什么你的GPA低呢?
5. 我们为什么不雇用你? (对这些类型的问题要诚实,不要糊弄所有的答案。)
6. 当你开始为高盛工作时,你将不得不停止打板球这一事实,你会高兴吗?我说是的,所以接下来的问题是,你花了这么多时间在一项运动上,然后在投资银行工作,你怎么能快乐?
7. 你有什么问题要问我吗?
还有更多的人力资源问题,但这些是最重要的。
在这一轮中,他们主要关注我的沟通方式。对于 CS 主题,我只需要讨论算法,没有被要求编写代码。人力资源问题只是为了检查我的自信程度。我真的从来没有为这些问题做好准备。我诚实地回答了我的想法。
我完全不记得最后一轮有多少学生被召唤了,但并不是所有的 14 个学生都被召唤了。最终选出了4个。
*每个编码问题都要求使用不同的方法,并且期望得到优化的解决方案。在面试过程中大声思考。*
判决:选择。
要记住的事情:
- 不要在简历上撒谎。
- 了解所有常见算法、它们的空间和时间复杂性。
- 在面试中大声思考,从最糟糕的解决方案开始,然后得出你能想到的最有效的解决方案。在整个过程中,让你的面试官知道你是如何接近解决方案的。但不要问愚蠢的问题。提出问题,但在你说话之前也要三思。
- 不要搞砸 HR 问题。说实话。
- 对此,每个人的意见可能与我不同,但高盛不一定要有出色的 GPA。在优秀的候选人中,我自己的 GPA 很低。如果您的 GPA 确实较低,请尝试在简历中包含好的项目、实习或课外活动。
- 沟通非常非常非常重要。这不是关于你的口语技巧,而是你的自信。自信点。
- 从每次采访中汲取经验。每次面试,你都会进步。尽量不要去想你的拒绝或接受。这会让你感到紧张和压力。
- 使用问题“你有什么问题要问我吗?”作为与面试官建立良好关系的机会。