微软面试经历(2018年校园实习)

在线编码回合:

null
    这一轮是在Cocubes上进行的。共有3个编码问题,分配的时间为75分钟。有各种各样的问题。我的问题是:

  1. 给定一个字符串,任务是找到字符串中字符的ASCII值的平均值 .
  2. Intfix评估 .
  3. 二叉树的表亲和 .

    其他问题包括:

  4. 次最小回文 .
  5. 给定一个包含n个数字的字符串形式的数字。查找删除m后的最小字符串。
  6. 在给定大小的组中反转链接列表

第二轮:

    这一轮是纸笔轮。问题包括7个基于C和数据结构的简短回答问题,以及一个编码问题。所有简短的问题都是强制性的。

  1. https://www.geeksforgeeks.org/detect-and-remove-loop-in-a-linked-list/

    简短的问题很简单,只要仔细阅读这个问题就可以了,因为有可能犯愚蠢的错误。

采访一:

    在这一轮中,我问的问题是:

  1. 在阵列中实现三个堆栈,以便充分利用空间。
  2. 我是 给出了一个最小堆,并要求编写代码将其转换为最大堆 (我必须编写一个干净的a代码,并在给定的堆数组表示上运行它);
  3. 我得到了一个2的互补二进制数,我必须把它转换成十进制。

    在那之后,关于数据结构的常规问题被问到,比如建立一个堆并证明它的摊销时间。

采访2: 这是我最喜欢的一轮,所以我想详细说明一下。在这一轮面试中,面试官问我在之前的面试中被问到了什么问题,我最喜欢的数据结构,我回答的是树,然后问我为什么喜欢树等等。关于树的基本问题。

  • 然后,我被要求实现一个文本编辑器(基本上是在给定文本文件中删除或插入任意数量的字符串后,以最佳方式执行模式搜索)。这一轮完全围绕这个问题展开。

    起初,我从一个蛮力解决方案开始,只是从每个索引位置开始搜索模式。我被要求为此编写代码。此外,我还建议使用KMP算法搜索。但面试官想从我脑子里得到一些东西,而不是一个已经存在的算法之类的东西,并问我是否可以进一步优化它。过了一段时间,我想出了构建后缀树的方法,这样搜索时间就缩短到了字符串的长度,但在最坏的情况下,空间复杂度是巨大的,每次插入或删除后,我都必须重新构建整个树。面试官对此印象深刻,但要求我进一步优化。后来我想用一个结构来实现它,该结构包含每个字符的一个集合,并存储该集合中每个字符出现的索引,并建议运行dfs来搜索模式(因此空间复杂度降低到O(n))。面试官对我尝试的方法印象深刻。后来他问我有什么问题要问他。

    小贴士:始终讨论你脑海中出现的第一个解决方案,无论其复杂程度如何,然后继续考虑优化的解决方案。

    采访3:

    这是最后一轮。我被要求做自我介绍。那么我的兴趣是什么?我希望在未来看到自己什么?我的成就等等。

  • 然后我被问到了基于C/C++的问题。就像OOP的基本特性(一个可以使用继承的现实例子),函数和宏之间的区别(一个基于宏的程序给了我,我必须找到输出)。多态性的类型。
  • 有人问我编码问题,我必须给出逻辑(不需要编码)。在这些问题中,我以前知道一个问题,所以我告诉他我知道,他改变了问题。 问题之一是在排序和旋转的数组中寻找一个数字 .

    后来他问我有什么问题要问他。

    6名学生得到了实习机会,我就是其中之一。

    小贴士:在面试过程中保持诚实 . 我只是想看看你们如何解决一个未知的问题,所以不要认为我的解决方案太复杂。与面试官讨论你的想法。一些学生也被问到了谜题(你可以在Geeksforgeks谜题部分找到示例)。

    谢谢你的阅读。

    @希德

  • © 版权声明
    THE END
    喜欢就支持一下吧
    点赞11 分享