第一轮:这是在hackerrank平台上进行的在线一轮,包括2个编码问题和5个MCQ。多选题基于 OOP、数据结构和操作系统,各有 10 分,带有否定标记。第一道编码题是一道简单的数学题(15 分),第二道题是滑动窗口问题的变体(35 分)。
- 假设我们想将 n 个硬币排成一行,这样第一行可以包含 1 个硬币,第二行可以包含 2 个硬币,第三行可以包含 3 个硬币,依此类推。使用 n 个硬币可以完全填满的最大行数是多少?
- 给定一个由 n 个正整数组成的数组,找到子数组的数量,使得这些子数组的元素的乘积小于 k。
例如。 Arr= {2, 3, 6} k=10
没有这样的子阵列= 4
本轮比赛共选出9人。
第二轮: (F2F)面试官没有浪费时间,给了2个编码问题。
- 给定一个字符串,找出具有重复字符的最大子字符串的长度和起始索引。例如。输入:“aabbbcdde”,输出:长度=3,起始索引=2
- 给定一个由 n 个整数组成的数组,找出最小子集的大小,使其元素之和等于 k。
例如。输入:数组={1,2,3,4},k=6
输出:2
面试官让我写代码,干2-3个测试用例的代码。这一轮大约需要 45 分钟。
第三轮: (F2F)面试官首先让我谈谈我自己和前几轮。然后他在我的简历上问了我很多问题大约 20 分钟(竞争性编程)。
然后他给了我一个编码问题:给定 q 查询找到给定数组中被查询元素的频率。我直接给了他二进制搜索解决方案,他让我编码。
然后他让我写BST插入和搜索的代码。由于我在简历中提到了Java ,他给了我一个JavaLinkedList的代码,让我找出其中的错误。他还问了我 2-3 个谜题和一个关于概率的问题。这一轮持续了大约45分钟。
五人晋级第四轮。
第四轮: (F2F)这是技术和人力资源回合。面试官已经得到了关于我前几轮表现的反馈,所以他开始随意谈论大学,然后他转向我的简历。他问了我关于 codechef 和hackerrank 的资料,然后我们还讨论了ACM-ICPC。
然后他给了我一个问题:给定一个数字数组,重新排列并连接这些数字以形成可能的最大数字。我给了他方法,他似乎相信了,并要求我为它编写代码。我犯了一些错误,但在向他解释我的代码时,我很快就意识到了这些错误。面试官说他不介意,因为方法是正确的。
然后他给了我一些情况,让我给出我的反应,并问我在这种情况下会如何表现。所有这些问题都集中在团队合作上。
然后他再次转向技术并开始问我 OOP 的概念:虚拟函数、虚拟类、接口、方法覆盖与重载、运算符重载。
在问了几个技术问题之后,他又开始问我一些小的行为问题。然后他谈到了高盛及其工作文化。
这一轮持续了大约1小时30分钟。
最终选择了2人进行实习。
一些提示:有一个好的简历。专注于竞争性编程会有所帮助。大多数时候,面试官都懒得看我的代码,只是因为他们对我的 CP 简介印象深刻。为 HR 问题做好充分准备,比如告诉我一些关于你自己或为什么选择高盛。