📜  Microsoft 面试体验 SDE 1 校外(8 个月经验)

📅  最后修改于: 2021-09-23 06:14:19             🧑  作者: Mango

第一轮是Skype面试:
问题 1:给定一个 bst 找到 4 个数字,它们总和为一个给定的数字。
不使用额外空间

答案:将 bst 转换为 dll 并使用 2 个指针方法 O(n^3)

问题 2:它也是基于 BST 的,不要记住这个问题。

从第二轮开始,它在微软海得拉巴校区:
第二轮:
问题 1:给定一个按行和按列排序的矩阵,找出其中负元素的数量。
预期时间复杂度 O(n)。

答案:从左下角元素开始,如果元素为负数向右移动,如果为正数则向上移动计算一行中负元素的数量并记住边界条件。

问题 2:给定一个字符串数组,将该数组编码为一个字符串,以便 decode函数只能使用编码后的字符串进行解码。

答:对于每个字符串,将字符串的长度添加一个分隔符和字符串到编码的字符串。
如果字符串是“abcd”
将 4#abcd 添加到编码字符串

第 3 轮:

问题1:给定一棵二叉树和一个要删除的节点列表,找出每棵树删除后的根节点

例如,如果树是

1
          /   \
         2     3
        /  \
       4    5 

并且要删除的节点是 2,那么 answer 将包含 1, 4, 5
O(n) 单次遍历。
使用后序遍历回答。

问题 2:给定单词字典和移动键盘,给定数字找到从它开始的所有字典字符串。
https://www.geeksforgeeks.org/find-possible-words-phone-digits/ 与此类似

问题 4:
基于使用图形将 1 个字符串转换为另一个字符串。

第 3 轮:管理轮:

一般人力资源问题:
我们为什么应该录用你?
你为什么要改变?
除了项目你还做什么?
一个技术问题:
对 50 GB 的大文件进行排序。
对块进行排序,然后使用堆。
然后详细介绍了我将加入的团队。

在每个问题中,他们都希望纸上的生产就绪代码。

判决:被选中。