📜  SDE实习的Zeotap面试经验(6个月)

📅  最后修改于: 2021-11-18 01:37:33             🧑  作者: Mango

我是通过LinkedIn申请实习的。招聘程序包括3轮。

第 1 轮(HackerRank 的在线评估):这是一个 2.5 小时的测试,包含大约 20 个问题。有 2 个非常基础的编程问题,很少有基本到中等范围的 SQL 查询,很少有基于计算机科学基础学科的 MCQ——OOP、OS、DSA、CN 和 DBMS。

第 2 轮(DSA 虚拟面试):面试官从基本的 DSA 问题开始。他让我写如下问题的伪代码,比如

  1. 在 O(n) 时间内反转链表。
  2. 在线性时间内反转堆栈但使用恒定空间。 (面试官提供的提示:尝试使用链表)
  3. 给定一个数组和一个整数 K,找出每个大小为 k 的连续子数组的最大值。

我正确地解决了第一和第三个问题。我尝试使用递归来解决第二个问题,但我无法在恒定空间中解决它。他给了我一个额外的问题,如果我解决了它,它将取代第二个问题。问题是:

  1. 河内塔问题

我解决了这个问题。他对整个会议很满意,并告诉我为下一轮做准备。

第三轮(解决问题的虚拟面试):面试官首先问了我一些关于我的项目的问题。之后,他让我在满足两个条件的二叉树中找到给定元素:

  1. 每个子树的根是子树的最小元素。
  2. 左子树中的所有元素都小于右子树中的元素。
  3. 他让我把它优化到 O(log n) 的时间复杂度。我能够将其优化为 O(log n) 复杂度。
  4. 然后他让我编写一个我使用优先队列解决的问题。
  5. 然后他问我优先队列是怎么实现的?我告诉他使用堆数据结构可以最好地实现它。

在此之后,他问了我各种与堆与二叉树的时间和空间复杂度有关的问题,以及何时选择哪种数据结构——堆或二叉树——以及为什么?

然后他问了我各种程序设计使用面向对象编程的问题,比如设计堆数据结构。

之后,他让我为后端服务设计一个程序(使用 OOP 概念)。
PS:我的一个项目包括后端开发。

(没有一个设计问题有一个具体的答案。我只是模糊地被要求设计完成功能可能需要的基本功能。)

我尽我所能设计了所有程序,但不幸的是,我没有被选中参加实习。