第一轮:第一轮有 3 道题,一道非常基础(数组/字符串),最后一道中等(链表/树),最后一道很难(图)。
我可以解决三道题中的两道题,并设法将其列入候选名单以供进一步讨论。共有来自 CS、IT、ECE 的 130 名学生。
第 2 轮:对于面试,28 名学生入围,并在候选人名单共享后 1 小时后开始面试。
大约需要 50-55 分钟,面试官非常有礼貌和友好。
他提出的问题如下:
- 数字 n 表示从十进制转换而来的二进制数需要多少位?我只是通过使用 while 循环来解决,他让我在 O(1) 中解决。并给了我使用日志解决的提示。 (使用时间复杂度)
- 如何从包含从 1 到 n+1 的元素的 n 个元素的数组中找出缺失的数字。我再次使用循环解决了它。他要求另一种方法。我使用了排序和二分搜索。他再次要求另一种方法,并在一段时间后给出了提示。我用AP找出正确答案。
- 从一组未排序的元素中找出缺失的数字,在插入这个缺失的数字后,这些元素将包含所有成对的元素。 (有 2 个相同的元素或数字,其中一个是单一的。我用 O(n*n) 和 O(nlogn) 解决了它。然后他让我用异或运算符解决
- 他从链表中问了一个问题,我只是忘记了这个问题,但在这里他要求找到它的空间复杂度,但我无法正确找到它。然后他告诉我如何使用空间复杂度解决这个问题。
- 还有一个与字符串相关的问题,这太简单了。我告诉他解决同一个问题的三种方法,因为我对字符串很熟悉。最后,他问,你有什么问题要问我吗?虽然我可以问他更好的问题。
注意:这很容易,但程序的时间和空间复杂性将决定您的结果。
总的来说,这是一次很棒的经历,我期待着另一轮面试,但它没有发生。 12 人入围下一轮。
我想建议不要犯同样的错误。应该在 GeeksforGeeks 上解决面试问题。应该能够找到空间复杂度,并且应该学会编写最优化的解决方案。在您开始编写解决方案之前,按照他的要求正确地告诉他您将如何解决。