📌  相关文章
📜  三星(SRI-B)实习面试经验

📅  最后修改于: 2021-11-10 07:02:32             🧑  作者: Mango

编码回合:在 70 分钟内解决了 3 道问题。

  1. 给你一个二维矩阵,你必须按行对矩阵进行排序。
  2. 给你一个二叉树,你必须用它的子树的数据总和替换所有节点的数据值,不包括节点本身。
  3. 一家公司(比如三星)需要一些员工来维持其业务。由于业务不景气,每个月都需要调整员工人数。给你一个长度为 N 的数组 A[],其中每个 i [1, N] 表示第 i 个月所需的最少员工人数。公司可能会以 HIRE 的成本雇佣一些员工,并以 S 的遣散费解雇一些员工。 SALARY 是员工每个月的工资。

现在您必须找到公司的最低成本,以便公司可以运行 N 个月。最初,公司有0名员工。

给出了约束:

1 <= A[i] <= 41

样本:

Input: A[] = {10, 5, 6, 2}
       HIRE = 10
       S = 15
       SALARY = 10
Output:440
Explanation:
Month 1 : hire 10 employee cost till now (10+10)×10 = 200
Month 2 : fire 4 employee cost till now 200 + 4×15 + 6×10 = 320
Month 3 : no hire no fire cost till now = 320 + 6×10 = 380
Month 4 : no hire no fire cost till now = 380 + 60 = 440
Thus, minimum cost to company = 440

提示:只需暴力破解所有可能的情况。

我已经解决了所有三个问题。对于第一个问题,因为没有给出约束,我只是在 O(N^3) 中进行了蛮力。

第一轮(个人面试):面试官让我介绍自己,然后让我解释我的项目。然后他问了一个编码问题

编码问题:

  1. 给定一个自然数 N(N<=1e8) 和一个由 M 个整数 A 组成的数组,您必须找出从 1 到 N(均包含在内)之间有多少个数字可以被任何数组元素整除。

    解决方法:迭代数组的所有子集。如果子集中有奇数个元素,则添加其贡献,否则减去它(包含-排除原则)。

    (我必须为此解决方案编写代码)

  2. 这只是之前问题的延伸。给定一个由 M 个元素组成的数组,您必须找到可被任何数组元素整除的第 K 个元素。

    解决方法:同上一个。只需对数字进行二分搜索即可找到第 K 个元素。

然后面试官又问了一些C/C++方面的问题。

  1. C++ 中的前向函数是什么?
  2. C中的派生数据类型是什么?

(我无法回答上述两个问题,但解决了编码问题)

第二轮(个人面试):他问我为什么使用 MongoDB(MongoDB 比 MySQL 的优势)。然后他问了一个编码问题。

  • 给你 N 个字符串。您必须找到出现次数最多的 100 个字符串。

提示:最好的解决方案是使用 trie 和 min-heap。

我给了他3种方法。

  • 第一种方法:只是应用蛮力。
  • 第二种方法:字符串的比较可以使用哈希来完成,这只是第一种方法的改进。
  • 第三种方法:使用 Trie 数据结构。

他对我很满意。

提示:编码有很大帮助。在 codeforces 和 codechef 上进行竞争性编程对我的选择帮助最大。