📜  优步面试体验(2018-19 校园实习)

📅  最后修改于: 2021-11-15 08:28:18             🧑  作者: Mango

第1轮:

第一轮是在线编码轮,由 3 道编码问题组成,需要在 90 分钟内尝试。

问题 1 :-

在办公室安排了一个会议,持续时间为 t 并从时间 0 开始。在会议之间有 n 个演示,其开始和结束时间被给出,即第 i 个演示从 s[i] 开始并在 e[i] 结束]-1。演示文稿彼此不重叠。您将获得 k,这是您可以重新安排保持原始顺序不变的最大演示次数。请注意,演示文稿的持续时间无法更改。您只能更改开始和结束时间。您的任务是最大化会议期间没有安排演示的最长时间段。

约束:-

1<=t<=1, 000, 000, 000

0<=k<=n

1<=n<=100, 000

e[i]<=s[i+1], 0<=i

s[i] < e[i] 对于 0<=i<=n-1

问题2 :-

您将获得一个 x m 网格,其中包含值 0 和 1。值 1 表示您可以进入该单元格,而 0 表示不允许进入该单元格。您从网格的左上角 (1, 1) 开始,您必须到达右下角 (n, m),这样您只能从每个单元格向右或向下移动。你的任务是计算达到目标的方式总数。

约束:-

1<=n, m<=10, 000

问题 3 :-

您将获得图中的边列表,对于由边连接的每对顶点,它们之间有两条边,一条弯曲边和一条直边,即元组 (x, y, w1, w2) 表示在顶点 x 和 y 之间,有一条权重为 w1 的直边和一条权重为 w2 的弯曲边。给定两个顶点 a 和 b,您必须从 a 到 b 穿过一系列边,以便在整个路径中最多可以使用 1 个弯曲边。你的任务是找到满足上述条件的从 a 到 b 的最短路径。

第二轮:

这是一个技术回合,持续了大约一个小时。我被要求设计一个蛇和梯子游戏,并用我选择的语言编写相同的代码。我使用随机数来设计棋盘,然后我被要求在两个玩家之间玩游戏,我编写了相同的代码。他为这个问题引入了一个技巧,并让我对棋盘的难度进行评分。我想到了从开始到结束的最短路径(广度优先搜索),但他说更好的方法是计算从一开始就达到特定数字的概率。因此,我使用动态规划来计算在 x 次移动中达到特定数字的概率,其中 1<=x<= 将宣布平局的移动次数的最大上限。然后他问我他不想要一个只需要 15 步就完成的游戏,因为这会让游戏变得无聊。所以我被告知要计算游戏在 15 到 100 步内完成的概率。最后,他让我通过看球员的位置来告诉我当时处于获胜位置的人。他对我的回答很满意。

第 3 轮:

这是一个解决问题的回合,持续了 75 分钟。他给了我一个非常复杂的问题。在这里……

有3个整数a,b,w。

有2个等式——

  1. w+a=b
  2. a (按位与) b = 0;

我得到了 w 的值,他让我计算满足这两个方程的对 (a, b) 的数量。假设没有溢出。我使用递归 + 位操作来解决这个问题,尽管我也需要他的一些帮助,但他似乎对我的方法很满意。

PS :- 3 小时后我接到了要约的电话。