OYO Rooms 软件工程师面试体验(校内)
第 1 轮(在线轮):这一轮在 Hackerearth 上进行,包括 2 个编码问题和 15 个 MCQ(来自 OS、DBMS、C++、C、网络)。
1.给定字符串括号,判断该字符串是否平衡。
例子:
{(}(}
{{([])}}
输出:
不
是的
2.给定一个字符串s.Count 以 x 开头并以 y 结尾的子序列数。
例子:
s=”abc”
x=a
y=c
输出:
2
大约 45 人被选中进行技术面试。
第二轮(技术面试):
首先他让我自我介绍。然后他问了我两个编码问题。
1.他开始用 Web Browser 的一些故事告诉我这个问题。在告诉我问题总结到将树转换为更大的总和树的所有内容之后。
https://www.geeksforgeeks.org/transform-bst-sum-tree/
我给了他使用递归的反向中序遍历方法。在解释了答案后,他让我写了我在 2-3 分钟内完成的代码。他让我针对测试用例进行代码干运行。他对我的回答。在他转到第二个问题之前,我告诉他我可以在不占用任何递归空间或堆栈的情况下做到这一点。我给了他反向莫里斯顺序遍历方法。他对我的方法印象深刻,在他转到下一个问题之后。
2.重新排列给定的链表。
https://www.geeksforgeeks.org/rearrange-a-given-linked-list-in-place/
这个问题很简单,我在几分钟内就完成了。他让我写同样的代码。
30分钟后结果出来了,我被选中参加下一轮技术比赛。
第三轮:
面试从介绍你自己开始。她问我上一轮技术如何。
她问我的弱点是什么。我告诉她我不擅长DP。然后她问了我一些DP问题。 ?
1.最小成本路径
https://www.geeksforgeeks.org/min-cost-path-dp-6/
首先,她给了我一个测试用例,我必须找到最小成本路径。然后她让我写下代码。我在 5 分钟内完成了。她让我写测试用例并为测试做空运行我写的案例。
2.硬币找零问题
https://www.geeksforgeeks.org/coin-change-dp-7/
首先,我告诉她的方法并解释了这个问题背后的逻辑。之后她让我编写代码,我很容易做到。
之后她给了我一个我真的不记得的问题。但是这个问题可以使用 HashMap 解决。所以她问我关于 HashMap 的内部实现。我告诉她我可以给你方法,但我不知道确切的执行。
然后她问了我一些来自 AVl Tree 的问题。我告诉她 avl 树的工作原理及其实现。
然后她问我之前是否接受过任何采访。我告诉她有关微软的事。她问我在微软面试中发生了什么。
然后她开始问我一些系统设计问题。设计一个停车场系统。
她告诉我她并不期待任何完美的答案。她只是想知道我的方法。所以我告诉她我将如何使用水平分区和索引来处理大型数据库。
我把那一刻想到的任何东西都给了她。
所以她对我的方法印象深刻。然后她问我你将如何使用 OOP 概念来处理这个问题。我使用多态性、继承来回答这个问题。
之后她告诉我,你真的很擅长设计。
然后她给了我一些编码问题。
1.使用同一组数字查找下一个更大的数字。
https://www.geeksforgeeks.org/find-next-greater-number-set-digits/
她只是问我你将如何处理这个问题。我告诉她逻辑,但她没有让我编码。
2. 然后她给了我一些非常简单的树和链表问题。
3. 这个问题类似于腐烂所有橙子所需的最短时间。
https://www.geeksforgeeks.org/minimum-time-required-so-that-all-oranges-become-rotten/
我给了她 BFS 方法。
4.打印给定字符串的所有排列https://www.geeksforgeeks.org/write-ac-program-to-print-all-permutations-of-a-given-string/
我给了她递归方法,然后她让我编写代码并计算运行时间复杂度。
5.对0、1和2组成的数组进行排序。 https://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/
然后她问了我一些关于 DBMS、OS、OOP 的基本概念。
之后她又问了我一个编码问题。
使用堆栈实现队列。
https://www.geeksforgeeks.org/queue-using-stacks/
我给了她两种方法。一种是使入队操作成本高,另一种是使出队操作成本高。她让我写下两者的代码。
在所有这些之后,她留下了深刻的印象,她让我等待我的第三轮技术。
第四轮:
采访开始于你今天过得怎么样,你上一轮过得怎么样,告诉我一些关于你自己的事情。这一轮更具理论性。我们详细讨论了信号量、互斥量、死锁、虚拟内存。
然后他问我什么是进程,线程。
它们之间有什么区别。
他给了我一个场景,假设一个互斥锁被分配给名为 T1 的特定线程。如果 T1 再次请求同一个互斥锁,会发生什么。
我告诉他僵局,他问我你将如何解决这个问题。
我正确回答了所有问题,他对我的回答很满意。
所以他搬到了 DBMS。
首先他问我什么是索引。
索引有什么好处。
然后他问了我一个编码问题。
他问我是否知道中序遍历。我说是。然后他问我可以不使用递归进行中序遍历。
我告诉他我可以在没有递归和堆栈的情况下做到这一点(同样是莫里斯)。
然后我向他解释了我将如何做。他让我编写代码。
之后他说“那都是我这边的”。你有什么问题吗?
我问了他一些问题。他解释了我的每一个问题。
所以在 1 小时后,我得到了我被选中的消息。
这当然是我生命中最美好的一天。 🙂