Directi SDE-2 面试经历
总共有 2 次电话轮次和 4 次现场轮次。
电话轮次:
第1轮
给定一个长度为 N 的数组。您必须从给定数组中选择两个不重叠的 K 长度子数组,以使所选子数组的元素之和最大。
鉴于 2*K <= N。
例子:
arr : 5 3 7 9 10 3 1 7 9 9 9 和 k = 3
这里 2 个子数组将是 7, 9, 10 和 9, 9, 9
第二轮
给定一个整数数组和一个整数 k,找出其中位数 >= k 的子数组的数量。如果数组中的元素数是偶数,则中位数将是索引中存在的数字array_size/2 - 1
。
例子:
输入 arr : [3, 6, 4, 5] 和 k = 4
以下是中位数 >= k 的子数组
[6]
[4]
[5]
[6, 4]
[4, 5]
[3 6 4]
[6、4、5]
[3、6、4、5]
所以这里的答案是 8。
现场轮次:
第1轮
预订我的节目低级设计。
这里我们首先讨论一下主要实体和舱位、机票预订流程。然后面试官让我写代码来锁定一些过期的座位。
第二轮
在网球比赛中,球员必须赢得S盘,并且要赢得每一盘,他/她必须赢得T发球。
给定一个游戏的发球获胜列表,您必须找到 T 和 S 的所有可能组合,使得输入字符串有效并且在字符串末尾有一个明确的获胜者。
A 表示选手 A 赢得发球局。
B 表示球员 B 赢得发球局。
例子:
ABABA 将有 2 种 T 和 S 组合:
T=1, S = 3 :这里因为 T = 1,所以第一个赢得发球局的球员将赢得一盘。由于 S = 3,所以第一个赢得 3 盘的玩家将赢得比赛。所以在这种情况下,A 赢得了比赛。
T = 3, S = 1在这种情况下,A 赢得了比赛,因此赢得了比赛,因为 S = 1。
没有其他有效的 T 和 S 组合是可能的,所以在这种情况下答案是 2。
第三轮
设计聊天信使应用程序,如果用户 A 的消息已经到达服务器,那么它应该首先传递给用户 B,然后只有用户 B 可以发送他的消息。
我们讨论了消息流和在客户端或服务器端构建约束。
第四轮
在这一轮中,我们主要讨论了我的工作和项目中的挑战。我们讨论了一些与 kafka 相关的设计问题。
然后面试官让我建立广告逻辑,我们有 N 个广告和 k 个广告位(k