第 1 轮:本轮有 3 个问题。问题是对以下问题的修改
- 给定一组 N 个字符串,如果没有字符串是另一个字符串的前缀,则称其为 GOOD SET,否则为 BAD SET。 (如果两个字符串相同,则将它们视为彼此的前缀。)。打印给定的字符串集是 GOOD SET 还是 BAD SET。这个问题必须使用 Tries 来解决。
- 第二个问题类似于“丑陋的数字”问题。
- 最长公共子序列问题。
本轮过后,共有37名学生入围。
第 2 轮:在这一轮中,我被问到一个问题。问题是 – 一个包含 8 个元素的数组的值为 0,1。它经历了 N 次转换。找到第 N 次转换后数组的状态,其中转换定义为 –
如果数组的两个相邻元素相同,则数组的元素在下一个状态将为 1,否则它将为 0。(第一个和最后一个元素具有单个相邻元素,因此无论其邻居的值如何,它们在第一次迭代后都将变为 0。 )
我给出了一种方法,其中可以在 O(1) 时间复杂度中计算单次转换后的数组状态,因为数组中没有元素只有 8,所以我们可以遍历数组中的每个元素并查看其邻居以找到此元素的状态。类似地,我们可以计算每次转换后数组的状态,并且可以在 O(N) 中找到第 N 次转换后的状态。面试官让我进一步提高时间复杂度,但我想不出办法,所以我问了一些提示。他让我试运行一个示例作为提示,但我仍然找不到优化的解决方案,所以我要求另一个提示。他告诉我会有一个模式,之后状态将开始重复,所以我们可以存储状态,当我们找到一个已经见过的状态时,我们可以停止计算更多状态并使用存储的状态我们可以计算第 N 个状态,因为状态将重复一段时间。
面试官很友好,一直在讨论。
第三轮:首先面试官让我做自我介绍,让我简单介绍一下我的项目。然后他问我什么是死锁以及如何防止死锁。他问了我 OS、OOPS 和 DBMS 的问题,例如——线程和进程之间的区别、运算符重载、DBMS 中的索引。
然后他让我解释一下 AVL 树、B+、B 树以及 B+ 和 B 树之间的区别。
注意 – 由于当前的 COVID-19 情况,所有回合都是虚拟的,并且在 Google meet 上进行。
小贴士:保持冷静和自信。如果您无法想到优化的解决方案,请从蛮力开始并寻求提示。在大多数面试中,面试官总是乐于助人,他也试图与你一起构建解决方案。不要恐慌,相信自己!