我最近与Salesforce Hyderbad就AMTS分布式系统工程师一职进行了面试。总共进行了5轮。
第1轮(编码轮): 黑客被绑架了。60分钟内有两个问题需要解决。您必须编写代码并手动测试它。只给出了与输出格式匹配的简单测试用例。这使得编写一个能够通过所有边缘情况的代码变得相当困难。问题的难度都在中等以上,而且都是临时性的。
第二轮(技术面试): 在这一轮面试中,面试官首先问我有关股票价格的问题( https://practice.geeksforgeeks.org/problems/stock-buy-and-sell/0 ).我告诉面试官我看到了这个问题,并告诉他们这个问题的解决方案和其他修改,以及针对最多K个事务的通用动态规划方法。然后面试官问了我一个关于依赖解决顺序的问题。让我编写代码并运行测试用例。然后我告诉面试官,在循环依赖的情况下,解决方案将不起作用,然后告诉我们可以为循环依赖的情况做些什么。
第三轮(技术面试): 在简要介绍了他之后,他请我自我介绍。然后,他转向了编码问题。问题是将给定的字符串与给定的正则表达式进行匹配 “*” 和 “.” 其中,“a*”表示a的零次或多次出现,以及“.”表示任何字符的单一出现(注意:“.*”也是一个有效的表达)PS:这个问题是对Facebook和Microsoft中提出的标准面试问题的轻微修改。它的病例比标准病例多。他首先让我为这个问题编写所有可能的测试用例。然后他让我写一个完整的功能代码,然后我们根据所有可能的情况进行测试。然后,他问我关于抽象封装和多态性的设计概念,它们之间有什么区别,因为我提到我最喜欢的编程语言是Python,他问我Python是否支持这些。
第四轮(招聘经理轮): 这次面试是和我的招聘经理一起进行的。他没有问我任何技术问题。他问我过去实习的经历。他问我一些情景问题,问我该怎么办。我回答得很周到,他对我在这些问题上的想法印象深刻。我问他关于文化、工作等方面的问题也给他留下了深刻印象。我甚至在他们使用的技术堆栈上问了交叉问题。他让我用可能的理由来证明技术堆栈的合理性,我就是这么做的。
第五轮(锚轮): 这一轮是与Salesforce总部工程团队的一位高级主管进行的。他在我的简历上问了我一些问题,还问了一些行为问题,比如3-5年后你觉得自己在哪里。在我回答这个问题时,他问我,在实现我刚才所说的目标时,我认为最重要的技能是什么。他还对我深思熟虑的回答印象深刻,并给我讲了一些关于西雅图一家优秀AMTS公司的故事。
判决:被选中。
注:大多数学生不做的事情之一是阅读有关该公司的信息。我浏览了Salesforce engineering博客,它在与高级员工的交流中帮了我很多忙,也给我留下了很好的印象。