直飞面试经历 |第 20 组(校园内)
Directi 来我们学院招聘软件开发人员。他们来了两个职位:应用工程师和平台工程师。
编码轮
本轮在 Codechef 平台上进行。 90 分钟内有 3 个问题要解决。有2个插槽。以下是第一个插槽的问题:
1)给定一个数组形式的二叉树,使得第一个元素是根。对于节点 i,2*i 是左子节点,2*i+1 是右子节点(如果存在),考虑基于 1 的索引。现在每个节点都有一个值,第 i 个节点的值是 A[i]。您需要告诉任何 2 个叶节点之间的最大和路径。
2)标准0/1背包问题。
3) 给你 n 个蛋糕,除了一个比所有其他蛋糕重或轻的蛋糕外,其他所有蛋糕都相同。有一个重量平衡。您可以在天平的两侧保持相同数量的蛋糕,并找出哪一侧较重、较轻或两侧重量相等。请注意,两面都有相同数量的蛋糕,不可能两面都有 2 个蛋糕。给定蛋糕的数量(比如 n),q 查询每个描述的蛋糕数量,左侧蛋糕,右侧蛋糕,以及代表平衡的字符,可以是“=”、“>”或“
表示 (1, 4, 2)>(3, 5, 6)。
鉴于这些查询,您需要找到有缺陷的蛋糕。如果无法找到有缺陷的蛋糕,则输出-1。
我解决了所有问题,并被要求进行面试。
第一轮(技术面试)
给你字符串括号。您需要使用这两个字符串创建另一个字符串,以便在生成的字符串中,所有括号都是平衡的。括号的顺序不能改变,例如,如果你从第一个字符串中取 2 个字符/括号,那么这些括号的顺序在结果字符串中不能改变。你需要告诉你可以制作的平衡字符串的数量。例子:
))
((
ans:2,你可以使()()和(())
预期时间复杂度: O(n*m) 其中 n 和 m 是字符串的长度。
第二轮(技术面试)
给你一张有 n 条腿的桌子。每条腿都有长度。您可以移除一些腿,这样在移除一些腿之后,您总共有 m 条腿,如果 maxlen 是具有最大长度的腿的长度,那么至少 m/2 条腿的长度应该是 maxlen。您已获得移除每条腿的费用。第 i 条腿的成本为 C[i],长度为 L[i]。您需要最小化移除支腿的总成本。
预期时间复杂度:O(n*logn)。请注意,您可以提供摊销解决方案。这是一个非常好的问题,面试官帮助我解决了这个问题。
第 3 轮(Skype + 技术)
一些学生在Skype 轮之前还有一轮。您需要通过 3 次面试中的 2 次。我通过了前 2 轮,所以没有第 3 轮。这一轮对我来说是迄今为止最艰难的。
首先他问我关于我的项目。然后他问了与我的项目有关的问题。他问如果没有服务器来存储您的消息,您将如何实现聊天应用程序。
然后他问了有关 DBMS 的问题。他问我们如何才能快速检索数据。我告诉他索引。然后他问可以使用哪些数据结构。我告诉他使用数组、bst、B 树的各种方法。他询问 B-tree 在索引方面如何优于 bst。
然后他问,给定 2 个 github 文件,一个在提交之前,一个在提交之后,你需要告诉这些文件之间的区别,比如插入和删除。给出一个相同的算法。
我的采访就这样结束了。