📜  SDE2 的 Flipkart 面试体验(2.5 年期)

📅  最后修改于: 2021-09-23 05:45:32             🧑  作者: Mango

第 1 轮:机器编码

问题陈述是设计一个拍卖系统Foobar,在那里卖家可以为他们想要出售的物品创建拍卖。他们将指定可以出价的最低和最高出价,并且将对参加此次拍卖的买家收取参与费。系统应该能够同时处理多个拍卖。卖方的利润/损失将计算为:WinningBid + 20% of totalParticipationCostByBuyers – averageOfLowestAndHighestBid。剩余 80% 的参与成本作为佣金支付给 foobar。中标将是最高的唯一出价。如果对于特定的拍卖,这些是出价 – 买方 1 19、买方 2 19、买方 3 17、买方 4 17、买方 5 10:那么买方 5 将成为赢家。需要以下操作:

  1. 创建卖家
  2. 创建买家
  3. 由注册卖家创建的拍卖
  4. 任何注册买家参与拍卖
  5. 买家可以更新出价金额
  6. 撤标
  7. 关闭拍卖并返回中标
  8. 到目前为止任何卖家的盈利/亏损
    布朗尼为此指出:如果任何买家在超过 2 场拍卖中出价,则他是首选买家。因此,如果在拍卖中有两个出价买方 1 19 和买方 2 19 并且买方 2 是首选买方,那么他就是赢家。如果买方 1 和买方 2 都是首选买方,则回退到下一个最高出价并应用相同的逻辑。

期望 :

  • 代码应该是模块化的,所有的职责不应该被塞在 1/2 类中。基本上他们希望这是分层的:dao 层,api 层。
  • 代码必须有效且可演示。
  • 优雅地处理故障
  • 覆盖角落案例
  • 代码必须是可扩展的,更改最少。所以请记住未来的需求并尽可能使用接口和契约。为此,您应该了解 SOLID 原则和设计模式。

第 2 轮:DS ALGO 轮

  1. https://www.careercup.com/question?id=24532662 <- 好一个
  2. https://www.geeksforgeeks.org/minimum-time-required-so-that-all-oranges-become-rotten/
  3. https://www.geeksforgeeks.org/median-of-stream-of-integers-running-integers/

最后两个问题,面试官要求在纸上写代码。

第三轮:系统设计

为这个新想法设计一个 Flipkart 系统,其中 Flipkart 提出了像大篮子这样的东西,你不能购买东西但可以订阅它们(例如,我们在接下来的 1 个月内每天订阅牛奶和 AppleJuice)。将有商店将在flipkart 上提供这些商品,他们还将指定可以送货的地点。用户可以订阅商品——如果用户在商品可用的商店的位置范围内,商品可以来自任何商店。不用担心存储部分和逻辑部分,专注于订阅模型。
你的工作是提出要求,提出澄清问题。我谈到了服务器端的微服务,你的客户端应用程序将处理所有的事情,以及如何,数据库端,支付,什么可以异步/同步工作,平衡服务器上的负载,如何处理规模,处理 spof,缓存、API 接口、通知用户折扣、多种订阅模式,选择哪一种:SQL 与 NoSQL 以及为什么,以优化搜索查询的方式设计实体。他对我设计中包含的所有内容提出了质疑。他确保他问了他想知道的所有事情,如果我要深入了解他不想深入了解的东西,他阻止了我并告诉我们不想深入研究这件事,并将讨论转移到他想钻研什么。
如果您在 2 种技术之间使用 1 种技术,您应该能够证明为什么并讨论每种技术的利弊。

第四轮:招聘经理
我记得的一些问题是:

  • 5年后你在哪里看到自己?
  • 如果您的职业生涯结束 10-12 年,您打算成为一名经理 – 从现在开始您将如何计划。
  • 如果你被选中,你打算如何接触新的团队成员。 (我就像什么!我会去和他们谈谈:P)
  • 您在系统设计知识方面给自己打多少分(满分 5 分)?
  • 你的弱点是什么?
  • 如果有一个消费者以每秒 10 个单位的速度消费。 & 生产者以每秒 100 件的速度生产,您将如何处理?
  • 您不能使用 % /*运算符,您将如何找到最多两位小数的 x/y 值?
  • 如果你被选中,你对flipkart和新团队有什么期望?
  • 为什么你想在分布式系统上工作,即使你没有在它们上工作,你也有足够的资源来学习?