📜  Platform9系统面试经验

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

A 部分:面试前评估(3-4 天虚拟)

1. 填写完注册表后,我们每个人都会通过邮件收到一份问题陈述,以实现类似于 Google 搜索给定输入集的预输入功能和要搜索的模式的正则表达式。

2. 我们有大约 3 天的时间来完成和发送作业,并且可以自由使用任何适合它的语言。

3. 我使用 C++ 和一个内置的正则表达式库来实现相同的模式来匹配模式。

4. 我的重点是首先尽可能地模块化代码,同时利用可用的特性,如类、对象和函数,使代码组织起来具有适当的访问控制。

5. 完成此操作后,我写了一些注释,突出显示程序的重要部分,并将其更改为菜单驱动程序。

6. 这有助于审查代码的人了解您的代码流程,同时让他/她承认您可以提供更多选项,例如更改正则表达式模式或输入集,提供查看当前正则表达式模式的选项, 等等。

7. 我提交了代码片段以及他们给出的测试用例的输出屏幕截图,并考虑了一些极端情况,例如,如果只给出 ‘*’ 作为模式的输入,那么输出应该显示所有单词。提示:始终附上此类作业的输出屏幕截图。有时审阅者可能没有时间检查你的整个代码。但是如果他们看到各种情况的输出是否符合他们的期望,那肯定是有帮助的。

考虑到上述提交,我入围了面试——最初提到要进行两次单独的面试。我有点紧张,因为这是我第一次入围面试。

这是我在 CPP 中提交的链接:

[https://onecompiler.com/cpp/3wmjzcnqk]

PS根据与其他在校外申请的人的对话,每个招聘活动的问题陈述都不同。因此,虽然您可能会得到不同的问题陈述,但以有效方式呈现代码的过程保持不变。

B 部分:面试 1(35 分钟)——技术回合

1. 面试官首先问了我简历中提到的实习经历。问题包括在此期间使用的技术以及为此完成的任务。

2. 然后讨论转向用基本问题测试我的 DS 和算法知识。

3. 面试官给出了一个反向单向链表的问题。

4. 我提到我的方法之一是更改与链表结构关联的指针,但在听到后他让我分享我的屏幕并使用记事本解释它。

5. 我继续解释程序。面试官让我想出另一种方法,它不涉及更改指针或更改链接列表。我告诉他我可以遍历链表,同时将它存储在一个数组中。然后我会以相反的顺序打印数组。

6. 他让我想出另一种方法,不涉及将其存储在另一种数据结构中。同时,当被问及使用递归时,他给了我一个提示。

7、我跟他说我会用系统栈,先用递归把链表的所有元素一个一个的压入栈中,然后再出栈,以逆序取元素。他似乎对这个答案很满意。

8. 之后,面试官简单的问了我简历中提到的Final Year项目。我解释了我们的计划。第一次采访就这样结束了。

C 部分:面试 2(45 分钟)——技术回合

1. 这是一轮筛选。面试官说他在工作,一边看我的简历一边问问题。

2. 他让我做自我介绍,并提到我对工程感兴趣的一些领域。

3. 此后,讨论转移到我的实习和项目经验上。他想知道我在实习期间执行的任务以及我们的 BE 项目是关于什么的。由于涉及到一些 IoT 协议,他问我为什么需要特定的协议,而不是用于 JSON over HTTP 等应用程序的传统协议。

4.然后面试官给了我一个DS问题:给出了一个数组,结果是把每个索引的数组剩余元素的乘积存到另一个数组中。

5. 在简要说明我的方法后,我继续在记事本中编写伪代码。最初,我的代码中存在一些错误,例如在另一个循环中错误位置使用外循环变量或缺少跳过当前索引位置的条件。

6. 但是面试官确实给了提示,我纠正了。我的解决方案仍然不正确,因为我没有在下一次迭代之前将产品重置为 1。我意识到这一点,最终我的代码最终在逻辑上是正确的。

7. 面试官接着问问题的时间复杂度和空间复杂度是多少,时间复杂度是否可以提高。提示:除非必要,否则不要将像 O(n^2) 这样的多项式复杂性作为解决方案。因为这些在处理大数据时效率不高。

8. 下一部分是关于我对 Linux 命令的了解。我提到了一些,他问我其他命令,比如——

  • netstat – 如果要在特定端口上运行应用程序,那么我们如何检查是否有任何其他应用程序正在使用相同的端口并释放该端口。
  • chmod – 如果文件的权限设置为“ chmod 777”,那么数字 777 的每一位分别代表读取、写入或修改数据?

9. 继续讨论 C++/ Java/ Python等不同编程语言之间的差异。有人问我一些关于哪种语言适合特定应用程序以及原因的问题。

10. 这之后面试官简单地问了我一些关于 DBMS 的基本问题,比如 ACID 属性。他问我是否知道最终一致性的概念,并让我解释一下。

11.面试官问我有没有什么问题。我询问了像 Dev/DevOps 这样的新生可以担任的各种角色、它们之间的区别以及是否需要任何培训期。第二次面试就这样结束了。

根据我前两轮的表现,我被告知将进行第三轮(决赛)。我原以为这是一轮人力资源轮次,但这是一轮技术轮次。

D 部分:面试 3(25 分钟)——技术回合

1. 讨论从我简单介绍我自己和感兴趣的工作领域开始。

2. 面试官问我最喜欢什么科目——我说我喜欢嵌入式系统和操作系统(OS)。他问我是否愿意讨论操作系统。我是肯定的回答。提示:这里只选择一个你觉得舒服并且以前在你的课程中学习过的科目。因为如果你不能回答基本的问题,那么面试官可能会认为你在撒谎。这是 90% 确定性的拒绝。

3. 问题是关于套接字编程的——从线程的概念及其与进程的关系。提出了一个关于生产者-消费者关系的场景,我被要求使用线程和操作队列为相同的情况编写伪代码。

4. 我介绍了生产者和消费者端的入队和出队操作的基本方法。这又是在记事本中。如果面试是虚拟的,请养成练习编写伪代码的习惯——因为只有向他人展示你的方法才能在这里有所帮助。如果是面对面的,请练习在白板上书写。

5. 我没有被问到任何关于这个的详细问题,也许他们只是想测试我是否可以在作为 Dev/DevOps 角色的一部分呈现时处理这样的用例。

6. 然后我被问到我是否知道操作系统中的锁和/或死锁的概念。然后面试官问我,一个简单的 C/C++ 程序带有 while(1) 循环是否会导致死锁。我给出了错误的答案,但充满信心地做了同样的事情。面试官冷静地解释了情况并非如此,并让我记住这一点。我实际上想传达的是,如果其他程序依赖于这个程序,那么它可能会导致僵局,因为第一个过程没有完成——但你几乎总是在面试完成后意识到这些事情。

7.面试官问我有没有什么问题。我提到,考虑到我之前的实习经历,我更适合担任 Dev 角色——这也是他在我们讨论中提出的,因为 DevOps 涉及的领域非常广泛,需要一些经验。

8. 那是最后一次采访的结束。

结果:选中

根据我在这三个面试中的表现,我在当天晚上被告知,我被选为 Platform9 Systems India Pvt. 的“助理软件开发人员”一职。 Ltd. 这一举措是通过我们的大学 TPO 作为校内招聘流程进行的,因此结果可能比校外流程来得早一些。无论如何,我想提一下,他们在招聘过程中是完全透明的。人力资源部门会立即清除每件小事,例如会议链接不起作用或疑虑。他们确保我唯一需要关注的就是面试。

作为一个加号,该公司决定将面试后从我们学院选出的所有五名学生的初始报价提高 25%。我们还获得了为期 3 个月的实习机会,以帮助进行共同培训并更深入地了解创业公司的工作文化。我很高兴,但比起金钱,我更感兴趣的是通过不断学习的过程探索新事物。所以这对我来说是一个很好的开始。

祝大家好运。我希望我能帮助您深入了解 Platform9 Systems 的完整招聘流程。