第 1 轮:这是对 HackerRank 的在线测试。它由 10 个基于数据结构、算法、操作系统的 MCQ 和一些基于输出的问题和 2 个编码问题组成。难度级别为简单-中等。
编码问题是:
- 给定字符串字典顺序排列的下一个排列。 https://www.geeksforgeeks.org/find-the-next-lexicographically-greater-word-t
- 一个简单的散列问题,可以使用 hash-map 来完成。
我能够清除这一轮。 117 名学生参加了第一轮比赛,其中 11 人被选入了第二轮。两个编码问题都很简单,因此选择取决于谁正确解决了更多 MCQ。
第 2 轮:这是一次 F2F 技术面试,或者我会说更多是解决问题的一轮。面试官看起来很友好。他首先询问了我自己,然后在给他介绍后立即跳到了 DS 和 Algo。
- 您将获得 x 轴上赛车手的坐标(最初全部不同)和 x 轴上的最终目的地。所有赛车手都会奔向目的地。给出了每个赛车手的速度。因此,在跑步时,一些赛车手会并排出现,因此他们将组成一个小组,并以较慢的速度开始一起跑步。他进一步澄清说,假设有两组,一组有 4 名赛车手,另一组有 2 名赛车手,因此如果他们并排排列,他们将组成一个更大的 6 名赛车手,并以较慢的速度开始跑步。所以我不得不告诉有多少组会到达最终目的地。 https://www.geeksforgeeks.org/water-drop-problem/(与此类似)
- 在线性复杂度中包含 0 和 1 的行排序矩阵中的一行中 1 的最大数量。 https://www.geeksforgeeks.org/find-the-row-with-maximum-number-1s/(O(n+m) 变化)
- 编写完整代码以打印给定二叉树的 360 度视图(顶部 + 底部)。
这一轮大约需要 45 分钟。我能够解决所有问题。最后他问我有什么问题要问他,然后让我在外面等。 HR 告诉我我将进行第 3 轮,并在大约半小时内被要求进行第 3 轮。 11 人中有 7 人被选中进入第 3 轮。
第 3 轮:这又是一次 F2F 技术面试/问题解决轮/项目讨论。
首先对我的项目进行了大约 15 分钟的讨论,其中他问了我关于我的项目和一些关于 android 的问题。
关于android的问题是:
- 什么是gradle?
- 什么是 DVM(Dalvik 虚拟机),它是如何工作的?
然后我被问到这些编码问题:-
- 数组中值对的所有组合(蛮力、O(1) 空间、散列)总和等于给定值。 https://www.geeksforgeeks.org/count-pairs-with-given-sum/ 然后将其扩展为在给定 sum 的数组中查找三元组。
- 这个问题是 0-1 Knapsack 的不同类比。 https://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/
这一轮大约需要 40 分钟。我回答了所有问题。 .最后他问我有什么问题要问他,然后让我在外面等。 HR 告诉我,我将有第 4 轮。 5 出 7 被选中。
第 4 轮:这是 F2F HR 轮。
面试官很友好,问了一般的人力资源问题。首先他让我自我介绍,然后是关于大学、我的学习、我们正在学习的科目的问题,我们进行了愉快的交谈。这一轮大约持续了 20 分钟。然后他让我在外面等。
5 人中有 3 人获得了offer,我就是其中之一。
这些技术面试的目的是了解候选人处理问题背后的思维过程。如果您遇到困难,他们会给您提示,如果他们知道可以进一步优化,他们会要求您优化方法。在讨论了该方法后,您需要在纸上编写代码。