它包括:
1.编码回合:在1:30小时内要回答3个问题,
- 系统会为你提供一个字符串, 该字符串最后可以附加一个数字。你需要查找排除该数字的字符串的长度是否等于该数字。例如:helloworld10, 因为helloworld由10个字母组成, 所以答案为True。字符串长度小于10, 000。 (你需要做的就是检查最后五个位置。)
- 这是一个带有位掩码问题的简单dp。为N个人选择N种东西, 给你一个NxN矩阵和每个元素的成本, 你需要找到一个具有最大总重量的组合, 以便每个人都能得到一件事。
- 这是一个二部图实现问题。只是要检查图是否为两方图, 它有一个复杂的问题陈述, 但问题最终分解为此问题。
2.调试回合:这是在Skype上在线发生的, 他们要求我们共享屏幕以消除作弊的机会。我们得到了一个代码, 并被告知要执行的操作, 并被要求在最短的时间内以最小的更改进行调试。我得到了一个简单的迭代堆排序。我将其更改为递归堆排序, 为此仅进行了2行更改。他向我询问了有关递归和信号传递的几个问题, 并让我记住了fibonacci, 以及有关系统堆栈和OS的一些问题。
3.面试第一轮–它发生在Skype上, 他问我有关我的项目的问题, 讨论了我的想法, 实施它们, 方法, 总之的方法。然后他质疑我可以使用的其他方法, 而不是我使用的方法。他给我一个问题, 说我们有" k"个数组, 每个数组都由数字和各个长度组成。我们需要找到最短的范围, 以使该范围从每个数组中至少包含一个数字。我提出了O(n.k.log(max(length)))解决方案。他对答案感到满意。
4.面试Round2 –它发生在Skype上, 他询问了我的项目和工作经验。他要求我为树问题创建一个递归函数, 然后要求我为" Google Maps"提出数据结构和实现。我提出了图的图的图, 用dijiktra查找最短的路径。后来他问我有关自平衡树, AVL和展开树的问题。
5.面试Round3 –它发生在Skype上, 他问我有关我的项目的信息。然后他请我考虑一种方法, 该方法为具有3个整数的结构的数组找到下界(将所有3个整数的下界在一起)。他要求我在O(1)时间中查询此值, 然后减去整数并将其重新插入结构中。后来, 他要求我为文本编辑器考虑一些具有最小内存和时间复杂性的数据结构。我提出了绳索数据结构的建议, 然后他让我想到了其他东西。因此, 我建议使用三叉树, 该树最后有一个矢量, 以跟踪该单词应到达的第一个位置。他对我的回答感到满意。
6.HR回合-这不是一个回合。她来到Skype时要求我检查我的邮件, 并且那里有一封录取通知书等着我!我所能做的就是变得无语并微笑smile