我有 2.5 年的经验,在高盛班加罗尔办公室接受了面试。
第1轮:
在询问了简短的介绍之后,面试官开始询问Java问题,这些问题是: Java 的OOPs 概念、什么是运行时多态性、重载/覆盖、您在Java使用了多少集合、Hashmap 是如何工作的、之间的契约是什么等于和哈希码?
然后,他问了一个关于数组的问题:给定一个 int 数组,按递增递减的顺序排列元素,即一个元素大于一个较小的元素,然后更大,依此类推。
在我回答完这个问题后,他问了我一个简单的问题,假设有两个人从圆圈中的某个点出发,第一个速度为 4,第二个速度为 6,他们多久会再次见面。 (不知道问这么简单问题的动机。:P)
第二轮:
面试官也在这里问了Java问题: 字符串、 字符串 buffer和字符串 builder有什么区别,final关键字有什么作用,final变量值什么时候可以改变, Java的classpath是什么?
在完成所有这些问题之后,他给了我一个设计问题:假设您必须设计一个竞选应用程序。他提出了许多问题,我们应该为这些问题提供一些 API。问题是这样的:总共有多少个选区?所有候选人都在竞争哪些?哪个候选人代表哪个政党?有多少男/女候选人获胜,得票多少?
我告诉他的班级是:州、选区、候选人、政党、选民。
此外,我告诉他,该州将有一份选区名单。选区将有一份男女候选人名单。一个政党将有选区名单(他们的候选人竞选的地方)以及所有候选人的名单。候选人将参考选区(以防他下次决定从不同的选区竞选)和党的参考(与上述原因相同)。
以各种理由对这个设计进行了大约 20 分钟的讨论。
第 3 轮:
我得到了一个带有 IDE 的系统,并被要求编写一个问题。面试官告诉我,你可以编写和运行自己的测试用例,一小时后我们将运行我们的测试用例。
问题:给定一个有 0-9 位数字的遥控器,加号按钮(增加频道),减号(减少)和上一个频道按钮(转到上一个频道)。我们得到了 2 个数字,表示开始和结束频道编号,以及一个具有各种频道编号的数组。任务是以最少的点击次数转到数组中给出的所有频道编号。
第四轮:(导演轮)
首先,他彻底询问了我目前的工作以及我正在做的事情。我们就我的工作经验进行了大约 30 分钟的讨论。
然后,他让我实现一个堆栈。我是用一个数组列表做的。对此进行了 10 分钟的交叉询问。
之后,他给了我一个谜题:假设你和我在圆桌上玩一个游戏,我们都有无限数量的硬币。规则如下:
- 这是一个回合制游戏,所以你我交替进行(每回合1个硬币)
- 我们必须把硬币放在桌子上,硬币不能叠在一起。
- 硬币一旦放在桌子上就不能移动。
- 如果没有任何空间将硬币放在桌子上,则最后放置硬币的人获胜。
所以,如果我给你先手的机会,你会从哪一步开始确保胜利?
在此之后,对 GS 及其工作进行了一些讨论。