📜  三星研发面试经验 |校园 2019

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

三星研发面试经验 |校园 2019

我于 2019 年 9 月 4 日入选三星班加罗尔研发中心。

职位:软件工程师(网络软件研发)

发布地点:班加罗尔

CGPA 截止: 7.0

第1轮:

第一轮是在线编码,我们可以在他们自己的编码平台上进行。除了内存分配/释放、打印和扫描等基本功能外,我们不应该使用任何内置的库函数。它由一个问题组成,时间为 3 小时。该问题由 50 个测试用例组成。只有那些清除所有 50 个测试用例的人才会被选中。

  • 给定一个大小为 m*n 的二进制矩阵。沿列应用激光时,补充整个列(将 0 更改为 1,反之亦然)。给定 k,沿列施加激光的次数。您可以在任何列上应用激光任意次数,使激光应用的总次数为 k。矩阵的秩是每一整行由 1 组成的行数。在给定矩阵上应用激光 k 次后,问题是找到最大秩。
    • 我创建了一个大小为 m 的二进制数组。数组中第 i 个索引处的 0 和 1 表示激光在第 i 列上施加偶数和奇数次(二进制数组第 i 个索引中的 1 表示与二进制矩阵中的第 i 列互补)。让 s 是二进制数组的总和。如果 (ks) 是 2 的倍数,那么激光被应用 k 次就是这种情况。对于二进制数组的每个排列,如果满足上述条件,则将通过计算每个元素为 1 的行数从激光应用矩阵计算 rank,如果 rank>max_rank,max_rank 将更新为 rank。

正常的蛮力解决方案不会通过所有测试用例。我不确定是否有任何时间复杂度较低的 DP 解决方案。

我是唯一入围面试的人。进一步的回合是通过Skype在线进行的。

第 2 轮:

这一轮从第一轮编码问题的讨论开始。以下是我在采访中记得的一些问题。

  • 你最喜欢的排序算法是什么?
  • 堆中插入和删除的复杂性。堆的高度。
  • 您将如何在数字的二进制表示中找到第 k 位?
  • memset函数的语法和语义的基本问题。
  • 什么是动态规划? DP中有哪些不同的方法,这些方法之间有什么区别?
  • 有哪些不同的系统调用并详细解释它们?
  • 什么是互斥量,它与信号量有何不同?
  • 给定一个数组和总和。查找数组中的任意数量的元素是否添加到给定的总和中。

首先,我通过查找数组的所有子集并添加它们来解释蛮力解决方案。后来我给了他DP的方法。他要求我用任何语言编写整个代码,并要求构建 DP 表作为示例。

  • 设计一种算法来维护动态内存分配。

首先我讲述了使用二进制数组维护所有内存块的基本方法(1表示使用的相应内存块)。然后我建议我们可以用链表ADT来表示(参考https://silcnitc.github.io/run_data_structures/heap.html中的固定内存分配

第三轮:

这一轮从询问我对上一轮的反馈开始。我在暑期实习期间解释了我的项目。我被问了很多查询(NOSQL 和 SQL)。这最多 45 分钟。

在Java中很少有人问其他问题。

  • 类变量和静态变量有什么区别?
  • 解释不同类型的访问修饰符?
  • 简单解释一下不同类型变量的内存分配?如何调用类变量?
  • 当两个变量指向相同的内存位置并且一个变量释放内存位置时。现在另一个变量将指向哪里?
  • 解释继承、多态、封装、数据抽象的概念?
  • 如何检测链表中的循环?

尖端

  • 在 geeksforgeeks、hackerrank 上练习编码问题。尽可能多地解决。
  • 不要在简历中添加太多项目。
  • 有关数据结构和算法,请参阅“Narasimha Karumanchi 的 DSA”。
  • 对你说的话有信心。

祝您的展示位置一切顺利……