Salesforce 面试经验 |校园 2021
编码轮:
在线测试是在 HackerRank 上进行的。有3个问题。
- 你必须准备一个披萨。有一些面包皮和浇头。给出了每个外壳和每个浇头的价格。要制作一个比萨饼,您可以只使用一个外皮,一个浇头最多可以使用 3 次。给出了目标价。您必须返回总价格最接近目标价格的外壳和浇头的组合。总价也可能高于目标价。但如果出现平局,我们必须以较低的价格退回比萨饼。
- 给出了一个数组颜色 [],其中颜色 [i] 表示必须为铅笔着色的颜色。每种颜色都有一个画笔,我们必须等待 b 秒才能再次使用相同的画笔(重新填充的时间是 b 秒)。每一秒,您都可以画一支铅笔或等待画笔重新填充。对于给定的 b 和 color [],找出为所有铅笔着色所需的最短时间。
- 给出了一个 n*m 网格的灯泡。有些打开(用“O”表示),有些关闭(用“X”表示)。当您切换灯泡的状态时,与之相邻的灯泡的状态也会被切换。返回关闭所有灯泡所需的最小切换次数,如果不可能,则返回 -1。
能够解决所有三个问题的学生被列入面试名单。 7名学生被邀请参加面试。
第 1 轮:面试 1
- 面试官让我自我介绍。然后他让我简要解释一下我在简历中提到的项目。我在简历中提到了 6 个项目。一种是基于区块链的,另一些是与 Web 开发相关的。我向他解释了我所有的项目。他问了一些与我的项目相关的问题,比如我的项目解决了什么问题,我为什么要使用特定的技术堆栈,我在构建它时遇到了哪些挑战。这花了大约 20 分钟。他对我对项目的描述感到满意。确保你对简历中提到的任何内容都很彻底。您可以就简历中的任何内容受到质疑。
- 在此之后,他根据 DSA 向我提出了一般性问题。他要求提及各种数据结构,并说明每个操作的时间复杂度是多少。他给出了几个场景,并询问我将使用哪种数据结构以及为什么。之后,他问了一个与操作系统相关的问题。我告诉他它还没有教过,他告诉我很好,我们搬到了 HackerRank 代码对。
- 他让我用堆栈实现一个队列,我立即编写了解决方案并解释了逻辑。他跑了几个测试用例,都通过了。他很满意。
- 之后,他问我为什么要加入 Salesforce,Salesforce 是做什么的,Salesforce 的核心价值是什么。我回答了所有的问题,他很满意。然后他问我有什么问题要问他吗?我问他如果拿到offer,我会做什么项目,然后我问他来年我是否应该学习一些对我实习有帮助的东西。他回答了两个问题并结束了采访。
一个小时后,我接到了第二次面试的电话。
第 2 轮:面试 2
与我接受的任何其他采访相比,这确实不同。
- 正如我提到的,我的一个项目是基于区块链的,我已经建立了一个基于区块链的选举投票系统。面试官也是一位区块链爱好者。他让我解释我所知道的关于区块链的一切。我从头开始,我告诉他为什么我们首先需要一个去中心化的系统,以及我们如何不能依赖像银行这样的中央机构。我用通俗易懂的语言向他解释了一个公共分布式账本的真实例子。我向他解释了数据是如何以互连块(单链表)的形式存储的,以及为什么区块链是安全、不可变、透明和匿名的。我解释了它背后的数学原理,密码学如何使用私钥和公钥加密交易,矿工如何通过使用他们的计算能力解决密码难题(使用蛮力找到随机数)来挖掘加密货币,如何证明工作(PoW)共识是有效的,我告诉他关于 51% 攻击的事情实际上是不可能破解公共区块链的。然后我告诉他我们如何使用solidity制作智能合约并将它们部署在以太坊区块链上。他对我的解释印象深刻。他问我是怎么学到这一切的。他很高兴知道我在课程之外探索事物并尝试自己学习新事物。我们进行了愉快的交谈,几乎感觉不到我在接受采访。我们最终得出结论,区块链具有使互联网真正民主的真正潜力。这是35-40分钟。
- 之后,他基于 OOP 向我提问。他让我解释什么是继承和多态,我们为什么使用它们,它们的不同类型。他问我什么是抽象类,什么时候用抽象类,什么时候用接口。什么是虚函数?我回答了所有的问题。
- 然后他问我是否知道设计模式,我告诉他还没有教过,并告诉他我会在下个学期学习它。他说没问题,我们继续使用 HackerRank 代码对。他让我编写代码来打印字符串的所有子集(子序列)。我使用了简单的递归(选择/不选择)并编写了答案。他在几个测试用例上对其进行了测试,它们通过了。他对我的表现非常满意,并告诉我他期待与我合作。
15分钟后,我接到了最后面试的电话。
第三轮:面试第三轮
这次采访很短,很冷。面试官做了自我介绍,让我自我介绍。
- 他让我解释一下我在简历中提到的项目。他也是一个区块链爱好者,对它的工作原理有很好的理解,他向我询问了与区块链和密码学相关的各种基础知识,我都回答了。
- 我的第二个项目是使用 react 和 web 套接字 (socket.io) 的实时聊天应用程序。我向他解释了 WebSockets 如何工作并为服务器和客户端之间的通信提供双向通道。他问了一些后续问题,例如,angular 和 react 有什么区别,我为什么使用 socket.io 以及其他可用的 WebSockets 是什么。我都回答了。
- 其他项目包括:使用 Dijkstra 算法的简单版本的 google-maps、splitwise 应用程序的克隆、蛇游戏的克隆和使用 Huffman 编码的文件压缩器。他真的很高兴在 2 年里我探索了这么多,他也对我的 google kickstart 排名印象深刻。
- 然后他问我关于我的爱好、我在大学时参加的俱乐部/部门,并问我谁是我的动力。
- 最后,他问我有没有什么问题要问他。我告诉他我们大学使用 superset(CRM 应用程序)来管理校园招聘,可以使用 Salesforce 来完成。他对这个问题印象深刻,并向我解释了我们如何使用salesforce。然后一轮就结束了。
当天公布结果,7人中有5人进入决赛,包括我在内的2名学生被选中实习。
准备提示:
练习是清除编码测试的必要条件,因为公司可能只会将那些解决所有问题的人列入候选名单。我热衷于竞争性编程,并且定期举办关于 codeforces 和 codechef 的比赛对我有很大帮助。根据难度/主题对问题进行排序并定期解决。如果您在尽最大努力后无法解决问题,请阅读社论。阅读博客以学习新的东西/算法。解决来自 GFG/Leetcode 的问题以练习特定于面试的问题。
除此之外,探索 Web 开发、应用程序开发、区块链、机器学习等新事物。正确学习其中之一并构建项目。我很幸运,我的第二位面试官也对区块链感兴趣,但情况可能并非一直如此。准备好核心 CS 科目,如 OOP、DBMS/OS(我没有被问到任何关于 DBMS 的问题)。确保您只在简历中添加您完全了解的内容。
在我收到 Salesforce 的报价之前,我被 5 家公司拒绝了。所以不要失去希望。对自己有信心,相信过程并继续努力。你最终会得到最适合你的。