第1轮:
平台: Hackerearth
时间: 1.5 小时
第一轮是在线编码轮和 20 个 MCQ。 MCQ 来自一般计算机科学主题,例如:数据结构、算法、dbms、谜题和一些基于 C、C++ 语言的问题。
两个编码问题各占 100 分,主要基于实现技能,例如从数组的两端形成累积数组等。
建议:对Java的c++ STL或Collection有很好的掌握。
MCQs – +1 正确答案和 -0.5 否定标记。
13 人入围面试。
第二轮
有2个问题。
首先是一个谜题,即您在一行中有 n 个重量,例如:12 13 2 1 6,一个人从第一个重量后面带着篮子过来。由于他不识字,他无法阅读他正在选择的重量,并且他只能在篮子中保留 1 重量。但是他可以将当前重量与篮子中的重量进行比较,如果小于或大于或等于,并且通过做出某些决定,他可以交换两者的位置。最初篮子是空的。从一个权重移动到另一个相邻权重需要 1 个单位时间。男人需要在最短的时间内按降序排列权重。并推导出这个最短时间的公式。
提示:尝试先将最小的权重放在最右边,同时向右移动,然后在向左移动时将最大的权重放在最左边。想法:看到每次我们通过分别在开始和结束处放置最小和最大来将路径长度减少 2(从两侧 1 )。
其次是一个算法问题:可以在 geeksforgeeks 上找到 Trapping Rain Water。
链接:收集雨水
第三轮
本轮面试共问了3个问题。
建议:尝试在处理所有极端情况的情况下编写干净的代码。
问题1:面试官问我最喜欢哪种数据结构。我说段
树木。因此,我被指示为整数数组中的范围总和查询编写构建函数。
问题 2:在整数数组中找到总和为零的子数组的最大长度。
总和为零的子数组:当元素在累积总和数组和最大长度中重复时形成
可以通过保持元素的第一次出现来获得子数组。
问题 3:查找二叉树中两个节点的 LCA(最低共同祖先)。
二叉树中的最低公共祖先
我感谢 GeeksforGeeks 在我的准备过程中帮助我。