我在 11 月 17 日采访了 Goldmanc sachs。这个过程非常缓慢,因为在我的情况下,第一轮于 9 月 17 日开始,最后一轮于 11 月 17 日结束。
第 1 轮:首先是 HackerRank 测试。两个编码问题,第一个简单,第二个中等到困难级别。
注意:我不记得问题的确切措辞。
1。)给定一个字符串和脉冲串长度,输出该字符串,使得在相同字符串相邻的字符计数是小于突发长度。
例子:
输入: abbcaaaccd , 3
输出:abd
2.) 给定一个不同整数的数组,输出长度为 3 的子序列的数量,无论是递增还是递减。
提示:准备动态规划,因为几乎每次第二个问题都是关于 DP 的。
第 2 轮:CoderPad
这里问了两个问题:
- 一个机器人只能往四个方向移动,UP(U),DOWN(D),LEFT(L),RIGHT(R)。给定一个由移动指令组成的字符串,执行指令后输出机器人的坐标。机器人的初始位置在原点(0,0)。
- 给定一个整数数组和一个总和,输出其加法等于给定总和的对数。
提示:在 CoderPad 回合中,首先与面试官讨论您的算法。面试官除了你写专业级的代码。面试官还会要求您编写所有可能的测试用例,尤其是角落测试用例,您的代码应该通过它。
第三轮:视频会议
在这一轮中,我们询问了许多技术问题,以检查对 C++ 语言的深入了解。
我记得的一些问题是:
- 自我介绍
- 什么是 Virtual 关键字,vtable 的工作原理,virtual 析构函数。
- C++、C++14 中的异常处理(如果你声称了解 C++14)
- 给出了许多与运行时多态性相关的场景,并询问输出将是什么以及为什么
- STL 容器 Map、Set、unordered_map。
- C++中map和unordered_map的区别,它们的实现细节。
- map、set、unordered_map 的现实世界使用。
- STL 容器的线程安全。
- 智能指针,如 unique_ptr、shared_ptr、weak_ptr。用例和它们之间的差异。
- 算法题:给定一个整数矩阵,找出和最大的子矩阵。
经过这一轮和一个月的等待,我被要求在 GS 班加罗尔进行面对面的讨论。以下所有回合均在 GS 班加罗尔和一天内发生。每轮有两名面试官。
第 4 轮:面对面
再次有很多关于 C++ 的问题:
- 虚拟机制
- 纯虚函数使用
- 纯虚函数vs 虚函数
- 输出预测:给定一些 C++ 代码,将输出什么以及为什么。(我不记得确切的问题,但一种情况是运行时多态性,第二种情况是从函数返回的本地引用)
- 算法题
- 给定一个整数数组,找到最大的子数组。输出带有开始结束索引的总和。
- 给定一个填充了 X 和 0(零)的矩阵。计算所有标有 X 的单元格与最近的 0 的距离。四个相邻单元格(顶部、底部、右侧、左侧)的距离将为 1。例如输入:XXX
X 0 X
XXX输出:
2 1 2
1 0 1
2 1 2
第 5 轮
C++ 问题:
- 实现赋值运算符重载,复制构造函数。
- 不同类型的演员表以及它们之间的区别
- Up Cast 和 Down cast,它们为什么以及如何工作。
- 钻石问题以及如何解决。
- 虚拟继承如何在内部工作。
- 算法题:
- 给定一个只有三个可能数字 0、1、2 的链表,对列表进行排序。
- 给定一个已排序但重复的整数数组,找出给定数字出现的次数。
第 6 轮
设计问题:设计一个手机通讯录,即联系人列表,用来保存手机号码、邮箱等信息。我们可以在手机上进行的所有操作,如按姓名、号码搜索等。
算法题:给定两个字符串s1、s2。输出可以合并这两个字符串的所有方式,同时保持字符顺序与它们在 s1、s2 中的顺序相同。设计一个递归算法。
示例:s1:ab,s2:cd
输出 :
A B C D
acbd
数据库
驾驶室
卡布
数据表
所以,伙计们,希望你会发现它对你的面试准备有用。祝你好运!!!