微软面试经历 | Set 132(Bing Team 软件工程师)
我最近参加了微软必应团队的软件工程师面试。
第1轮:
微软面试经历 |第 131 集
- 它的初始筛选轮。它是通过Skype发生的。
- 给定 n*n 矩阵,每个单元格中有一些元素。如果任何单元格中有“0”,那么我们必须将相应的行和列设置为“0”
时间复杂度:O(n*n) 空间复杂度:O(1) - 给定一个大小为 n 的元素数组。您应该找到重复超过 n/2 次的数字
时间复杂度:O(n)
放映一轮后,他们让我来参加 4 轮 F2F 轮次。我访问了 Microsoft IDC 海得拉巴。
第 2 轮:
- 给定排序的数字数组和一个总和。我们必须找到总和等于给定总和的任何两个数字。
时间复杂度:O(n)
- 给定具有父指针和两个节点的二叉树。查找给定二叉树中给定两个节点的 LCA
struct TreeNode { int data; TreeNode *left,*right,*parent; };
每个节点的父指针指向它的父节点。根节点的父指针指向 NULL
时间复杂度:O(logn)
第三轮:
- 给定两个链表。找到这两个链表的交点
- 它基于二叉树。我忘了问题🙂
- 智能手机中搜索功能的设计讨论
第四轮:
- 给定一个链表,每个节点的随机指针指向给定链表中的某个随机数。克隆链表
struct ListNode { int data; ListNode *next,*random; };
- 设计和实现 DNS 缓存。
要求:
缓存的大小必须是固定的,这将由想要使用此缓存的用户决定。
如果该条目在缓存中不可用,则它应该调用服务器以获取 ipAddress 的详细信息并将其存储在缓存中。
第五轮:
- 以螺旋顺序打印给定矩阵
- 我忘记了问题。它与数组有关
- facebook 上提供的关于 Top Trends 功能的设计讨论。