三星面试经历 |设置 28 (校园)
近日,三星班加罗尔来我校进行全职招聘。有一轮在线编码,然后是 3 轮面试(2技术+ 1人力资源)。
第一轮:在线编码轮
这是一个 3 小时的编码轮次,我们必须编写 1 个具有 50 个测试用例的问题。只有那些通过所有测试用例的学生才被选中进入下一轮。这是问题:
您将获得如下网格:
0 1 0 2 0
0 2 2 2 1
0 2 1 1 1
1 0 1 0 0
0 0 1 2 2
1 1 0 0 1
x x S x x
在上面的网格中,
1:这个单元格有一个硬币。
2:这个牢房有一个敌人。
0:不包含任何内容。
突出显示的(黄色)区域是控制区域。 S是我们需要控制的宇宙飞船,以便我们可以获得最大的硬币。
现在,S 的初始位置将在中心,我们只能将其向右或向左移动一个单元格或不移动。
每次,网格中未突出显示的部分将向下移动一个单位。
我们也可以使用炸弹,但只能使用一次。如果我们使用它,控制区域上方 5×5 区域内的所有敌人都将被杀死。
如果我们一开始就使用炸弹,网格将如下所示:
0 1 0 2 0
0 0 0 0 1
0 0 1 1 1
1 0 1 0 0
0 0 1 0 0
1 1 0 0 1
x x S x x
一旦宇宙飞船遇到敌人或整个网格已经倒下,游戏就结束了。
例如,
首先,如果我们想收集一枚硬币,我们应该向左移动( coins=1 )。这是因为当网格下降 1 个单位时,我们在第二个位置有一个硬币,通过向左移动我们可以收集那个硬币。接下来,我们应该向右移动以收集另一个硬币( coins=2 )。
在此之后,保持在相同的位置(硬币=4 )。
这是收集了4个硬币后的现状。
0 1 0 2 0 0 1 0 0 0
0 2 2 2 1 -->after using 0 0 0 0 1
x x S x x -->bomb x x S x x
现在,我们可以使用炸弹来摆脱这种情况。在此之后,我们最多可以收集 1 个硬币。所以最大硬币= 5 。
解决方案:
蛮力:在每一步,我们有 6 个选项:
1. 左移、右移或不动。
2. 如果我们还没有使用过炸弹,请先炸掉炸弹,然后向右、向左或不动。
考虑到所有 6 种情况,我为此编写了一个递归函数。
尖端:
总的来说,三星不会问高难度的编码问题,限制也不会太难。因此,几乎每次使用蛮力解决方案就足够了。试着确保你考虑了所有的极端情况,因为如果你没有通过所有的情况,他们就不会选择你进入下一轮。
通常,问题是基于图表或回溯/递归。所以,试着好好复习这些话题。
17名学生入围下一轮。
第 2 轮:技术 1
一开始,面试官一行一行地浏览了我的整个简历。
1. 说说你自己。
然后,他开始问我与我在实习期间所做的项目有关的问题。他实际上问了一些非常好的问题,所以在面试之前尽量仔细阅读你的简历。
面试官是个好人。最后,他问了我最喜欢的科目,然后让我在外面等。它持续了大约30分钟。
此后9名学生入围。
第 3 轮:技术 2
我一进入房间,面试官就给了我一些零食,并给我解释了一个与数组有关的非常简单的问题,并给了我 10 分钟的时间在纸上写下它的代码。我很快就写好了,并给他解释了一遍。他很满意。
然后,他问了我一个基于图形的简单设计问题。之后,他问了我一些问题,例如:
1.堆栈的缺点。
2. 另一个设计问题,他还问我关于操作系统中的同步、互斥、消息传递等。
3. TCP/IP 各层的协议。
4、TCP和UDP的区别。
5. OOP 中的多态性。早期绑定和后期绑定。以及其他一些基本的 OOP 问题。
在这之后,6名学生入围了HR轮。
第四轮:人力资源
1. 说说你自己。
2. 由于我是 ECE 学生,她问我为什么要找软件工作。
3. 为什么选择三星?
4. 我们为什么要雇用你?
5. 然后她问我是否有任何问题。我问了她几个问题,然后她告诉我等待结果。
最终选出5名学生。我也被选中了:)。