微软面试经验|第169组(SDE 2为3.5年经验)

第一轮(在线编码):

null
  1. 给定一个包含正整数和负整数的数组,求最大乘积子数组的乘积 .
  2. 对仅交换两个元素的几乎排序的数组进行排序 .
  3. 给定一个整数值和指向链表头部的指针,从列表中删除大于指定值的所有节点 .

第二轮(DSA):

  1. 求BST的中值 .BST也可以有副本。必须使用递归和回溯来编写生产级代码。我告诉他各种方法。然而,他只使用了两个中位数。

第三轮(DSA):

  1. 介绍和详细的项目讨论。
  2. 查找数组中的多数元素。 多数元素是数组大小超过一半的元素。我们讨论了各种方法,最后不得不为其中一种方法编写工作代码。
  3. 二叉树的左视图。 工作代码是必需的,代码中有一些问题。比如,为什么要使用静态变量,以及如何在不使用任何静态和全局变量的情况下使用静态变量。
  4. 指针的一些问题,比如,

链表的结构是:

struct node{
     int val;
     node *next;
}

那么,如果下一步将*从节点*中移除,会发生什么呢。 还有一些更深层的问题。

第四轮(设计) .

  1. 设计一个实时URL垃圾邮件过滤服务。我们有关于数十亿个URL的信息,无论它们是垃圾邮件还是非垃圾邮件。我们需要拿出一个架构解决方案来存储所有URL,并以最小的延迟检索信息。有一些限制,比如,你的记忆很小。因此,您只能在内存中为查询加载几个URL。
  2. 实现自己的malloc和free for application x,它应该控制应用程序x的堆内存使用。讨论了为请求分配内存的各种方法。

第五轮(小时)

  1. 项目讨论和一些行为问题。
  2. 有报价吗?

第六轮(招聘经理):

  1. 介绍
  2. 详细讨论最近的项目。
  3. 一些行为问题。
  4. 给定二叉搜索树的前序遍历,构造BST。 需要完整的工作代码。
  5. 给定事件,比如打开,关闭,拉椅子。设计一个架构来计算给定时间范围内的事件数。时间范围可以是分钟、小时或天。
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享