第 1 轮: Salesforce 在 8 月的第二周来到我的大学担任 SDE 角色。资格是 7+ CGPA,计算机科学学生没有积压。第一轮是在 Hackerrank 上进行的在线编码轮次。它包含 3 个基于 DSA 的编码问题,需要在 90 分钟内解决。
- 第一个问题是从字符串中删除最少数量的数字,使其可被 3 整除,这样最终的字符串就没有前导零。我的方法是找到字符串的剩余部分(将其转换为数字后)并相应地删除数字 – 如果数字可被 3 整除,则返回原始字符串,可被 1 整除,删除任何一个剩余数为 1 的数字(在除以 3),可被 2 整除,删除 1 位余数为 2 或 2 位余数为 1 的数字。删除时我无法处理前导零条件,因此我在删除数字后删除了它们。我使用这种方法设法通过了 5/6 个 TC。
- 第二个问题是一个简单的重复,但有很大的限制。重复的形式为 T(n) = T(n-1) + T(n-2)。为了处理大约束,而不是将输出存储在大型 DP 数组中,我们可以提醒可被 3 整除并重用空间。在编写测试时,我没有意识到这一点,因此我使用大型 DP 阵列对我的解决方案进行了暴力破解,并设法通过了 4/8 TC。
- 第三个问题很棘手。这是一个 3D DP 问题。唯一棘手的部分是意识到这是一个 DP 问题。制表方法相对简单。我设法完全解决了这个问题,通过了 6/6 个 TC。
建议:先解决你有信心/觉得容易的问题。永远不要留下问题。如果你有时间,试着想一个蛮力的方法来解决它。在大多数情况下,您最终会通过至少一个以上的测试用例。
第二轮(技术面试1):第一轮后10名候选人入围,包括我。下一轮在编码测试的第二天进行。持续了将近一个小时。
- 这是一个代码对回合。采访从几个关于字符串的基本问题开始——反转字符串和不同的方法。我必须对每种方法进行编码(递归和遍历到字符串的中间)并解释相同的时间复杂性。
- 下一个问题是在尽可能短的时间内从数组中删除重复的元素。我告诉他们一种使用无序映射的方法,然后使用无序集对其进行了修改。
- 下一个问题是将字符串编码的罗马数字解码为数字。例如,将“XII”解码为 12。由于时间不够,我无法完全编码,因为缺少一些测试用例。
- 最后,她让我镜像一个二叉树(https://www.geeksforgeeks.org/write-an-efficient-c-function-to-convert-a-tree-into-its-mirror-tree/) .我告诉她一种递归方法,并解释了我将如何处理边缘情况。
- 在这些问题之后,我被要求编写一个 SQL 查询来从数据库中删除重复的行。接下来,我被要求为 Quicksort 编写伪代码。
- 然后我们详细讨论了我做过的一个 OOPS 项目,以及我如何将不同的 OOPS 特性(封装、继承、多态和抽象)合并到我的项目中。她还向我询问了移动应用程序的不同层次以及我遵循的不同编码实践。
- 最后,面试以一个基于设计数据库的问题结束,这样存储的数据就有层次结构——例如,为开发人员、高级开发人员、经理为开发人员设计数据库等等。我解释了我使用范式减少冗余数据的方法,还提到了将使用的完整性约束。
建议:
- 在公司开始到来之前几天继续准备面试。
- 在编码测试之后,您将没有很多时间来准备面试。
- 每当您编写一段代码时,练习分析时间复杂度。
- 在您编写代码后,面试官总是会询问时间(有时是空间)的复杂性。
- 不要跳过排序、数组和字符串等基本主题;他们经常在面试中被问到。正确修改 OOPS 和 DBMS。 Salesforce 的面试官真的很有帮助。每当您感到困难时,请务必寻求帮助。
第三轮(技术面试-2):第一次技术面试后,8名候选人入围。
- 面试首先简单介绍了面试官和我自己。然后他问我不同的数据结构以及我们在不同场景中会使用什么。然后我被问到单链表和双链表中的删除。接下来,我们转到 Hackerrank 上的代码对。
- 问我的第一个问题是DP问题。就是这个问题 – https://www.geeksforgeeks.org/find-length-longest-subsequence-one-string-substring-another-string/。我可以正确地写出其中一个条件,而第二个条件是错误的。然而,面试官帮助了我,我能够使用制表来编写解决方案。这是我被要求编码的唯一问题。
- 后来,我被问到一个类似的谜题,有 9 个球和最少步数——https://www.geeksforgeeks.org/puzzle-8-balls-problem/。然后我们就我的项目以及我如何使用 DBMS 和 OOPS 概念进行了深入讨论。
建议:
- Salesforce 的面试官很亲切,乐于助人。
- 即使您无法编写自己的方法,也要告诉面试官您的思考过程并获取提示。
- Salesforce 的技术面试侧重于您在第二年之前所学到的整体 CS 概念。
- 他们希望你对 DSA、OOPS、DBMS、基本的 CS 概念(在我看来你不能事先真正练习)、你的项目有充分的了解。
- 您可以从 https://www.geeksforgeeks.org/puzzles/ 事先练习一些谜题。
- 对你在简历中提到的任何内容都要彻底。另外,准备一两个关于公司的问题,比如工作/项目等,在面试结束时问面试官。
第 4 轮(HR 轮):第二轮技术面试后,5 名候选人入围。我的人力资源轮次是与 Salesforce 的一名高级工程师经理一起进行的。我们简单介绍了自己,并根据介绍互相问了几个后续问题。这一轮非常个人化,我非常冷静地回答了所有问题。我被问到的几个问题是——
- 线下学期我最怀念什么?
- 我如何计划一周的日程安排?
- 我的优势/劣势是什么?
- 我被问到两个基于情况的问题——
- 如果我的项目发生变化,我将如何快速适应新的团队和项目?
- 我将如何回应那些不太支持和乐于助人的队友?
- 我最喜欢 Salesforce 的什么?
建议:
- 在大多数情况下,HR 非常友好,他们试图了解您对不同事物的整体理解以及您是否适合他们的公司。
- 事先准备最常见的 HR 回合问题。
- 保持冷静并明智地回答所有问题。不要因为你已经完成了前几轮而过度兴奋。
- 了解公司并提出相关问题。
我可以通过 HR 轮,并且是我大学中唯一的一个选择!