我在11月17日采访了Goldmanc sachs。这个过程非常缓慢,因为在我的例子中,第一轮是在9月17日开始的,最后一轮是在11月17日结束的。
第一轮: 首先是黑客测试。两个编码问题,第一个简单,第二个中到硬级别。
注:我不记得问题的确切措辞。
1.)给定一个字符串和突发长度,输出该字符串,使字符串中相同相邻字符的计数小于突发长度。
例子:
输入:abbcaaccd,3
输出:abbd
2.)给定一个不同整数的数组,以递增或递减的顺序输出长度为3的子序列的数量。
提示:准备动态规划,因为几乎每次第二个问题都是关于DP的。
第二轮:CoderPad
这里提出了两个问题:
- 机器人只能向四个方向移动,上(U)、下(D)、左(L)、右(R)。给定由移动指令组成的字符串,执行指令后输出机器人的坐标。机器人的初始位置位于原点(0,0)。
- 给定一个整数数组和一个和,输出加法等于给定和的对数。
提示:在CoderPad回合中,首先与面试官讨论你的算法。面试官要求你写专业水平的代码。面试官还会要求你们写所有可能的测试用例,尤其是角落测试用例,你们的代码应该通过。
第三轮:视频会议
在这一轮中,许多技术问题被要求检查以深入了解C++语言。
我记得的一些问题是:
- 自我介绍
- 什么是虚拟关键字,vtable如何工作,虚拟析构函数。
- C++、C++ 14中的异常处理(如果你声称知道C++ 14)
- 给出了许多与运行时多态性相关的场景,并询问了输出是什么以及为什么
- STL容器映射,集合,无序映射。
- C++中的映射与无序映射的区别,它们的实现细节。
- 真实世界中地图、集合、无序地图的使用。
- STL容器的螺纹安全。
- 智能指针,比如unique_ptr、shared_ptr、weak_ptr。用例和它们之间的差异。
- 算法问题:给定一个整数矩阵,求和最大的子矩阵。
经过这一轮和一个月的等待,我被要求在班加罗尔进行面对面的讨论。下面这一轮都发生在GS班加罗尔,一天之内。每一轮都有两名面试官。
第四轮:面对面
又有很多关于C++的问题:
- 虚拟机构
- 纯虚拟函数使用
- 纯虚函数vs虚函数
- 输出预测:给定一些C++代码,输出什么以及为什么。(我不记得确切的问题,但有一个是运行时多态性,第二个是函数返回的本地引用)
- 算法问题
- 给定一个整数数组,找到最大子数组。输出带有开始-结束索引的和。
- 给定一个充满X和0(零)的矩阵。计算所有标有X的单元格与最近的0之间的距离。四个相邻单元格(顶部、底部、右侧、左侧)的距离为1。例如输入:X x0 X X X X
输出: 2 1 2 1 0 1 2 1 2
第五轮
C++问题:
- 实现赋值运算符重载,复制构造函数。
- 不同类型的演员以及他们之间的差异
- 上下转换,为什么以及如何工作。
- 钻石问题及解决方法。
- 虚拟继承如何在内部工作。
- 算法问题:
- 给定一个只有三个可能数字0、1、2的链表,对列表进行排序。
- 给定一个排序但重复的整数数组,找出给定数字的出现次数。
第六轮
设计问题 :设计手机目录,即联系人列表,以保存手机号码、电子邮件和其他信息。我们可以在手机上进行的所有操作,如按姓名、号码等进行搜索。
算法问题: 给定两个字符串s1,s2。输出这两个字符串可以合并的所有方式,同时保持字符顺序与s1、s2中的相同。设计一个递归算法。
示例:s1:ab,s2:cd
输出:
abcd
acbd
acdb
出租车
cadb
cdab
所以,各位,希望你们会发现这对你们的面试准备有用。祝你好运!!!