📜  微软面试经历| 4年以上经验

📅  最后修改于: 2021-09-23 05:43:42             🧑  作者: Mango

第1轮:-

  • 首先介绍项目和教育。
  • 然后他问我一个关于我之前做过的项目的问题(与事务同步相关的问题,如果多个服务器上的多个事务同时发生,你如何处理)
  • 然后他问我一个问题(你给出了非负整数数组,要解决的问题是你必须反转数组但数组中存在的所有零都应该移到右侧)

    例如

    Array = {0, 4, 2, 3, 0, 9, 10, 0, 34,
     8, 0, 23, 56, 12} 
    Resulted array = {12, 56, 23, 8, 34, 10, 9, 
    3, 2, 4, 0, 0, 0, 0} 

    你必须以 O(n) 时间复杂度解决这个问题,你应该使用常数空间 O(1) 他要求我编写相同的代码以通过所有边缘情况并为这个问题编写所有可能的边缘情况。

第二轮:-

  • 他介绍了自己和他所从事的项目,然后开始询问我的经历和我所做的事情
  • 问关于Java 的问题,因为Java是我的主要语言和 HashMap 的工作,它是如何工作的。
  • 然后他让我设计数据结构以便我们可以执行操作
    • insertFirst(value):- 插入列表头部的值时间复杂度 O(1)
    • insertLast(value):- 插入列表最后的值时间复杂度 O(1)
    • deleteValue(val):- 如果列表包含多个值,则从列表中删除该值,那么它应该只删除第一次出现的预期时间复杂度 O(1)。
    • isExist(value):- 如果数据结构中存在值则返回真,否则返回假,预期时间复杂度 O(1)
  • 使用最好的数据结构编写上述问题的代码并覆盖所有测试用例,将近 1 小时。完全解决这个问题

第 3 轮:-

  • 我自我介绍,我们都来自同一所大学(NITK)
  • 然后他转向编程问题,即您已经给出了两个单链表,并且您必须添加这两个链表的约束,您无法修改输入链表 list1 => 9->5->4 list2 => 8 ->0->7 结果列表 => 1->7->6->1 **你不能修改输入链表**
  • 然后他让我开发最大吞吐量的编程语言,我们就这个问题讨论了我们可以使用什么数据结构。

第 4 轮:-

  • 这是招聘经理回合,但看起来不像招聘经理回合 🙂
  • 他从这个问题开始,问题是你已经给出了只包含小字符的 n*n 矩阵,你还给出了包含英文有效单词的字典,你必须找到可以形成多少个单词使用这个矩阵,单词必须包含在字典中,你可以在矩阵中移动到左、右、上、下和对角线
  • 最佳
  • 敏捷
  • brg
  • 可能的词是:- 1. top 2. tab 3. bat 4. pig 5. bag 6. gip
  • 讨论你必须为 Dictionary 使用什么数据结构,我已经通过使用 DFS 解决了这个问题。对于字典,我使用了 Trie 数据结构。

2天的全面完成后,我接到了HR的电话,我被微软选中了,梦想成真。

专注于编码和所有边缘情况通过。