Flipkart 采访 |设置 12(校内)
我最近在一次校园实习期间被 Flipkart 选中。这些都是我面临的问题。
- 在线编码回合(2 个问题)
- 给定两组元素,我们必须找出两组的 LCM 结果集是否相等。
例如:- 让集合为 X = {2, 3, 4}
那么 LCM 集合将由给定集合的任何子集的所有 LCM 组成。
在这种情况下,LCM(X)={2,3,4,6,12}
约束:- 两个集合中的元素数量不超过 50。
- 元素范围即 A_i 和 B_i ≤ 10 9
我通过首先将不同的元素隔离在不同的集合中来解决了这个问题。
假设对于集合 A,A' 包含 A 中满足 A'=A-{A 交集 B} 的所有元素
类似地,B 为 B'。
现在,对于 A' 中的每个元素,我检查了元素 (n) 的数量,这些元素是其在 B 中的因子,即可能有助于在最终 LCM(B) 中生成 A' 中的数字的数字。
如果对于 A' 中的任何数字,如果 n<2,则该数字绝对不能在最终的 LCM(B) 集中,并且该函数应返回 false。对 B' 中的所有元素进行了类似的测试。如果函数在这两个循环中没有返回 false,那么答案应该是 true。尽管此逻辑并未涵盖所有情况(例如,如果两个集合是 {2, 5, 70} 和 {2, 5, 10}。答案为 true 但正确答案为 false ),但由于测试用例较弱,因此它通过了. (我的意思是,如果在第一轮出现如此棘手的问题,他们必须在其他地方进行补偿)。 - 给定连接城市的道路网络和每条道路的容量(所有道路都相同)以及维修成本(每条道路唯一),我们得到仅使用最短路径在一对城市之间运行的公共汽车数量(n) . (道路容量=该道路上允许的公共汽车数量)。
不安全的道路是道路上没有公共汽车>道路容量的道路。
现在给定 n,我们必须最小化所有不安全道路的总体成本。
从我的记忆中很难理解,我们必须计算不相交最短路径的最大数量,以最小化答案。 (我的解决方案只通过了一个测试用例)。 - 给定两组元素,我们必须找出两组的 LCM 结果集是否相等。
- 第一轮(F-2-F)
我被问到各种各样的问题,从字符串到 dp 再到图表。- 给定一个损坏的字符串,即它是原始字符串,只有错误位置的空格,构造原始字符串。我们得到了一本单词词典。
Ex:- string: Com put erengineering original string: Computer Engineering
我给了面试官一个递归的解决方案。然后我被要求编码。之后,有人问我是否可以进一步优化代码。我不能。
- 给定一条小巷,那里有各种房屋,每个房屋都包含固定数量的黄金。现在一个强盗必须抢劫房屋,这样当他抢劫一所房子时,相邻的房子就不能被抢劫了。计算他收集的最大金币数量。 (经典 Dp 问题)。
文章链接:https://www.geeksforgeeks.org/find-maximum-possible-stolen-value-houses/
练习链接:https://practice.geeksforgeeks.org/problems/max-sum-without-adjacents2430/1 - 给定 1000 头大象,它们的确切高度都不知道,给出的陈述将有两种形式
I. E_i is taller than E_j OR II. E_i is smaller than E_j
计算大象的升序(以高度计)。
乍一看对我来说似乎很难,但几分钟后,我能够做到。
(使用语句构造一个 DAG,然后对它们进行拓扑排序以获得答案) - 如果源未知,则对给定的 DAG(不包括森林排列)进行拓扑排序。
例如:如果边是 1 → 2, 1 → 3, 2 → 4, 3 → 4 。
然后通常我们会从每个 pt 运行 DFS,然后选择该节点作为访问所有节点的源。
这完全是一个 O(n 2 ) 算法。
然后有人问我是否可以使用 O(n) 算法。
我告诉面试官,如果我们从每个节点运行 dfs,而不是每次只保留数据时都刷新访问过的数组,那么来自节点的 dfs 会标记整个访问过的数组,即所有访问过的节点都是源。
当从一个节点运行 dfs 时,如果在任何 pt 遇到访问过的节点,我们将离开该节点并移动到下一个子节点。只需在 dfs 期间也保留一个堆栈……。在访问数组中的所有值都被标记之后,我们将在堆栈中获得 DAG 的最终拓扑排序顺序。 - 给定一个池塘,所有的石头都以一个单位的距离排列(每行 C 并且有 R 个这样的行),每块石头都有一个特殊的值,表示青蛙可以跳的长度,即如果青蛙在石头 (x, y) 并且值为 k 然后青蛙可以跳到 (x+dx, y+dy) ,其中 dx + dy = k 并且青蛙不会离开边界。找到到达 (R, C) 处石头的最小跳跃次数。
从矩阵中将其可视化。是否使用 DP ........如果您想知道,对于 cel (x, y) 处的青蛙,运行两个 dx 和 dy 循环,其中 net dx+dy=k 并执行 dp[ x+dx][y+dy]=min(dp[x][y]+1, dp[x+dx][y+dy])。
答案将在 dp[R][C] 中。
然后我被要求回溯非常简单的路径,因为 dp[x][y] 从中减去 1 并在 i ≤ x 和 j ≤ y 的单元格 (i, j) 中查找结果值。重复此过程,直到达到 (0, 0)。
我的第一轮到此结束。还问了一两个问题,但我记不清了。
- 给定一个损坏的字符串,即它是原始字符串,只有错误位置的空格,构造原始字符串。我们得到了一本单词词典。
- 第 2 轮(F-2-F)
技术+人力资源- 使用数据结构实现 LRU 和 LFU 页面替换策略。
文章链接:https://www.geeksforgeeks.org/least-frequently-used-lfu-cache-implementation/ 在准备亚马逊的时候已经遇到过这个问题。
我使用双端队列和哈希图(Map 或 BST 无关紧要,因为两者在检索和插入数据方面具有相同的复杂性)。 - 给定一个普通骰子和一个空白骰子。填写空白骰子,使得两个骰子的数字之和对于所有结果和的概率相同,并且总和的范围为 1 到 12。
经过一击和试验,我意识到空白骰子上的数字会被重复以给出均匀的概率分布。
毛坯模具所需的最小元素 = 0
毛坯模具所需的最大元素 = 6。
用 0 标记 3 个边,用 6 标记三个边。
由于毛坯模具上出现0和6的概率相同,等于0.5,
P(每个总和)=1/2*P(i)=每个数字的 1/12。
现在开始时取 1/12,然后推导出解决方案应该很容易,但由于一天的劳累和恶劣的天气,我想到了后门方法。
一些与大学期间完成的小项目相关的人力资源问题,以及与我作为客户使用 Flipkart 的经验相关的问题。
- 使用数据结构实现 LRU 和 LFU 页面替换策略。
- 第三轮(奖金轮)
我们中有四个在第二轮后被选中的人被要求参加 GD 轮,他们告诉我们他们只希望我们两个人参加。
我们对这种说法感到困惑。
他们告诉我们他们想要一个小组讨论主题为什么 FLIPKART 雇用你?
我们持续了 10 分钟,试图用 Flipkart 的优势为他们加油,天知道会发生什么。
然后我们在一个chit上得到了我们的结果。
打开小贴士后,我们意识到这只是一个恶作剧。
WTF !!欢迎来到 Flipkart
如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。