📜  Flipkart 面试经历 | SDE-1(有经验的)

📅  最后修改于: 2021-09-23 06:10:23             🧑  作者: Mango

第 1 轮:机器编码轮(1.5 小时)

我得到了以下问题陈述,并要求我使用任何选择的编程语言来实现它。他们希望代码是生产级的、模块化的并且没有错误。在此之后,对代码进行了一轮评估。他们在所有极端情况下测试了代码,并要求我修改代码以满足我能够轻松完成的新需求。

作业调度器

一个作业调度器,用于在一台机器上的 N 个线程上调度 M 个作业。输入包含以下数据:

  1. 职位名称
  2. Duration:完成工作所需的时间
  3. 优先级:作业的优先级。 P0 > P1 > P2
  4. 截止时间:过期后不应运行作业(时钟从 0 开始,截止时间为实际时钟时间)
  5. UserType:发起任务的用户类型,用户优先级Root > Admin > User

有各种调度算法-

最短作业优先 – SJF

Shortes job first (SJF),是一种调度策略,选择执行时间最短的等待进程下一个执行。在平局的情况下,请按照以下顺序选择工作-

  1. 优先级(优先级高的作业先被调度)

先到先得

工作按先到先得的原则执行。将输入作为需要安排的作业顺序。

固定优先级调度-FPS

每个进程都被分配了一个优先级。优先级最高的进程将首先执行,依此类推。在平局的情况下,请按照以下顺序选择工作-

  1. 用户类型
  2. 最长作业优先

最早截止日期优先 – EDF

下一个工作将根据最接近其截止日期的工作进行搜索。如果是平局,请按照以下顺序选择工作——

  1. 优先级(优先级高的作业先被调度)
  2. 持续时间(较短持续时间的工作首先被安排)如果我们不能安排一个工作,使其在截止日期之前完成,那么它应该被忽略。

您将获得一份作业列表(有关格式,请参阅下面的示例)和线程数作为输入。您应该打印为每个线程上的每个算法安排的作业顺序作为输出。

例子
输入

Threads= 2

Job Name Duration Priority Deadline User Type
J1 10 P0 10 Root
J2 20 P0 40 Admin
J3 15 P2 40 Root
J4 30 P1 40 User
J5 10 P2 30 User
输出
SJF
Thread 1 - J1, J3, J4
Thread 2 - J5, J2

FCFS
Thread 1 - J1, J3, J5
Thread 2 - J2, J4

FPS
Thread 1 - J1, J4, J5
Thread 2 - J2, J3

EDF
Thread 1 - J1, J2
Thread 3 - J5, J4

第 2 轮:PS-DS 轮(1 小时)

这是一个问题解决和数据结构相关的回合。

面试官用工作代码问了我以下问题。

  1. 在任何时间点,从无限数的传入流中找到最大 k 个数的平均值。我使用 k 大小的最小堆解决了这个问题,并维护了一个sum变量来找到平均值。每次插入 min-heap 将元素添加到sum ,对于 min-heap 的每次删除,从sum 中减去元素。得到平均回报总和/no。的元素。
  2. 将给定堆栈的内容以相同的顺序复制到另一个堆栈,而不使用额外的空间。
  3. 雨水收集问题。 https://www.geeksforgeeks.org/trapping-rain-water/

我解决了上述所有问题,我的面试官很满意。

第 3 轮:招聘经理轮(1 小时)

HM就我最新的项目和我在项目中用到的技术进行了深入的讨论。他也问了我很多行为问题。

几周后,我收到了offer。