微软面试经验(适用于 SDE-1)
面试过程总共有四轮。 3轮数据结构和算法,一轮是关于系统设计。我被要求为所有这些问题在白皮书上编写代码。
第1轮:
1. 给你一个所有人进出办公室的时间。任务是找出最大人数的时刻是多少,如果超过一次,则第一次返回。
输入格式:
[进入时间数组]
[退出时间数组]
输入:
9 1 2 5 6 8
10 4 3 6 7 9
输出:2
解释:在时间 2 有两个人。在时间[1] 来的人和在时间[2] 来的人仍在办公室内。
2. 这是第二个问题。
第 2 轮:
- 这是第一个问题。
- 这个问题与第一轮第二个问题相同,但这里要求反转的数据结构是队列,并且不使用任何额外的空间和 O(n) 时间复杂度。
- 输入格式:[队列]、[组大小]
- 输入:4 5 3 2 5 6 7 1, 3
- 输出:3 5 4 6 5 2 1 7
第三轮:
这是一个设计回合。问的问题是这个。
第四轮:
这是这一轮要问的问题。
预计所有问题都将以 O(n) 时间复杂度和 O(1) 时间复杂度来解决。最后一轮问题所需的时间复杂度为 O(logn),空间为 O(1)。