Delhivery 面试经历 |设置 5
第1轮:
第 1 轮是在hackerearth 上进行的,包括 50 个 MCQ 问题,主要是关于机器学习和概率的问题,以及三个编码问题。在入围候选人时,他们根本没有考虑这些 MCQ 问题,入围纯粹是基于编码问题。这三个问题是
- 你将得到一个数组,你必须打印数组中最大的素数——数组中最小的素数。正常 O(sqrt(n)) 素数测试给出超时。使用初筛解决了超时问题。
- 你会得到一个数组,你必须告诉你是否可以把这个数组分成两个相同的部分。例如:[1, 2, 2, 1] 可以拆分为 [1, 2] 和 [1, 2]。逻辑很简单,每个元素都必须出现偶数次才能像这样拆分
- 你会得到两个数字a和b。您必须在 (a/b) 中说出小数点后的位数。如果它再次发生,您必须打印无限。这可以通过长除法轻松解决
大约 1200 人参加了这项测试,他们入围了 50
第 2 轮:
面试官首先让我写下我最喜欢的科目,然后我写了数据结构和算法。他开始问我问题
第一个是对链表进行排序。我告诉他,选择排序或插入排序等排序算法很容易实现,而合并排序和快速排序等 O(nlogn) 算法很难实现,并给出了原因。
您将获得一个堆栈,您必须对堆栈进行排序。如果需要,您可以使用另一个堆栈。经过一番思考,我给出了解决方案。
您将得到一个数组,您必须找到总和为零的子数组的数量。如果有任何你必须打印每个子数组的开始和结束索引。我给了他一个 O(n ^ 2) 的方法,他让我优化它。后来经过一点思考,我给了他一个 O(n) 的解决方案。
您将得到一个二叉搜索树,您必须按排序顺序打印元素。这只是中序遍历。所以他让我在不使用中序遍历的情况下按降序打印元素。这只是右、根、左或反向中序遍历。
之后,他问我如何在二叉搜索树中找到第 k 个最大的元素。他给了我一个提示,答案来自上一个问题。解决方案很简单,以递归方式递归 k 次以获得第 k 个最大元素:p
你将得到一个二叉搜索树和一个数字 n。您必须判断此 BST 中是否存在一对,使得该对的总和为 n。我给了他带有额外空间的传统 O(nlogn) 方法。然后他问我是否可以在没有额外空间的情况下做到这一点。那么这将是一个 O(n ^ 2) 解决方案。
下一个问题是从链表中删除重复项。我给了他一套方法。他让我在不使用额外空间的情况下解决这个问题。我告诉他我们可以对链表进行排序,我们可以轻松地删除具有 O(1) 空间的重复项。
面试官告诉我他要送我去第二轮:p
这一轮持续了大约1小时15分钟。
第三轮:
这次面试的是技术负责人。他扫描了我的简历,问了很多关于安卓的问题。我如何完成我的项目以及我在应用程序中使用的技术。除了一些 2 或 3 个问题,我几乎回答了所有问题。他开始问我有关 bfs dfs 等算法的问题,以及它们之间的区别。这一轮持续了30分钟。
第四轮:
这是一种 HR + Technical 回合,他问我为什么到处都使用 NoSql,NoSql 和 SQL 之间的主要区别是什么。我给他一个清晰的画面。然后他问了一些hr问题,比如每天至少有2、3家公司来你的大学,你为什么选择我们公司?我告诉他,由于这是一家以产品为基础的公司,我对此非常感兴趣。他又问了一些问题,比如你未来的计划是什么,主要是问我为什么你的cgpa很少。它只有 7.5 :p 他问我关于我的家乡等问题。他问我为什么选择一家软件公司,因为我来自电子行业,我说我非常喜欢编码。他告诉我反馈是积极的,你被选中了:p
我对这个提议感到非常高兴。