📜  Sprinklr 面试经历 | FTE 2020 校园内课程(实习 + 工作)

📅  最后修改于: 2021-11-16 08:48:38             🧑  作者: Mango

第一轮:(编码测试)

这是在 HackerEarth 上进行的在线编码测试。由 3 个编码问题组成的测试。

  1. 给定两个二进制字符串A 和 B。在一次移动中,您可以从字符串A 中选择任意两个调整数,并用它们的 XOR 替换它们中的任何一个,用它们的 OR 替换另一个。例如:A=0010110。您选择了 0 和 1,因此,0 XOR 1=1 和 0 OR 1=1 因此,01 变为 11。您可以在字符串A 上多次应用此移动,并且可以从 A 生成字符串B,否则返回 YES不。 ( 50 分)
    • 答案:计算两个字符串中 1 的个数。让计数为cnt1cnt2。如果 (cnt1>0 && cnt2>0) 或 if (cnt1==0 && cnt2==0),则答案为“YES”,否则答案为“NO”。不要忘记检查两个字符串的长度。显然,如果字符串的长度不同,答案将是“NO”。
  2. 给定一个 NxM 维度的整数矩阵 (m)。在一次移动中,您可以从位置 (i,j) 转到 (i+m[i][j] , j) 或 (i,j+m[i] [j])。最初,您在 (1,1) 处,您想到达 (N, M)。因此,您必须打印达到 (N, M) 的最小移动次数,如果不可能,则打印 -1。注意:您不能跳出矩阵。 (即在任何移动中 i+m[i][j] < N 或 j+m[i][j]75 分)提示:可以使用 BFS 或使用 2D 矩阵解决。
  3. 有N个不同的包。第 i 个包裹是 X[i] 天,那个包裹的价格是 Y[i]。有 M 个客户。第 j 个客户想要至少 A[j] 天的包裹,并且他不想为任何包裹花费超过 B[j] 天。一个包裹最多可以容纳一个顾客(社交距离),一个顾客最多可以购买一个包裹。你必须找到最大数量的包裹,你才能卖掉。 ( 100 分)

我得到了 225 名中的 215 名。所以我和其他 65 名成员一起入围了下一轮。

第二轮:技术轮(F2F)|在线的

有两个面试官。两人都非常友好,在整个面试过程中都保持着非常舒适的环境。大多数问题都与竞争性编码和谜题有关。

面试级别:简单/中等

1) https://codeforces.com/problemset/problem/987/C

2)谜题:https://math.stackexchange.com/questions/2440047/colour-change-in-drawing-balls-expectation-same

3)拼图:https://www.geeksforgeeks.org/puzzle-1-how-to-measure-45-minutes-using-two-identical-wires/

注意:可能会有变化,例如测量 15 分钟、30 分钟或 60 分钟

4) https://www.geeksforgeeks.org/sliding-window-maximum-maximum-of-all-subarrays-of-size-k/ 不要直接跳优化解,因为这个问题可以用2/3的方法解决.

注意:可以询问在所有大小为 k 的子数组中找到最小值的问题

预期时间复杂度:O(n)

5) 解释面试官指出的具体项目。

6) 拓扑排序解释与实现

又问了一两个问题,但我不记得了。

第三轮:技术轮(F2F)|在线的

等级:中等

面试官很有帮助。每当我遇到任何问题时,他都会给我提示。

1) 给定两个整数 l 和 r。找出两个整数 x 和 y,使得 l?x

输入:第一行包含一个整数 t (1?t?10000) — 测试用例的数量。每个测试用例由包含两个整数 l 和 r (1?l

输出:对于每个测试用例,打印两个整数:如果无法找到满足语句中约束的整数 x 和 y,则打印两个等于 ?1 的整数;否则,打印 x 和 y 的值(如果有多个有效答案,您可以打印其中任何一个)。

https://codeforces.com/contest/1389/problem/A

2)给定一个整数x,它每秒将其值加倍,然后如果它保持为正值,则可以将其值减一。 k 秒后 x 的期望值是多少。

示例:一秒后,x 的值可以是 2x 或 2x-1。所以一秒后 x 的预期值为 2x-1/2。

约束条件:1<= x,k <=10^18

然后他问我如果1<= k<= (10)^(10^18) (想想用费马小定理)??

3)简历上写的项目问题

4) 优化以下代码

C++14
#include 
using namespace std;
#define MOD 1000000007
int main() {
   long long sum=0;
   for(int i=A;i<=B;i++)
       for(int j=C;j<=D;j++)
       {
           sum+=(i^j);
           sum%=MOD;
       }
    return 0;
}


因为总和可以是非常大的输出总和模 10^9+7

约束条件:1<=A,B,C,D<=10^6

又问了一个编码问题。

第四轮:技术轮(F2F)|在线的

级别:中等/困难

面试官很有帮助。每当我遇到任何问题时,他们都会给我提示。

1)基础数学题:

2^10, 2^32, 2^30, 2^80 … 有多少位数字??

2) 可以使用 n 个左括号和 n 个右括号来计算不同平衡括号序列的数量。答案:加泰罗尼亚数或使用动态规划

3)检查给定的图是否可以分为两个派系和实现逻辑。 https://www.geeksforgeeks.org/two-clique-problem-check-graph-can-divided-two-cliques/

4) 假设一门课程由 n 门课程组成,所有课程都是必修课。先决条件图 G 有一个节点用于每个课程,以及一条从课程 v 到课程 w 的边,当且仅当 v 是 w 的先决条件。找到一种算法来计算完成课程所需的最少学期数,并实施该算法。

额外问题:如果我们必须完成的课程数少于总 n 门课程,请找出所需的最少学期数。

5) 简历上写的项目问题。

6) https://www.geeksforgeeks.org/design-a-stack-that-supports-getmin-in-o1-time-and-o1-extra-space/

7) 使用 O(1) 额外空间的链表中最长回文列表的长度。 https://www.geeksforgeeks.org/length-longest-palindrome-list-linked-list-using-o1-extra-space/。

另一种方法:将单向链表转换为双向链表并通过将每个索引视为回文列表中的中间来找到最长的回文列表(需要在每个索引处检查奇数长度回文列表和偶数长度回文列表两种情况。但我不被允许改变链表节点的结构。所以我提出了将单个列表转换为异或链表的想法,这样我就可以在不改变节点结构的情况下双向遍历列表。

第五回合:人力资源回合 (F2F) |在线的

回合持续了大约15-20分钟。她问了我一些正常的问题,比如介绍一下你自己,你的实习经历,你为什么想加入这家公司,有什么让你开心的活动等等……

最后,她问我有没有什么问题要问她。向面试官提问是一个好兆头,因为这表明你对公司感兴趣。

尽管几乎所有问题都是每一轮(技术)中的编码问题。我建议您在其他学科(如 DBMS、操作系统、系统设计)上建立强大的基础。

最终裁决:已选择