📜  微软实习面试经验(校内)

📅  最后修改于: 2022-05-13 01:57:54.736000             🧑  作者: Mango

微软实习面试经验(校内)

第 1 轮(在线编码轮 - 90 分钟):在线测试在 https://mettl.com/ 上进行。有 90 分钟的时间来解决和编写 3 个问题。这些问题基于基本的实施问题(常见于 CodeChef、Codeforces、GeeksforGeeks 和其他在线平台)。三个问题中,两个简单,一个中等难度。

  1. 给你 n 个密码。您必须打印不同密码的总数。在每个密码上,您可以执行任意次数的操作,可能为零。该操作被定义为,如果索引号的差为偶数,则可以交换字符串的任何 2 个索引上存在的数据,即 swap(a[i], a[j]) if (ji)%2==0。
    Test Case: Input:  n=5 and 
    passwords are=[“abcd”, “cdab”, “bacd”, “bdca”, “cdba”]    
    Output: 2            

    解释:由于“cdab”可以转换为“abcd”和“bdca”,“cdba”可以转换为“bacd”,所以你只能得到2个不同的密码。

  2. 今天是 Anshul 的生日,所以他带来了 n 块巧克力,他有 k 个朋友。他必须通过以下方式将所有巧克力分发给朋友。第一个孩子得到 1 第二个得到 2 第三个得到 3 个,依此类推,所以如果有足够的巧克力,那么第 k 个孩子得到 k 个巧克力。现在如果还剩下巧克力,那么他再次将 k+1 巧克力给第一个孩子 k+2 给第二个孩子,依此类推,直到他分发所有巧克力。所以你必须打印 k 个整数来定义哪个孩子得到了多少巧克力。
    Test Case: 
    Input: n=25 and k=5   
    Output: [7  6  3  4  5]                                                                                           

    解释:所以在第一次巧克力分配将是 [1 2 3 4 5] 所以现在总共使用了 15 个巧克力在第二次第 1 个孩子将得到 6 个更多的糖果所以他的糖果总数将是 7 现在我们只剩下 4 个更多的糖果可以给第二个孩子,因为他可以得到多达 7 块巧克力,但我们只剩下 4 块了。所以最终的答案是 [1 2 3 4 5] + [6 4 0 0 0] = [7 6 3 4 5]

  3. 给你 M 表示模数和 N 层数。现在在第一层,你有 1 艘动力船 v=2。现在对于第 i 层中功率为 v 的每艘船,在其下一层中都有功率为 0 到 v*(v+1)%M-1 的不同船。现在给你 M 和 N。你必须找到所有层 % M 中的船舶总数。
    Test Case: 
    Input: M=4 N=2  
    Output: 3

66名学生被选中进入下一轮。

第 2 轮(团体飞行轮):45 分钟:在这一轮中,我们都被要求在 45 分钟内解决一个问题。我们必须在 A4 纸上(使用任何编程语言或伪代码)编写函数,返回答案及其时间和空间复杂度。我们被建议为该问题编写尽可能多的解决方案,但会考虑最佳解决方案。

提出的编码问题是:

  1. 给定一个大小为“n”的数组。问题是将数组中存在的所有零移动到数组的右侧,以保持非零元素的顺序。

    例子:

    Input : 
    array : [0, 10, 7, 0, 0, 0, 8, 0, 3, 6]   
    n: 10  
    Output : 
    array : [10, 7, 8, 3, 6, 0, 0, 0, 0, 0] 

42名学生被选中进入下一轮。

第 3 轮(技术面试 1 - 大约 45 分钟):面试官询问了有关面向对象编程的概念、数据结构和算法的问题。面试官描述了一些场景,并询问了如何用虚函数、多重继承、运算符覆盖等 OOP 概念来解决它们。

提出的编码问题是:

  1. 给定两个字符串P 和 Q,问题是检查这两个字符串是否是彼此的排列。

    例子:

    Input : 
    string P: ‘aBca’ and string Q: ‘Baac’ 
    Output : 
    P and Q are permutations of each other.
  2. 一条街上有'n'座建筑物。一只猴子可以一次跳跃穿过一两座建筑物。猴子可以通过多少种可能的方式从第一栋建筑到达最后一座建筑?

    例子:

    Input : 
    n = 4 
    Output : 
    no. of possible ways: 3
    Explanation : 
    The possible ways can be
    (1->2->3->4; 1->3->4; 1->2->4)

对于每个问题,我在纸上写了 C++ 函数,他让我解释我的解决方案的时间和空间复杂性以及可能的极端情况。他还讨论了解决问题的其他可能方法。

第 4 轮(技术面试 2 - 大约 30 分钟):在这一轮中,我被要求使用 DS 和算法概念以及一些谜题来解决一些现实生活中的问题。

  • 给定一个网站主页的超链接,我的任务是打印该网站上存在的所有“死链接”。还为网站的每个页面提供了每个网页中存在的链接列表。
  • 然后面试官要求解决和解释一些数学和逻辑难题。

第五轮(HR面试——20分钟左右):一开始,面试官让我介绍一下自己和从学校到学院的经历。

  • 然后他浏览了我的简历并询问了我的项目和技能。他问了我一些基于逻辑的问题。
  • 然后他问我喜欢他们的Pre-Placement Talk 中的哪些内容以及我为什么想加入公司。

    结果在两个小时内公布,我和其他 9 名学生(我的同班同学)一起被选中。

判决:选定