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

在线编码回合:

null

这是在Cocubes上进行的。75分钟内有3个问题需要解决。我的问题是:

  1. 给定一个字符数组,求数组中ascii字符的平均值。 例:i/p=ab12,o/p=73.5(2分)
  2. 对给定中缀表达式(作为字符数组)的求值。 例:i/p=4-5*14/7+2,o/p=-4(3分)
  3. 通过从给定的数字中删除k位,找到可能的最低数字。 例:i/p=4312389,k=3,o/p=1238(5分)

在200名学生中,大约有60-65人被选中参加纸笔项目。得分超过5分就足以通过这一轮。关于cocubes,它是一个简单的ide,在其中只能测试代码的编译错误和很少的基本测试用例。我们无法为自定义测试用例运行代码,但您当然可以修改输入字符串以进行检查。

纸笔圆:

这一轮包括7个简短问题(基于C语言),每个问题3分,一个编码问题6分。编码问题是检测并删除链表中的循环。所有的问题都是强制性的。大约24名学生开始进行面对面的个人面试。

第一轮:

面试官浏览了我的简历,问了一些面向对象的问题,比如什么是虚拟函数和析构函数,以及new和malloc之间的区别。然后,如何释放内存,以及:-(新建和释放)和(malloc和删除)的组合会发生什么。然后他问了我两个编码问题:

  1. 给定一个二叉搜索树,将其转换为双链表 .他让我写一些测试用例。
  2. 给定一个按行排序的n*n矩阵,按非降序打印矩阵元素。 允许O(n)的空间复杂度。我用min heap解决了这个问题。

对于这些问题,试着首先告诉你的方法,并使用测试用例来试运行你的方法。然后,当被要求时,就开始编写代码。

第二轮:

有人问我:

  1. 有两条平行线。一条线有n个点,另一条线有m个点。各点以之字形相互连接。找出交叉点的数量,即连接点的交叉点。类似于这个问题——https://www.geeksforgeeks.org/counting-cross-lines-array/
  2. 给出了N个矩形上的一组,每个矩形的边与x轴和y轴对齐。给了另一个矩形,我必须检查集合中有多少个矩形完全位于新矩形内。我们可以沿着x轴和y轴对集合进行排序,并使用4个二进制搜索来查找矩形的编号。
  3. C++和java中的异常处理。

还有一轮是为被选中的学生准备的。共选出6名学生。

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