📜  高盛面试经历 | 1.5 年以上经验

📅  最后修改于: 2022-05-13 01:58:24.785000             🧑  作者: Mango

高盛面试经历 | 1.5 年以上经验

我接到了 GS HR 的面试电话(通过 Naukri 或其他一些工作门户网站)。这个过程有 9 轮,都是技术性的,大约需要 2 个月才能完成。我的个人资料是分析师和角色Java开发人员。

第 1 轮(HackerRank – 在线):

提出 2 个编码问题 - 1 个简单,1 个中等。

时长 : 90 分钟

  1. 给定一个数字范围 [x, y] 和一个整数 q。将范围内的所有数字乘以 q,并返回与得到的对应乘积不具有相同数字的所有数字的计数。
    例如,如果 x=10,y=12,q=2。那么10、11、12对应的产品就是20、22、24。
    计数将为 1,因为只有 22 具有与 11 不同的数字。
  2. 0/1 背包问题。另一个补充是您必须告诉所有项目都选择了最佳解决方案。 https://www.geeksforgeeks.org/printing-items-01-knapsack/

我两者都做了,但我认为 1 个问题也足以应付下一次通话。

第 2 轮(Coderpad 1- 电话):

关于 coderpad – 它是一个在线工具,您和面试官之间共享屏幕,您必须运行和调试您的代码。

2 个编码问题 - 1 个简单,1 个中等。

时长 : 60 分钟

  1. 有几个学生围成一圈坐着。每个学生都被分配一个卷号(1 到 n)。有一位老师被赋予了初始卷号,他必须删除具有初始卷号的学生。然后必须从被移除的学生开始移除处于该位置的学生。您的函数应该返回最后一个学生离开。
    示例:2、3、1、4、5 以 3 开头,去掉 3,再去掉 5,再去掉 1(按圆圈),再去掉 4。 Ans – 2。问题类似于 https://www.geeksforgeeks。 org/josephus-problem-set-1-a-on-solution/
  2. 给定学生在不同科目中的分数的列表,找到平均分数最高的学生。

我做了两个问题。你必须通过所有的测试用例。面试官很想知道思考过程以及你的调试技巧。

第 3 轮(Coderpad 2- 电话):

所有约束与上述回合相同。这次面试官来自纽约。

  1. 两个排序数组的中位数(没有额外空间)。链接 - https://www.geeksforgeeks.org/median-two-sorted-arrays-different-sizes-ologminn-m/
  2. 给定一个日志文件,每一行都以某个 IP 地址开头,找出最常见的 IP 地址。

两个问题都做了。

coderpad 回合的提示:

  • 继续与您的面试官交谈,以便在您遇到困难时可以帮助您。
  • 他可以抛出新的测试用例、扩展问题或者可以要求优化代码。为此做好准备。
  • 多花点时间也没关系,我多花了将近 10 分钟,面试官对此很好,但你必须通过所有测试用例。
  • 如果您的代码在第一次尝试时没有运行,请保持冷静。只需使用常用技术对其进行调试。
  • 根据我的经验,一旦你破解了这些回合,破解其他回合就容易一些。

第 4 轮(电话):

这一轮是最简单的。 4个问题。 60 分钟。

  1. 给定一个由 pos 和 neg 整数组成的数组,返回元素,删除剩余元素的乘积最大的元素。
  2. 检查二叉树是否平衡。为 O(n) 优化它。链接 - https://www.geeksforgeeks.org/how-to-determine-if-a-binary-tree-is-balanced/
  3. 哈希图是如何工作的?如果您不覆盖自定义类的 equals 和 hashcode 方法会发生什么?
  4. 给定 2 个字符串,检查一个字符串是否包含另一个字符串作为子字符串。链接 - https://www.geeksforgeeks.org/check-string-substring-another/

我必须为问题编写代码 - 1、2 和 4,然后逐行背诵它们(我知道这很有趣)。

接下来的 5 轮是现场轮次,每轮由 2 名面试官进行,时长 60-75 分钟。

第 5 轮(F2F):

  1. 有 5000 万用户访问高盛网站,您将如何减少人工支持,即如何使支持系统自动化?然后是一些后续问题。
  2. 项目讨论 - 30 分钟(他们是非常聪明的人,我真的很喜欢和他们的讨论)
  3. 给定一个数组,找到最大的递减子数组。为它写代码。现在数组是循环的,为此修改您的代码。时间复杂度讨论。类似于 - https://www.geeksforgeeks.org/longest-increasing-subarray/
  4. 给定一个堆栈,找到 O(1) 中空间复杂度最小的最大元素。链接 - https://www.geeksforgeeks.org/design-a-stack-that-supports-getmin-in-o1-time-and-o1-extra-space/

第 6 轮(F2F):

这一轮由 2 位资深人士参加(其中一位现在是我的经理:P)

  1. 如果您正在编写一个自定义类并想为其实现 hashmap,您将处理哪些事情?
  2. 有一个员工类,你将如何为此编写 hashcode 和 equals 方法?
  3. 如果要获取emp id对应的员工详细信息,你会如何存储呢?现在如果你想要与emp name对应的数据你会怎么做?现在你想要两个功能,提供一些优化的技术。还有一些后续问题。
  4. 在Java中实现一个自定义迭代器 - 有一个列表列表 (List>)。编写 hasNext() 和 next() 方法,如果主列表中的下一个列表存在某些元素,hasNext() 方法应该返回 true,并且 next() 方法应该返回该元素。示例:list – [[1, 2, 3], [4, 5], [6, 7]] 那么您的自定义迭代器的 next() 应该在 3 之后返回 4,在 5 之后返回 6。同样,hasNext() 将返回 false才 7 岁。我不得不编写生产级代码。
  5. 为什么是GS?

第 7 轮(F2F):

  1. 给定一个单词之间有错位空格的话语。例如,“我是印度人”看起来像 - “我是印度人”。您必须找出如何从中得出正确的话语。你只会得到一本包含所有可能的英语单词的字典。他只对我解决问题的方法感兴趣。
  2. 提前设计(搜索自动完成)
  3. 给定一棵树的后序,你将如何从中得到有序?我说可能有多种可能性,然后他问有多少种可能性?
  4. 给定一个包含括号的表达式,找出它是否有效。写代码。链接 - https://www.geeksforgeeks.org/check-for-balanced-parentheses-in-an-expression/

第 8 轮(F2F):

  1. 给定公司门户的 UI,您将如何存储和显示员工的层次结构?我在后端使用树和一些数据库给出了一个解决方案。但她对DB不感兴趣。然后我给出了一个使用缓存和数据库的解决方案。然后他们询问了数据库查询。
  2. 给定一个文档,你如何找到第一个不重复的单词?现在如果文件大小是 50 GB,你会怎么做? (使用多核)
  3. 为什么要切换?
  4. 给定 UI 上的直方图,您必须从后端发送数据,数据可以表示任何内容,例如城市人口或不同流体的密度等。您将如何发送此类信息?您不能进行任何硬编码,因为您必须保持应用程序的通用性。我给出了 hashmap 解决方案,然后她问我你的直方图的条形也被划分了,它们代表了一些更细粒度的信息,例如区域明智的城市人口。您将如何增强您的应用程序?

第 9 轮(F2F):

  1. 您如何解决生产中的“内存不足异常”?
  2. 您在生产中遇到了哪些问题,您是如何调试它们的?
  3. 您是如何在项目中使用 spring 的?
  4. 编写代码来描述 Spring API。然后我编写了带有所有注释的 Get API 代码。
  5. @RequestParam 注释中的参数是强制性的吗?
  6. 我们可以用其他东西代替@RequestParam 吗?还有一些问题和讨论。
  7. 什么是豆?
  8. 什么是依赖注入,写代码来描述DI。
  9. 什么是国际奥委会?
  10. 什么是自动装配?为它写代码。
  11. 你有一个汽车陈列室,如果一辆新车推出,你将如何设计系统,以便增加汽车所需的最小更改?
  12. 抽象类与接口——更多关于 OOPS 的讨论。
  13. 给定一棵树,编写垂直顺序遍历的代码。链接 - https://www.geeksforgeeks.org/print-binary-tree-vertical-order-set-2/

尖端 :

在面试过程中,我观察到以下事情——

  • 他们不是在寻找可以完美给出所有答案的候选人。当我被问及“生产中的内存不足异常”时,我完全空白。我给出了一些不满意的答案,但随后她继续询问我在生产中遇到问题时如何调试。我给她讲了几个场景,她很满意。但是,是的,您的编程技能应该达到标准。
  • 为行为问题做好准备。他们检查这个人是否适合他们的文化。此外,沟通技巧也很重要。
  • 据我所知,主要关注领域是(就我的经验水平而言):PS-DS-Algo > 语言理解(无论是Java还是其他)> 系统设计 = 当前项目理解 > 基于简历的问题和测试/调试技能。
  • 所有的面试官都非常支持和聪明。总体而言,这是一次很好的体验。

我的备考资源——geeksforgeeks、破解编码面试、OCA/OCP Java SE 7 Programmer I & II Study Guide

就我而言,他们立即告诉我我被选中了,但通常需要几天时间。处理录取通知书需要 1-3 周的时间。

如果您将来需要推荐,请随时在评论中删除您的邮件 ID 🙂 一切顺利!