📜  直飞面试经历 | Set 25(平台工程师校外)

📅  最后修改于: 2022-05-13 01:58:38.385000             🧑  作者: Mango

直飞面试经历 | Set 25(平台工程师校外)

申请方法:我通过员工推荐申请了Directi。

第 1 轮:在线编码轮(Codechef,90 分钟)

问题 1 :简单,即席

问题2:

问题 3:

修改后的背包 DP 问题

第 2 轮:算法轮(Skype,45 - 50 分钟)

给你一个方格(NxN);网格上的每个位置要么是砖块 (B),要么是空的 (_)。

砖的总数正好等于在网格中建造一堵“墙”所需的数量。请参阅示例以获得更清晰的理解。

也就是说,最后,所有砖块(B)都应该放置在边界位置。

用于将砖块从位置 移动到 |ix| + |jy|使用燃料。

网格中的每块砖都可以以相同的概率移动到边界上的任何位置。这样做所需燃料的预期价值是多少?每块砖最多只能移动一次。

例子
最后(移动所有砖块后),网格应该如下所示:

1 <= T <= 100
1 <= length(A) <= 16
length(B) = length(A)

暗示
你得到了所有砖块的初始位置,并且你知道最终位置。
由于所有积木都相同,因此您可以将任意积木放在任意边界位置。

假设有'b'个边界位置= b块
因此,您需要将旧位置映射到新位置。

在蛮力方法中,尝试所有位置将是 O(b!)。
但是,您可以更好地了解概率如何逐块累加而不是按排列方式累加。

预期:O(n)
第 3 轮:算法轮(Skype,45 - 50 分钟)

第 4 轮:技术知识轮(Skype,45 分钟)

  • 深入谈论你的一个项目。准备好回答有关它的任何问题。你也可以谈谈你的实习项目。我谈到了我的 GSoC 项目。
  • 准备好回答简历上的任何内容。我被要求谈谈我简历上列出的另一个项目。
  • 你将如何实现 git 的差异功能?准备好现场跟进问题和进一步优化。
  • 我得到了一个示例代码,其中包含一个 add_balance() 和一个减法平衡()函数,如果两个线程访问它,我被要求解释问题。你会如何纠正它?(使用互斥锁)
    • 后续问题:(您认为)互斥锁操作如何在操作系统中实现等待和信号?
  • 数据库索引
    • 什么是索引?它们有什么用处?
    • 如果你必须建立一个索引,你会使用什么数据结构?
    • 为什么是 Btree 而不是普通的 BST(当 Btree 的比较次数实际上更大时)?