我申请了为期两个月的 codenation 暑期实习。这是一次校内实习招聘。
它包括:
1. 编码回合:在 1:30 小时内完成 3 道题,
- 你得到一个字符串,(可能)最后附加一个数字。您需要查找不包括该数字的字符串长度是否等于该数字。例如: helloworld10 ,答案为 True 因为 helloworld 由 10 个字母组成。字符串长度小于 10,000。 (您需要做的就是检查最后 5 个位置。)
- 这是一个带有位掩码问题的简单 dp。为 N 个人选择 N 个东西,你得到一个 NxN 矩阵和每个元素的成本,你需要找到一个总权重最大的组合,这样每个人只能得到一件事。
- 这是一个双向图实现问题。只是为了检查图是否是双方图。它有一个复杂的问题陈述,但问题最终分解为这个。
2.调试回合:它发生在Skype网上,他们要求我们分享我们的屏幕以消除作弊的机会。我们得到了一个代码,我们被告知它的用途,我们被要求在最短的时间内以尽可能少的更改调试它。我得到了一个简单的迭代堆排序。我把它改成了递归堆排序,因为只做了两行改动,他问了我几个关于递归和迭代的问题,让我记住斐波那契,还有一些关于系统堆栈和操作系统的问题。
3.面试第一轮——发生在Skype上,他问我关于我的项目,讨论了方法,我考虑了它们,我实施了它们,我的方法,简而言之,一切。然后他质疑我可以使用的不同方法,而不是我使用的方法。他给了我一个问题,说我们有“k”个数组,每个数组由数字组成,每个数组都有不同的长度。我们需要找到最短的范围,使得该范围至少包含每个数组中的一个数字。我提出了一个 O(nklog(max(length))) 解决方案。他对这个答案很满意。
4.面试Round2——发生在Skype上,他问了我的项目和工作经验。他让我为树问题创建一个递归函数,然后让我为“谷歌地图”提出数据结构和实现。我提出了一个图形图,用 Dijkstra 来寻找最短路径。后来他问我关于自平衡树、AVL 和张开的树。
5.Interview Round3——发生在Skype上,他问了我的项目。然后他让我想出一种方法来为具有 3 个整数的结构数组找到下界(所有 3 个整数的下界)。他让我在 O(1) 时间内查询它,然后减去整数并将其重新插入结构中。后来,他让我为文本编辑器考虑一些内存和时间复杂度最小的数据结构。我建议使用绳索数据结构,然后他让我考虑其他的东西。所以我建议使用一个最后有一个向量的特里树来跟踪这个词应该出现的第一个位置。他对我的回答很满意。
6.HR 回合 – 这不是一个回合。她在 Skype 上让我检查我的邮件,那里有一封录取通知书在等着我🙂 !我所能做的就是变得无语和微笑🙂