第 1 轮:在线编码轮(Hackerearth 1 小时 45 分钟)
这一轮有 5 个 MCQ 与时间复杂性和流行的编程算法和 3 个编码问题相关的负面标记 –
问题 1(75 分):给定一个整数 N(1<=N<=10^18),表示完整二叉树中的节点数,其中节点 i 有 2*i 和 2*i+1 作为其子节点,并且1 作为根节点,您必须回答 Q (1<=Q<=10^5) 个查询。每个 Query 都有一个整数 k,您必须返回二叉树子树 k 中的叶节点数。
样本输入-
5 2
1
2
样本输出 – 3 2
问题 2(100 分):给定一个包含 N 个元素的数组和一个整数 K,找出该数组的任何子集中元素的最大数目,使得元素的平均值小于 K。(提示:这是一个应用二分搜索和前缀数组总和)
问题 3(100 分):给定 N 个元素的非递减数组(1<=N<=10^5),从中删除 K 个元素(1<=K<=N-2),使得连续元素之间的差异最小。 (提示:您可以观察到只有当我们从左侧或右侧移除元素而不是从中间移除元素时,答案才会是最佳的,即您必须从长度为 NK 的窗口中元素的最大连续差异中找到最小值,这是在数组中大小为 M 的窗口中打印最大值的应用程序)。
大约 14 名学生进入了下一轮的候选名单。那些至少做了 2 道编码问题的人入围。
第 2 轮:个人编程面试 1
这次面试问了很多编程问题。很少有人写伪代码来检查给定的字符串向量是否已排序,外星字典,拓扑排序,在 O(1) 预期时间复杂度的双链表中删除节点,找到二维数组中的最大和矩形(Kadanes 算法在 2D 矩形中的应用)询问了原始(O(n^2 m^2))和优化(O(n^2 m))解决方案。我当时无法获得最佳解决方案。还提出了更多与数据结构相关的问题,如无序映射、有序映射及其复杂性。
6名学生被选入下一轮。
第 3 轮:个人编程面试 2
在这一轮与 AVL 树旋转、二元线段树更新的时间复杂度和 K 度线段树、K 度 B 树(平衡搜索树)相关的问题中,打印具有不同元素的向量的排列,然后使用问了重复。我还被要求编写快速排序的代码,它最坏和最好的复杂度,以及为什么它不能在小于 O(nlogn) 的时间内解决。
第 4 轮:人力资源轮
这一轮就我的项目、我面临的挑战、我的爱好和我的职业目标等进行了正常的讨论。
面试官非常友好和理解。在编码回合中解决问题的时间是严格的。具有竞争性编程经验的学生在那里具有优势。牢牢掌握数据结构和算法会对你有很大帮助。大多数编码问题都涉及对流行面试问题的间接应用,因此对这些问题进行一些练习和清晰的方法可以帮助您很多。
最终只有一名被选为实习生。现在轮到你尝试这次采访并进入决赛了。
记住,你是你自己的神!
祝一切顺利!