2018年7月27日,Arcesium来到COEP进行实习面试 在线考试总数+5轮
在线测试- 总共有80分钟,是在hacker rank的代码对平台上进行的。 该部分分为三个部分, 1定量能力15 20 2技术能力15 15 3编程测试1 15 4编程测试2 1 30
每个问题的权重相等(他们在采访中说) 任何一段都没有时间的障碍,你可以自由地在两段之间来回跳跃。
*第1节和第2节中的每个错误答案都带有该问题25%的否定分数,每个问题有四个选项,只有一个正确答案。
定量分析有很好的问题,对我们大多数人来说都很难,技术分析更多的是面向对象的 爪哇和C++中的问题与C、栈、二叉搜索树的基本问题有关。如果你擅长面向对象编程,那么这个技术就相当简单了(给出了5-6个代码片段,我们必须标出合适的答案)。
来到代码部分。 1.有一条N个单位的河流,河对岸有K块石头,每一块石头都是N个单位中的一块。从第0个位置开始,您的第一次跳转将始终为1个单位(将上一次跳转视为L个单位),现在您的下一次后续跳转可以是L+1或L-1。很少有人会忘记斯多斯。 你必须输出每一块石头的跳跃平方和。 (这个例子将说明这一点) 让这条河为N=5个单位,有4块石头排成一排 [0, 1, 3, 4] 解决方案—— 1.从0-1开始的第一次跳转总是固定的,将是1个单位。 2.对于下一个跳转,你有两个选项L+1=2或L-1=0,我们必须从每个位置向前移动,所以这不是我们想要的,所以我们将检查当前位置1+跳转(L+1),即1+2=3是否在数组中,如果是,我们进行跳转 3.现在从3开始,我们有两个选择(因为上一次跳跃是2,所以我们可以跳2+1或2-1到达下一块石头) 2-1=1将使我们到达我们想要的最后一块石头
现在我们必须输出每个位置的跳跃平方和 0^2 + 1^2 + 2^2 + 1^2 = 6 因此,如果有可能达到最后一块石头的输出6,否则输出-1
实际的解决方案是使用DP,但我尝试了贪婪的方法(无法通过所有测试用例) 90%与这个问题相似——http://www.dsalgo.com/2016/01/jumping-frog-problem.html
2.你得到了一个m*n棋盘,棋盘上有黑色的棋子(用1表示)。你必须把你的白兵放在所有可能的位置上,计算出每个位置可以杀死多少人,并将其相加。你只能直线移动(x+1,y)和对角移动(x+1,y+1)和(x+1,y-1) 例3*3
0 0 0 0 1 0 1 1 1 -第一排从第一位置(0,0)=>2次击杀,第二位置(0,1)=>0次击杀,第三位置(0,2)=>2次击杀 -第二排,从第一个位置(1,0)=>1杀,第二个位置(1,1)=>不可能,第三个位置(1,2)=>1杀 -第三排不可能放置,因为它们都是1 在每一步中,你都必须最大化杀戮 上述问题的输出为-6 -我没有时间解决这个问题,甚至没有正确地阅读这个问题 这个链接是我朋友用DP-https://ide.geeksforgeeks.org/tf745kHTQI
结果公布了,他们最初拿了10分,但后来又增加了4分 因此,在160多名学生中,他们选择了14名进入下一轮。
第一轮- 这是一次技术性的面试,每个技术性的面试都有两个不同的面试官, 问我自己,然后看了看我的简历,问我你知道吗?我说是的,然后他们问 什么是var_dump?我回答 他们问了几个基本问题,然后问你懂Java吗(我说我已经两年没有编写代码了) 所以那个酷家伙说,让我们看看你忘了多少。 -他问什么是接口 -当你可以在类本身内部进行声明,而你必须使用它时,为什么要使用接口(举了个例子,但他不相信) 关于java的问题很少,然后他问你在哪种语言中最多,我说C++,C++,Python 关于C++的几个问题 -什么是虚拟内存 -什么是多态性 -为什么它被称为运行时(讲述了Vptr和Vtable的情况) -C++/C是如何执行的(我解释了预处理/编译/组装/链接周期的所有阶段) -然后他问编译器如何知道int xyz存储在哪里 -链接和加载过程中实际发生了什么(讲述了链接表) -当您执行所有流程时,被问及对象文件在哪里(被告知–保存临时文件) 还有几个问题没有一个问题是直截了当的,而是以一种巧妙的方式提出的, 然后他们向树走去, -你知道树数据结构吗?是的,解释了所有遍历的工作原理 -什么是按顺序遍历编写代码 -如果顺序遍历是通过另一次遍历给出的,那么您是否总能使BST=>Yes -他们问我关于共同祖先的问题-https://www.geeksforgeeks.org/lowest-common-ancestor-in-a-binary-search-tree/ 我尝试了许多不同的低效方法,但他们总是要求尝试更多,我尝试了2-3种方法,然后他们转向下一个问题 还有几个逻辑构建问题不记得全部 然后他又转向了爪哇 -你知道单身阶级吗?不,他们解释道 -如何限制类只生成一个对象 我解释了C++中唯一和共享PTR的概念,并告诉我们可以保持一个计数变量。
-什么是僵局,解释一下僵局 然后他们问我是否了解DBMS——我说是的 -写一个查询来查找学生数据库中的第二个排名持有者——我使用了limit and offset, 然后他们要求不受限制地进行,然后我使用嵌套查询。 他们问你熟悉哪个数据库——我回答了Mysql和MongoDB 他们问其他数据库中是否有限制和偏移参数 然后告诉你结束了你有什么问题要问我们吗? 我问了2-3个问题(在你开始面试之前,一定要先问一些关于公司的问题)
第二轮- 对大家来说更像是一般的回合,向大家问了两个谜题 1.你有一个5升和一个3升的罐子。你可以用任何量的水。不应使用任何其他罐子或容器。你怎么能得到精确的4升水? 我回答说,他只做了4个步骤,把灌水和转水也看成是单独的步骤。过了一会儿,我说这是不可能的,他告诉我要更努力。
每瓶酒中至少有2只老鼠中毒。每瓶酒中至少有1000只老鼠中毒。每瓶酒中有多少只老鼠中毒
然后被问及在线考试的总体情况。
在这一轮之后,5人被列入下一轮的候选名单
第三轮- 技术方面的问题再次出现,我受到了欢迎,他问了我将近4-5个复杂的代码问题 他们从,跟我说说你自己。 -然后他问你在线解决了哪些代码——我回答了,并在测试后告诉他,我能够使用递归解决它,并编写了代码。 -有些问题我不记得了,但我用3阶段蛮力解决了/优化为O(n^2)/并使用哈希使其成为O(n),他很高兴 -什么是散列 -如果我想在散列中存储相同的元素,会发生什么(他希望我知道冲突以及如何解决冲突) -编写使用链表链接的代码 -哪一个是解决冲突的更好的链接或开放网络解决方案 -他问我,如果我们使用同一个对象使用类方法调用,那么如何确定(java编译器)调用哪个对象?我没听清问题,他解释了我两次三次,我们转到下一个问题 -给定一个数字和一个数组,你必须从数组中找到K个这样的元素,这些元素加起来就是给定的数字 数组[2,3,1,5,9,7] k=2//需要精确的元素 x=6//最终的总和应为x 所以这里元素1和5加起来就是6。 我给了蛮力——找到了所有可能的子集并添加了它,计算了元素的数量——编写了sudo代码 然后我用散列法给出了O(n^2),但他仍然不相信 然后我尝试使用段树作为前缀sum(但错了) -他问我关于分段树的事 他让我不断尝试更优化的解决方案,最后在几次提示后就完成了(如果你想得到提示,请大声思考,这对我很有帮助) -还有一个问题我不记得了 我很高兴,因为我几乎给了他想要的任何东西,他问我是否想要什么,我问
第四轮- 这是一个关于人力资源的基本问题 -介绍一下你自己,你住的地方,家人,面试怎么样,我今天过得怎么样等等 -一个谜题问道 老鼠与毒药之谜 共有30瓶葡萄酒,其中1瓶中毒,如果老鼠在14小时内死亡,你有24小时的时间来检测哪瓶葡萄酒中毒,请使用最少数量的鼠标来查找。 我使用二进制数逻辑,回答5为2^5=32,但他说这不是最小值, 搔了我一会儿脑袋,最后他笑了,说:“以后再告诉我。”。 回合结束了。 后来我在谷歌上搜索得到了答案,只需要一只鼠标就能找到瓶子号。 你要做的是,让老鼠每5分钟喝一瓶酒,14小时后计算他死亡所需的额外时间,除以5,你就得到了瓶号
(我们本以为已经完成了,但不必等待,接下来是另一轮技术挑战)
在这一轮之后,第三名候选人入围
第五轮- 这一轮是最具挑战性的一轮 -你有一个COEP网络,你有25部电话,每部电话都必须严格连接到其他7部电话(适用于所有电话)。你必须找到如果给定电话号码N和电话的确切链接限制,只需返回是否可以建立网络(真)或不(非) 他给出了我所知道的关于图的度的提示,正如我在图中所说的,我用图的方法解释了他,并编写了sudo代码,但他说这可以用公式在一行中完成 我试图推导出4-5个公式,每个公式都有一些测试用例失败,在max上尝试之后,我们转到下一个问题 -这是一个与设计相关的问题(我不记得是什么问题)——但我一步一步地设计,他一直在推动我,直到它成为最好的、优化的解决方案,让我编写代码 -他给了我一个谜题,我侄女喜欢给圆圈涂颜色 在每次迭代中,有n个循环,她给另一个循环涂上颜色 找出最后一个未着色的圆圈编号 尝试了2-3个组合,并猜测它将是最接近圆圈总数的2次幂=>他告诉了正确的答案 -另一个设计问题—— 从头开始设计excel电子表格 我从我的方法开始,使用C++,所以我使用了无序的映射,但是他说,它应该是纯C的,不要使用任何内置的DS,只使用数组和基本的东西, 所以他告诉我用c实现无序映射 我做到了,然后我们转向了数组和指针,连续存储和链接,许多相关的问题像火箭弹一样迅速出现。 他要求为Malloc写代码, 最后,我设计了它,他督促我做到最好,最后他真的很满意。 在这个设计部分写了2-3页的代码 这是半个多小时 -让我写排列的代码 他写了一个递归代码,要求遍历代码并为给定的输入绘制递归树。我两个都做了。 这一轮持续了将近1.30小时
是的,所有的工作都完成了。我们一整天都在进行近6个小时的采访 几分钟后,结果出来了,他们发表了一些正式演讲,宣布了我的名字,并告诉我只需要1分钟,我很高兴,但也很难过,因为和我一起进入前三名的朋友不能和我一起参加。 很高兴能与未来的公司合作。GFG真的帮了我。 干杯,快乐编码。