📜  微软面试经历|设置 100(在校园内进行 IDC 和 IT 实习)

📅  最后修改于: 2021-11-10 06:49:29             🧑  作者: Mango

Microsoft 访问了我们的校园,了解 IDC 和 IT 简介的实习选择。 IDC简介的选择过程分为三轮

第一轮:编码轮
3 问题以不同的方式提出。其中解决了2个及以上的人入围。解决3个者入围个人面试,解决2个者入围Group fly round。

问题是:

  1. 您将获得一定高度且彼此相邻的建筑物。太阳开始从左侧落下。如果有一定高度的建筑物,那么它右边的所有较低高度的建筑物都看不到太阳。您需要找到接收阳光的此类建筑物的总数。
    以第 1 个建筑物作为起始建筑物,找出递增子序列(不严格)。
    解决方案:GeeksforGeeks 链接
  2. 您将获得两个大小相等的数组,您需要使用第二个数组元素最大化第一个数组(将第一个数组元素与第二个数组元素交换。交换后,您不能再使用该元素)
    For ex: A: 3 4 6 8 9 and A : 5 7 3 6 8
    B : 6 7 8 8 9 B : 3 4 6 9 10
    Op: 9 8 8 8 9 Op : 10 9 6 6 8

    解决方案:GeeksforGeeks 链接
    如果 a[i] < b[i] ,则对第二个数组进行排序并开始交换。否则等待小于 b[i] 的下一个 a 元素并交换(天真的合并过程)

  3. 您将获得两棵树 t1 和 t2。您需要检查 t2 是否是 t1 的子树。如果是子树,则需要返回 t2 的大小(其中的节点数)。
    如果 t1 或 t2 中的任何一个为 NULL,则返回 -1 。
    如果 t2 不是 t1 的子树,则也返回 -1
    最有效的解决方案是:
    任何树都有 2 个唯一的遍历。 (要么是 (preorder,inoder) ,(in,post) ,(post,pre) ) 。因此,遍历它们并存储两棵树的任意两次遍历检查两棵树的第一次遍历(使用 KMP O(N+M) 进行字符串匹配),第二次遍历也类似。如果它们都为真(我的意思是模式存在于文本中)。然后你就完成了。否则返回-1
    这种复杂度是 O(N+M) 和空间 O(N+M) 。如果你想在没有空间的情况下做,请尝试递归方法,在最坏的情况下需要 O(N*M) 复杂度

显然,我入围了个人面试,所以我没有参加 Group Fly 轮。

个人面试
第一轮(技术):
面试官有点酷,直接问我问题
  1. 求一个未排序数组的中位数。我告诉他对它进行排序并根据 N( even orodd) 的奇偶校验找到它。 NLogN 解决方案。他让我优化它。然后我告诉他在最坏情况下 O(N) 方法中未排序数组的中位数……(你可以在 gfg 中找到它)。他问我是否可以使用 Quick select 来做到这一点……我告诉他这样做的方法并建议他最坏的情况可能会达到 O(N^2) 。他告诉我这很好,并要求我编写代码。我的代码有点乏味,但我终于能够得到正确的代码。
  2. 然后他问我关于散列(链接和开放寻址——插入、删除等)和 C++ 映射及其复杂性
第二轮(技术)
面试官很酷,问了我关于我的项目的问题,我简单地解释了他。然后他问了我编码问题。
  1. 您将获得一个未排序的数组,其中任何元素都可以重复任意次数。元素范围是 > size 。 N 太高 (10^7)。所以,我使用 unordered_map 解决方案给了他 O(N) 时间和 O(N) 空间散列解决方案。他很满意。
  2. 接下来的问题是验证日期,使其符合预期的格式,并且应该比当前日期少 20 年。如果无效,则需要抛出异常。首先,我遇到了所有可能的异常,然后我编写了一个接受方法。他让我写代码。这次我写了一个干净的代码,涵盖了所有可能的异常。他很满意。并告诉我,这些技术回合的座右铭是检查我们是否可以编写正确的代码,是否可以掌握基础知识并分析我们在其中的优势。

第三轮(人力资源轮)

经理非常非常酷,问了我类似的问题。为什么要加入微软?我们为什么要雇佣你和我的相关资料,他让我解决这个问题。找到多数元素(在数组中重复超过 (N/2) 次的元素。如果它不存在,则返回 -1。我告诉他在 O(N) 时间和 O(1) 内解决它的方法)使用摩尔投票算法的空间 在这几轮之后,我获得了 IDC 实习机会。

虽然我也被选中参加 GolmanSachs 面试,但我不得不接受这个提议,而且我没有参加 GS 个人面试。

感谢 GeeksforGeeks 帮助我修改所有概念并在 practice.geeksforgeeks.org 的帮助下练习它们。我在实习前的最后 15 天完全在 GeeksforGeeks 中解决问题并修改它们。

非常感谢团队!
如果你喜欢 GeeksforGeeks 并愿意做出贡献,你也可以写一篇文章并将你的文章邮寄到 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。

微软的所有练习题!