📜  SDE-I 的 Flipkart 面试体验 | 1年经验

📅  最后修改于: 2021-11-18 02:03:41             🧑  作者: Mango

第1轮:

机器编码– 30 分钟讨论问题陈述,3 小时实施,另外 1 – 1.5 小时讨论解决方案,包括测试用例。

设计 Covid-19 疫苗接种预订系统

功能包括:

  • 入职州、地区、病房、疫苗接种中心、插槽
  • 用户使用独特的文档注册自己。
  • 适当的搜索功能可帮助用户查找城市中的插槽、中心、病房。
  • 列出预订和中心数据。

问题是实施很重,我们需要确保我们处理突然输入和边缘情况,并且出现了很多这样的情况。

类似的基于实现的问题可以是 – https://workat.tech/machine-coding/practice/design-library-management-system-jgjrv8q8b136。

输入/命令与文章中的非常相似。

第 2 轮(DSA):45 分钟

  1. 给定一组正数和负数。您必须找到 3 个数字的最大乘积
    https://practice.geeksforgeeks.org/problems/three-great-candidates0515/1。
    Input : [9, 1, 2, 3, 4, 5, -8, 10]
    Output : 450 (10 * 9 * 5)
    Input : [-9, 1, 2, 3, 4, 5, -8, 10]
    Output : 720 (10 * -9 * -8)

    解决方案:

    – 对数组进行排序,答案将是最大值(最后 3 个数字的乘积或前 2 个数字与最后一个数字的乘积)

    时间:O(n Log n)

    – 遍历数组并将最多 3 个数字和最少 2 个数字存储在变量中。答案将是 max(max1 * max2 * max3, max1 * min 1 * min2)。

    时间:O(n)

  2. 给定具有源的飞行路线,我们需要找到目的地。目的地是没有通往其他机场的路线的机场。

    我可以有多个机场,它们没有通往其他机场的路线,但应该可以从源头到达目的地机场。

    目的地机场将永远存在。

    Input : [A,B] [B,C] [C,D] [E,F], Source = A
    Output : D
    A(source)->B->C->D
    E->F

    D 之后没有路由。F 也没有到另一个机场的路由,但是 F 不能从源头到达,所以它不能作为答案。

    Input : [A,B] [B,C] [C,D] [C,E] [E,D], Source = A
    Output : D
    A(source)-B-C  -  D
                \   /
                  E

    D 之后没有路由,所以 D 将是目的地。

    解决方案:

    创建图,然后从源执行 DFS 调用,直到找到没有子节点的节点。该节点将是答案。

    时间——O(n),n是机场数量

    我使用哈希图来构建像邻接列表这样的图。

    讨论了构建可以进行空间优化的图形的其他方法。

  3. 给定一个正数 N,生成该数字的分数,其中 N 可以表示为 2 个数字 A 和 B 的总和,分数是 [Score(A) + Score(B)] 的所有排列的总和。

    A 和 B 组合必须是唯一的。 (例如:1 & 3 与 3 & 1 相同)

    Input : 3
    Output : 3
    Input : 5
    Output : 14

    解决方案:

    这是一个一维 DP 问题,其中 N 的分数可以通过计算小于 N 的数字的分数以自下而上的方式计算。

    Example :
    1 => 1 (Base case)
    2 : 1 + 1 => Score(1) + Score(1) = 2
    3 : 1 + 2 => Score(1) + Score(2) = 3
    4 : 1 + 3 => Score(1) + Score(3) = 4
    2 + 2 => Score(2) + Score(2) = 4
    = 4 + 4 = 8
    5 : 1 + 4 => Score(1) + Score(4) = 9
     : 2 + 3 => Score(2) + Score(3) = 5
     = 9 + 5 = 14
    6 : 1 + 5 => Score(1) + Score(5) = 15
     : 2 + 4 => Score(2) + Score(4) = 10
     : 3 + 3 => Score(3) + Score(3) = 6
     = 15 + 10 + 6 = 31

    >我们只需要制作一个从1到N的一维数组,从1开始遍历填充值,最后返回Score(N)。

    时间:O(n^2)

有些人进行了 2 轮 DSA,但我的轮进行得很顺利,所以他们为我减少了 1 轮。

虽然这些问题看起来比较容易,但是有 45 分钟在手,其中 10 分钟用于介绍和基本项目/角色讨论,在大约 30 分钟内解决 3 个问题使它有点困难。

第 3 轮(招聘经理/文化设施):1 小时

  1. 问我关于以前组织中的角色。
  2. 解释我所从事的工作的非常高级的架构。
  3. 语言/框架的选择和原因。
  4. DB (SQL / NoSQL) 的选择以及原因。 (深入讨论)
  5. 通过深入讨论缓存概念。
  6. 项目讨论。
  7. 我证明自己更倾向于以客户为导向的情况。
  8. 我与团队发生分歧的情况以及我是如何处理的。
  9. 我特意去做某事时的情况。
  10. 迄今为止对我来说最大的成就。
  11. 如何处理客户需求与业务需求不一致的情况。
  12. 您为展示团队合作而采取的步骤。

判决:选择

保持一致并有耐心,事情会奏效,你会到达你想要的地方。