📌  相关文章
📜  Arcesium 面试经验 – 高级软件工程师(3 年经验)

📅  最后修改于: 2021-09-23 05:36:20             🧑  作者: Mango

第 1 轮:在线 HackerRank

有3个问题。

  1. 找到不能表示为给定数组的任何子集的总和的最小正整数值。 https://www.geeksforgeeks.org/find-smallest-value-represented-sum-subset-given-array/

  2. 从给定的数组中生成两个 BST,使得它们之间的最大高度最小。 https://www.geeksforgeeks.org/generate-two-bsts-from-the-given-array-such-that-maximum-height-among-them-is-minimum/

  3. 给定一根长度为 n 英寸的杆和一个价格数组,其中包含所有尺寸小于 n 的价格。确定通过切割杆并出售碎片可获得的最大值。 https://www.geeksforgeeks.org/cutting-a-rod-dp-13/

我解决了前两个问题,并被要求在下周末在海得拉巴进行 F2F 回合。

F2f 第 2 轮:

F2f 有 3 轮比赛,每一轮都是基于淘汰赛。

  1. 第一轮有三个问题
    1. 如果您有一个杯子列表,其中每个值代表一个杯子直径,并且可以将较小直径的杯子放入较大直径的杯子中(并且相同直径的杯子不能相互叠放),那么请设计一个策略堆叠它们。我建议使用 HashMap 将杯子存储为键,将值存储为计数。然后迭代 HashMap 并在迭代 HashMap 时递减计数。所以对于cups = [1, 2, 3, 4, 6, 1, 2, 3],哈希图看起来是map = {1:2, 2:2, 3:2, 4:1, 6:1}。然后你可以减少迭代哈希图的计数以找到堆栈的数量。他问我复杂性,我回答 O(n*2) 因为它会一遍又一遍地迭代 HashMap 并填充它一次。然后我被问到我是否可以在一次 HashMap 中完成。我无法回答这个问题,经过讨论后意识到该值的最大值是所需的最小堆栈数。
    2. 如果您有一份明智的一天价格清单并提供两次交易机会,那么您会进行哪两笔交易。我无法解决这个问题 https://www.geeksforgeeks.org/stock-buy-sell/。
    3. 查找两个列表的交集。我先建议了散列方法,他让我改进它。所以我建议采用长度差异法。 https://www.geeksforgeeks.org/write-a-function-to-get-the-intersection-point-of-two-linked-lists/
  2. 第二轮有两个问题:-
    1. 找到下一个更大的数字。 1234 – > 1324。我无法解决这个问题。 https://www.geeksforgeeks.org/find-next-greater-number-set-digits/
    2. 检查树是否为 BST 的程序。 https://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/

由于是淘汰赛,我在F2F第二轮只能做1题,被淘汰了。

总而言之,我觉得第二轮的过程有点困难,在帮助和问题方面。整个过程很好,第一轮面试官帮了很多忙,HR安排了所有的旅行票。基本上它对 DS、算法和Java。