📜  MindTickle 面试经历 |校外 |更新鲜(0-Yr 经验)

📅  最后修改于: 2022-05-13 01:58:14.830000             🧑  作者: Mango

MindTickle 面试经历 |校外 |更新鲜(0-Yr 经验)

最近在 19 年 5 月大学毕业后,我通过员工推荐在 mindtickle 申请了 SDE-I 职位。我在 1-2 天内接到 HR 的电话,她检查了我对角色的兴趣,并在 2-3 天后安排了一次 Skype/google 视频群聊。人力资源部在整个过程中都非常支持,所有的轮次安排都是根据我的舒适能力和可用性完成的。(周六/周日除外:p)

第 1 轮:Skype/环聊轮

这一轮基本上是DSA轮,面试官从我的简历中问了一些问题。因此,它从对我的实习项目的小讨论和一些简单的后续问题开始。这是最简单的一轮。然后他问了我一个算法问题——

  1. 给定一个 n*2 值的列表,其中 n 代表天,第一列表示完成简单任务后收集的分数,第二列表示困难任务的分数,我们的任务是最大化 n 天后收集的分数,给定条件如果一个人在第'i'天执行艰苦的任务,他必须在'i+1'天休息,即第二天他不应该做任何工作。他也可以完成简单或艰巨的任务。我给了他一个带有解释的dp解决方案,他似乎对此很满意。他让我在通过 collabedit 共享的链接上为其编写完整的工作代码,然后他在几个边缘案例上运行代码。在他问我是否有任何问题要问他之后,我向他询问了工作概况,他在 mindtickle 解释了不同的工作角色。

第 2 轮:Skype/环聊轮

第一轮后的第二天,我接到HR的电话,面试官的反馈是积极的,我们可以继续进行下一轮。她问下一轮的日期,我说明天对我有好处,她同意了。这一轮对我来说是电话,因为那天我家乡的互联网连接因为大雨而不好。他直接跳到算法题——

  1. 给定一个数组,为这个数组生成任何随机等概率排列并在原地完成。我通过对每个索引使用简单的随机函数提出了解决方案,并通过交换创建了新数组,对此他很满意。
  2. 接下来,他要求给定一棵二叉树,随机打乱树节点并保持其结构。我通过遍历树并将其存储在数组中(比如按顺序)给出了解决方案,并将在数组上应用问题 1 的方法,然后再次用改组的值替换树值(以相同的顺序遍历)大批。他问时间复杂度,空间复杂度,我说都是o(n)。他让我在 collabedit 上为这种方法编写完整的工作代码并试运行几个案例。
  3. 接下来他说,在上面给出的问题中,将空间复杂度降低到常数,不要担心时间复杂度。我对这个问题有一段时间感到震惊,他暗示要同时使用问题 1 和问题 2 的逻辑。大约 5 分钟后,我给了他 o(n^2) 解决方案,其中我遍历每个节点的树,为该节点生成一个随机节点编号并保持从根遍历的计数,所以当计数将等于那个随机生成的数字,我交换了两个节点的数据。

第三轮:浦那办公室的F2F轮

第二天我又接到了 HR 的电话,她给了第二轮的积极反馈。然后她通知说,他们的浦那办公室将再进行 2 轮 f2f 比赛,他们将预订旅行和住宿。她确定了面试的日期(都在同一天),并邮寄了酒店和航班的详细信息。

这一轮由 2 位面试官进行(正式的一位,另一位只是倾听并在其间问一些问题)。该回合于下午 12:20 左右开始,持续了约 2 小时。他们直接从一个算法问题开始——

  1. 给定一个整数的排序数组,和一个 func f=ax^2+bx+c,其中 a,b,c 可以是任意整数,x 是数组值,生成 func 的排序数组。 F。我说直接计算所有输入数组的'f'值,然后对创建的数组进行排序。他同意并询问时间复杂度。我用 o(nlogn) 回复。他要求我将时间复杂度降低到 o(n)。我想了 5 分钟,给了他一个 2 分的方法。解决方案是——因为 f 是抛物线的,它要么是向上开口,要么是向下开口。让我们考虑向上开放。现在,抛物线的 D=0 点是x =(-b/2a),我在输入数组上对其进行二进制搜索,并告诉 f(x) 大于这个x的值将是递增顺序,并且所有小于这个x点的 f(x) 也将按递增顺序排列。因此,我们将取 2 个指针,一个用于此 x 的右侧,另一个用于此 x 的左侧,并比较它们的 f(x) 并相应地递增指针(请记住,这里我只考虑朝上的抛物线)。对于向下抛物线也可以这样做。然后他让我为此编写完整的工作代码并检查代码中的案例。
  2. 给定服务器上只能处理“n”个请求的请求流,找出每个传入请求在那些“n”个处理请求中具有相同概率的概率。您可以参考以下内容——https://www.geeksforgeeks.org/reservoir-sampling/。我无法做到这一点,因为我不熟悉这种类型的算法(随机算法)。他问我这个是因为我在大学期间做过一个机器学习项目。
  3. 一些简单的概率问题。

第4轮:技术F2F轮

接下来是第三轮,时间是下午 2 点左右,我在 MindTickle 的食堂和面试官共进午餐(他们提供免费食物:D)。然后 HR 通知下一轮将在接下来的 10-15 分钟内进行。

面试官看起来很有经验,首先让我在会议室用记号笔解释优先队列的工作。我向他解释了优先级队列中的删除、插入、搜索和时间复杂性。他似乎很满意。接下来他让我解释 RB/AVL-trees 中自平衡的概念。我向他解释了。然后他让我坐下,开始在纸上提问。

  • 1. 给定一个数组,找到它的中值,并且答案中的小错误是可以接受的(警告 – 提示!!)。我说简单地对数组进行排序并找到中间元素。他问时间复杂度。我说的是nlogn。他说把它减少到o(n)。他给出了使用上述讨论的提示。我告诉他,我们可以创建一个二叉树,它的属性是父大于左子,小于右子。我们将保持这棵树的平衡。根将是中位数。他对上述知识的使用印象深刻,但坚持认为时间复杂度仍然不是 o(n)。 5-10分钟后,他问我是否听说过随机算法,中位数的中位数。你可以google一下,很容易找到。由于我对此一无所知,我们继续下一个问题。
  • 2. 关于 Dijkstra 的一个简单问题。然后他让我证明为什么 Dijkstra 是贪婪的。(通过归纳或矛盾,我用矛盾证明了这一点)。
  • 3.关于我第二年暑期项目的一些后续问题。

这4轮过后,我一个人坐在会议室里,他们的联合创始人拜访并和我交谈,询问我在整个面试过程中的经历,坚持要我和他一起吃晚饭:p 吃完点心我就回去了到了会议室,没过多久,一位 HR 来了,问了一些基本的问题,比如我从哪里来,我在浦那感觉如何,并描述了整个 CTC 的分手。他祝贺我成为即将到来的头脑风暴者!!

尖端 :

1. 每一轮面试官都很友善,不要惊慌。即使你不能解决,也要和他讨论你的方法。他将通过暗示解决方案来帮助您解决整个问题。

2. 准备好你写在简历上的一切。