📜  微软面试体验集127 | (IDC 校内)

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

微软面试体验集127 | (IDC 校内)

第 1 轮 - 在线评估
平台 – cocubes.com
持续时间 - 75 分钟
格式 - 3 个编码问题
最高分 – 10 分
大约有 120 名学生参加了这次测试。问题是随机的,所有学生都有不同的问题集和一些重叠的问题。 1.完成以下函数-

int findMax(TreeNode arr[], int size_of_array){
    // code goes here
}

其中 TreeNode 是一个定义为的结构:

struct TreeNode{
   int feet;
   int inches;
}; 

该函数应该返回 TreeNode 的最大值。这应该通过计算每个元素的 (12*feet+inches) 来完成。它由2个标记组成。 2.完成以下函数——

Node * findIntersection( Node* head1, Node*head2){
   // code goes here
}

其中“节点”是链表节点的结构,定义为:

struct Node{
  int data;
  struct Node *next;
}; 

该代码应该递归地找到两个链表(已经排序)之间的交集,条件是不使用额外的空间。这道题3分。
例子:

Input-
1->2->14->15->26
2->10->14->16->18->26->32
Output-
2->14->26


3.完成以下函数——

Node * alternateReverse( Node* head1, Node*head2){
   // code goes here
}

其中“节点”是链表节点的结构,定义为:

struct Node{
  int data;
  struct Node *next;
}; 

AlternateReverse() 必须从链表中删除偶数节点并将它们以相反的顺序附加到末尾。不允许有额外的空间。这是5分。
例子:

Input-1->2->3->4->5->6
Output-1->3->5->6->4->2

Input-1->2->3->4->5->6->7->8->9
Output-1->3->5->7->9->8->6->4->2

第 2 轮 – 集体飞行
本轮共有约40名学生入围。这是一个基于笔纸的测试。候选人大致分为4-5人一组,每组一名导师负责。我们被问到一个问题,我们被要求用任何高级语言编写函数解决方案(不允许使用 Ruby、 PHP、 Python等脚本语言)。我们被分配最多 45 分钟。

问题 -给定两个长度相同的字符数组(不是字符串),并将它们的长度作为函数的参数。我们必须找出第一个字符串是否是另一个字符串的旋转。我们不应该使用任何额外的空间。时间复杂度可能是二次的。

导师不断地来到每个人面前。他首先问我在想什么。我用一个例子告诉他这个方法,然后把我的代码写下来。导师们正在帮助和激励。他们只需要代码。

第三轮——技术面试
本轮选拔了大约25名学生。
面试官做了自我介绍,然后让我介绍一下我自己。然后她让我从一个字符串数组中找到最长的公共前缀。我们讨论了一种方法,然后我不得不把它编码下来。她还问我时间复杂度,然后让我优化它。我给出了另一种方法,然后她让我编写代码并给出时间复杂度。我们用一种新方法进一步优化了解决方案,我也对其进行了编码。面试官很满意。
https://www.geeksforgeeks.org/longest-common-prefix-set-1-word-by-word-matching/
最后她问我有什么问题要问她吗?我问了她一个问题。面试进行了大约1小时10分钟。

第 4 轮——技术面试
面试官介绍了他,然后我做了。他给了我2个问题——

  • 检查给定的二叉树是否为 BST。讨论了不同的方法。编码其中之一。
    https://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/
  • 使用栈实现。我们讨论了方法并优化了操作,然后对它们进行了编码。 https://www.geeksforgeeks.org/queue-using-stacks/

他问我有什么问题要问他吗?我也问了他一个。面试进行了大约45分钟。

第五轮——人力资源面试
面试官在微软有 20 年以上的工作经验。他做了自我介绍,问我有没有什么问题要问他。然后,我们讨论了我简历中的成就和职责职位约 20 分钟。

  • 然后他让我实现 Akinator 游戏。我们讨论了如何开始,会遇到什么问题,数据库会是什么样子,如何选择下一个问题,为什么选择它等。讨论持续了大约 30 分钟。他最初提到这个问题没有正确或错误的答案,他只想看看我的思维过程是如何运作的。我们俩都在大声讨论和思考。 Akinator
  • 然后他问了我一个谜题。如果我有 10 个球,其中 1 个的重量稍轻,并且我有一个重量平衡器,那么找到“坏球”所需的最少比较次数是多少?我们讨论了 10 个球和 9 个球的解决方案。然后我应该概括解决方案。

面试进行了大约1小时。第二天他们公布了结果,选出了5名学生。