我是通过公司的职业门户申请的,申请于2021年1月20日开放,2021年2月8日截止。
我在申请截止日期的第二天收到了能力倾向测试的邀请。测试定于2月20日进行。
本次测试在Hackerrank平台上进行,分为6个部分,共66道题,总时长90分钟,有视频监考,允许更换部分。这些部分是-
- 数值计算 – 8 个问题
- 数值推理 -12 题
- 理解——10个问题
- 抽象推理——12个问题
- 图解推理——12个问题
- 逻辑推理——12 个问题
采用 +5 和 -2 的标记方案。
我解决了大约 48 个问题,并试图避免负面标记。
3 月 10 日,我收到一封邮件,说我已经通过了能力倾向测试,下一步是定于 2021 年 3 月 20 日进行的技术测试。
测试包含以下部分 –
- 编程 — 1 个简单的编码问题和 1 个中等编码问题。
- Quantitative Aptitude – 与数学概念相关的多项选择题。
- 计算机科学 – 与计算机科学概念相关的多项选择题。
- 高级编程——一个关于高级数据结构和算法的硬编程问题。
- 告诉我们你的自我——两个基于段落的行为主观问题。
编程部分:
- 第一个编程问题给出了一个由 n 个整数和一个数字 k 组成的数组。我们必须从数组中包含最大数量的总和小于 k 的元素并输出它们的总和。
- 第二个编程问题是基于以数组格式表示的二叉树的层序遍历。我们应该只完成给定的函数,但问题设置者在驱动程序代码中留下了一个错误,这是任何人在调试时检查的最后一件事,这使得调试代码的意外输出非常困难。
定量部分:
- 定量能力问题基于广泛的数学主题,包括但不限于三角学、概率、统计、排列和组合等。
计算机科学科:
- 计算机科学问题基于数据结构、排序算法、图算法、操作系统、调度算法、银行家算法、OOPS、 Java、预测程序的输出等。
高级编程部分:
- 高级编程问题是一个基于图表的 100 分问题。问题描述很模糊,我不得不假设很多才能找到解决方案。我不记得这个问题了,但基本上,我们应该找到具有最佳连接性的节点,即具有最多邻居并且其邻居再次具有良好连接性的节点。
- 测试是购买了网络摄像头和麦克风。允许在部分之间切换,但每个部分都有自己的时间限制。
- 3 月 31 日,我收到一封电子邮件,其中包含我已通过技术测试的信息,并将在 4 月 5 日至 9 日之间的某一天与小组进行虚拟面试。
- 4 月 2 日,我收到了面试的日期和时间。我的面试安排在 4 月 6 日,我应该从上午 10 点到下午 5 点有空。整个过程要在同一天进行,zoom 和hackerrank codepair 应该是平台。
2021 年 4 月 6 日
候诊室里大约有 50 名候选人,整个过程进展缓慢,不得不坐在笔记本电脑前等待很长时间,因为面试可以随时开始,而面试官已经在那里等候选人了。
面试轮次
第 1 轮– 下午 12:05 开始(是的,在空白屏幕前等待了 2 个小时!)。面试官是GS的副总裁,人很好,很有礼貌。她以问候开始,并要求我快速介绍。然后让我告诉她一些我在简历中提到的项目。然后她问了 DSA 问题。问题是——
- 打印给定数组中的所有对(无序),其总和为给定数字 k。
- 在媒体播放器中实现歌曲建议功能。基本上,有两种类型的查询,一种是在时间 t 播放一首歌曲,另一种是告诉到目前为止哪首歌是播放次数最多的歌曲。首先我告诉了她蛮力的解决方案(每次都计算所有歌曲的频率)。然后她让我用数据结构优化它。我告诉她两种解决方案,一种是堆,另一种是双向链表。她似乎对我的做法很满意。
最后,她告诉我如果我有什么问题要问她,我可以问。面试持续了大约45分钟。
第 2 轮– 经过 3 个小时的漫长等待,它在下午 4 点开始。面试官是一个很酷很聪明的人。他直接跳到 DSA 问题。他一共问了我 5 个问题,让我把它们全部编码。此外,他用他的测试用例检查了它们。问题是——
- 给定某家公司 n 天的股票价格,你必须通过买卖股票来最大化你的利润,这样你只能进行 1 次交易。
- 同样的问题,但现在您可以执行任意数量的交易。
- 再次相同,但现在我可以执行几乎 k 次转换。我同样使用动态编程。
- 给定一个数字 N,你应该使用递归打印 n,n-1,n-2….,1,0,1…..n-2,n-1,n 并且递归函数只能被调用一次.我在递归函数使用了另一个二元变量,它告诉我它是处于递增还是递减状态。该解决方案有效,但他似乎并不满意,并告诉我在面试结束后考虑 3 行解决方案,令人惊讶的是,该解决方案在面试结束后立即击中了我 XD。
- 给定一个数字数组,按照这些数字出现的频率降序打印其中的唯一数字。
我为他的所有问题编写了可接受的代码,他看起来很满意并问我是否有任何问题要问他。
第三轮– 下午 5:30 开始,是一个匆忙的面试。面试问的太快了。他直接从 DSA 问题开始。
- 给定一个整数数组,您必须找到任何峰值元素,其中峰值元素是一个数字,其前一个和下一个数字都小于给定数字。我给了他蛮力 O(N) 方法,然后他问我是否可以优化它。然后我给了他 O(logN) 的方法。
- 现在他要求做同样的问题,但要找到最大的峰值元素。他问是否有可能在 O(log N) 时间复杂度内做到这一点,以及如何(答案是否定的,在这种情况下 O(N) 解决方案应该是最佳的)。然后他问为什么会这样。
- 继续他的下一个问题,在不使用任何库函数的情况下,找到给定正数(完美平方或非完美平方,可以带小数或不带小数)的平方根。
我被迫为他的所有问题编写代码,并针对他的测试用例运行它们。
- 之后,他问我关于我的项目,我使用的技术堆栈以及为什么?
- 然后他让我将它们与其他可用的技术堆栈进行比较,最后是几个操作系统、OOPS 的简短问题。他似乎很满意。
- 最后,他让我问他问题(如果有的话)。
- 这次面试太匆忙了,包括上面所有的问题和他们的代码,面试甚至没有持续15分钟。
- 这是我的最后一次面试,之后他们要求我和其他几个人离开,结果将在 2 周内通知那些被选中的人。
终于,在 4 月 16 日,我收到了关于我选择实习的电子邮件!
我的小贴士-
- 尝试在筛选测试中获得最高分(不仅仅是截止)。
- 尝试为技术回合中的基于段落的问题写出好的和有效的答案。
- 为“告诉我你自己”准备一个好的答案,突出你的强项,并将面试的其余部分转移到它上面。
- 尝试用REACTO的策略解决DSA问题,可以参考https://content.techgig.com/answering-a-technical-question-in-a-coding-interview-a-step-by-step-guide/ articleshow/81672857.cms
- 最后总是向面试官提问,这表明你对在公司工作的热情和兴趣。
- 面试过程可能会非常漫长而缓慢,请做好心理准备。