第一轮(90 分钟在线测试):它包括 20 道 MCQ(技术和能力问题)和 2 道编码问题。 MCQ 不是很困难,但非常棘手。
编码问题 1:给定一个矩阵,X 大小为 N*M,您需要从点 (1,1) 到 (N, M)。从矩阵中的点 (i, j) 可以跳到 (i + X[i][j], j) 或 (i, X[i][j] + j)。你不能跳出矩阵。从 (1, 1) 找出到达点 (N, M) 所需的最小移动次数。如果不可能这样做,则返回-1。
Input :
2 //N
2 //M
[1 1] // matrix X
[1 1]
Output:
2
编码问题 2:在一个包含 N 个商店的城市中有一个集市。这些店铺排列成一条直线,分别位于 1、2、3、……、N 个位置。 M 人正在参观这个展会。每个人都会光顾位于 L 到 R 范围之间的商店。据说光顾人数最多的商店是更受欢迎的商店。你的任务是确定三个最受欢迎的商店的位置。如果两个商店的访问人数相同,则打印包含最小位置的那个。输出应按升序排列三个最受欢迎的商店。
Input:
6 // N shops
5 // M persons
// L and R of M persons
3 5
2 3
4 6
1 6
5 6
Output:
3 4 5
第二轮(技术45-60分钟):面试官让我解释我的任何一个项目。由于我对 web 应用程序项目比较熟悉,我选择了它并开始解释。我简要介绍了我的项目。他就这个项目提出了一些问题。因为我使用了 Web 应用程序的数据库。他告诉我为每个表编写架构,并为每个表中提到的字段编写约束。他还询问了一些与我的项目相关的 SQL 查询。
提示:始终对您完成的项目有完整的了解。因为有时面试官自己会选择你简历中提到的任何一个项目,并开始提出问题。
然后他问了我 2 个编码问题
问题1:他让我设计一个字典,并对字典进行CRUD操作
C – 创建,R – 读取,U – 更新,D – 删除。
我使用Hash Map来设计字典。然后他让我为此编写代码。
问题 2:给定一个由正数和负数组成的数组。您需要将输出数组作为交替的负数和正数返回。
例如 :
Input :
arr = [1, 2, 3, -1, -4, 5]
Output :
[-1, 1, -4, 2, 3, 5]
在这个例子中,正数的数量很高,所以你需要把剩下的正数放在最后,而且你不应该改变负数和正数的位置(即在这个例子中 [-1] 是第一个负数在输入数组中……所以你应该先放 -1,然后是第一个正数 [1] 等等)
他让我为上述问题编写一个就地算法。
第三轮(技术90分钟):在这一轮中,我的每个项目都有一个讨论。他问了我很多与我的项目有关的问题。此外,他给了我一个与我的一个项目相关的场景,并问我你将如何处理和解决这种情况。讨论进行了大约 45 分钟。
然后他问了我一些操作系统问题
- 什么是信号量?
- 信号量与实时示例有什么用?
- 什么是临界区问题?
- 然后他给了我一个递归代码,让我一步一步地解释代码并写出给定代码的输出,他还问我在递归过程中分配的内存。
- 他问了我一个类似于 Leetcode 中“买卖股票”问题的编码问题。 https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
最后,他问我如何让自己了解最新技术。
提示:您应该了解简历中的每一个字。
第四轮(HR 轮 5-10 分钟):在这一轮中,HR 询问了一些一般性问题:
- 说说你自己
- 爱好
- 成就
最后,在面试结束时,HR说我被选中了。我感到非常兴奋和高兴。