第一轮:在线测试,第一轮有4个部分。
-
代码调试测试
-
2 道编码问题(70 分钟)
-
给定一个数组 A[] 和一个数字 x,检查 A[] 中的对,总和为 x
-
克隆带有下一个和随机指针的链表
-
-
性格问题
-
逻辑推理
我在第一轮观察并指出的一点是,解决方案必须在编码轮中得到最优化,并且由于问题的难度级别不高,因此必须在更短的时间内解决。就我而言,我在规定的时间前半小时完成了测试。
第二轮(技术面试60分钟):首先,面试官要求自我介绍。然后他问了我做过的项目。在对项目进行介绍性讨论后,他给了我 2 个关于他们个人实时代码环境的编码问题。
他让我先解释这个方法,然后把它写下来。如果可能的话,我必须解释每个解决方案的时间复杂度和最佳代码,时间复杂度更小。
- 给定一个数组,进行就地替换,使得每个元素都被其右侧最大的元素替换。
- 一个包含多个字符(可能出现多次)的数组,给定值 K。使数组中的替换次数最少,使得在结果数组中我们只有 K 个不同的字符(这个问题是作为一个单词问题提出的)一些给定的条件。)
第三轮(技术面试120分钟):与第一轮类似,双方进行了简要介绍。这一轮是编码加上那种人力资源。在 2 个编码问题之后,我被要求描述我在完成我的任何项目时所面临的艰难情况,我的目标是什么,我做了什么来克服它,以及最终结果是什么。
- 给出的序列为 [ TTTTBBBBBBBBBB BTT ],其中 T 表示 TV 自行车的数量,B 表示 Bajaj 自行车的数量。编写代码以最佳方式计算车库中 Bajaj 自行车的数量。
我使用二进制搜索在 O(log n) 中解决了它。
第二个问题是典型的理解。我最初认为我无法解决它。但面试官非常友好和合作。他让我通过优化的解决方案找到答案。我被要求为此编写一个完整的工作函数。
- 您获得了大量 10Mbs 的数据,并且您有一个 1Mb 的 RAM 可用。您将如何使用此 RAM 对完整的 10 Mb 数据进行排序?
我使用归并排序解释的第一种方法。但它并没有那么优化。我还被要求解释每次传递中合并排序的每个函数的复杂性。这有点像合并 N 个数组。
最后,我给出了一个时间复杂度较小的使用堆的解决方案,最后面试官很满意。
15 名学生在面试的 38 轮中被选中,我是其中之一。