我接受了 VeriFone India Bangalore 的软件开发工程师职位(2021 届毕业生)的面试。这是一个校外机会,我是通过员工推荐申请的。
我在申请面试后的 10 天内接到了 HR 的电话。整个过程很顺利,主要集中在数据结构和算法以及核心Java概念上。
第 1 轮(在线作业):30 分钟
- 我们有 30 分钟的时间来解决 30 个问题。
- 基本能力和谜题相关问题。
- 一个非常简单的测试,你只需要速度来完成这一轮。
- 这一轮的截止时间是 26/30。
第 2 轮(面试 1):1 小时 10 分钟
- 第一轮面试从介绍开始,首先,他简要介绍了他作为 Verifone 软件开发人员的经历,然后他让我自我介绍。
- 然后他向我简要介绍了整个面试过程和总轮数。他说总共会有 3 轮面试(2 轮技术和 1 轮管理),如果他们对候选人有任何疑问,他们可以将其延长到 4 轮。
- 在那之后,面试官继续问一些编码问题,同时让我分享我的屏幕并打开任何 IDE 进行编码。
- 他问的第一个问题是对 0、1、2 数组进行排序。
- 起初告诉他一个算法,简单地计算 0s、1s、2s,然后重新排列它们。时间和空间复杂度为 O(n)。然后他让我想一个空间复杂度为 O(1) 的算法。最后,告诉他具有 O(n) 时间和 O(1) 空间复杂度的 3 指针方法。然后他让我用Java编码并打印不同测试用例的输出。
- 然后他问了我一个与图形相关的问题。问题是,如果有 4 个文件包含代码,比如说 A、B、C、D,并且存在依赖关系,例如 (A–>B, A–>C, A–>D, B–>C, C–>D, D–>B) 这里的依赖关系意味着我们不能在不加载文件 B、C、D 的情况下加载文件 A。他让我想出我们可以加载文件的顺序可以有多个答案。
- 然后他问了我另一个基于图表的问题,我不记得确切的问题,但解决方案是图表的 DFS。他让我用Java为它编写代码。
- 我在上面的问题中使用了迭代器,所以他让我说出 for 循环和迭代器之间的区别,并为它们编写代码。
- 然后他让我说出迭代器、枚举和列表迭代器的区别。
第 3 轮(面试 2):55 分钟
- 这一轮更侧重于核心Java概念,但首先,有一个关于我简历中提到的项目的讨论。
- 面试官问了我关于多线程、错误处理、集合的问题。
- 她还问了我关于Java的继承、抽象概念等的问题。
第 4 轮(面试 3):35 – 45 分钟
- 这是管理回合,我们讨论了这份工作,并提出了一些行为问题。
2 周后,我接到人力资源部的电话,说我被选中了这份工作。