第 1 轮:Hackerrank 轮
这是 2 小时的编码回合。这两个问题都在矩阵上。
问题 1:M x N 矩阵,单元格值为 0 或 1。如果两个单元格的值为 1,则两个单元格之间可能存在连接。您需要计算总数。可能的连接。这真的很容易。
问题 2:同样是 M x N 矩阵。你必须计算总数。行或列中最大或最小或两者兼有的单元格。两个不同的单元格可以具有相同的值。
为了更好地理解:a)如果一个单元格在行和列中都有最小值/最大值,则它只会被计算一次而不是两次。
b) 假设值 (3, 4) 是 6 并且 (5, 6) 也是 6 并且两者都是行/列中的最小值/最大值,那么它将被计算两次。
第 2 轮: Java的Coder Pad 轮
问题很简单。这是一小时。这一轮的基本目的不是测试编码技能,而是检查你是否会用Java编码。他(面试官)关心我是如何使用 try catch 块的,并要求解释我正在写的每一行,以及如果我将任何行放在 try/catch 块的外面/里面会怎样。他要求处理所有极端情况,编写测试用例来检查所有这些极端情况。
问题 1 ) 你得到了两个数组,找到它的点积。
问题 2)你得到了两个分数,你需要在从方法返回答案之前将它们相加并将其简化为最简单的形式。这里假设如果没有通过分母,那么我必须抛出错误并在主块中捕获它。这是我写的测试用例之一。如果所有测试用例都通过,我被要求打印“通过”。
他在问与Java相关的问题。
第三轮:F2F第一轮(有两个面试官)
1)用现实生活中的例子详细解释继承和多态性。
2)他让我解释一下我在当前公司的工作以及我在Java使用的框架。
3) 他使用了 3 个类,每个类都有一些方法和变量。我被问到这样的问题——使用继承并解释你将如何实现这个和那个。这持续了大约 15 分钟。他关注每一个细节。
4) 你有一个长度为 M 的数组。它包含从 1 到 M+1 的整数(整数在数组中不重复)。没有之一。数组中缺少。你将如何找到那个号码。
5)有6对夫妇(所以总共12人)。找出您可以选择 4 个人(2 M 和 2 F)的方式数量,使他们都不是一对。
6)什么是静态内部类?
7) 链表在内部是如何工作的?
第 4 轮:F2F 第 4 轮(又是两个面试官)
1)你有什么技能?
2) 你有 2 分钟的时间,解释你目前的团队和当前的项目。
3) https://www.geeksforgeeks.org/stock-buy-sell/ <- 这个问题。我被要求编写伪代码。
4) 给你两个数组,其中没有一个是排序的。告诉我寻找两个数组中位数的最优化解决方案。写伪代码。
5)在寻找复杂性时,最坏的情况是什么意思?
6) 解释归并排序和快速排序的最坏情况。
7) 测量时间复杂度有哪些不同的表示法?
8)拿一个你自己的数组,一步一步解释合并排序,并解释xomplexity是如何变成nlog(n)的。