第一轮细节(编码测试):在自己的平台上进行编码轮次。它由4个部分组成。
- 7 个调试问题(C++/ Java)。
- 2 编码问题。
- 在按行和按列排序的矩阵中搜索给定数字。
- 检查给定树是否是另一棵二叉树的子树。
- 基于领导原则的心理测试。
- 能力和逻辑推理。
第二轮详细信息(F2F 技术第一轮):自我介绍并直接开始编码。问了以下两个问题。
- 给定一棵二叉树,编写一个函数来检查这棵树是它自己的镜像还是对称的。这是使用时间复杂度为 O(n) 和空间复杂度为 O(1) 的递归完成的。我们讨论了这个方法,面试官很满意。我被要求对其进行完整编码,涵盖所有边缘情况并且没有错误。
- 给定一串由 1 和 0 组成的字符串,我们可以将 1 翻转为 0,将 0 翻转为 1。找出使字符串单调增加所需的最小翻转次数(左侧全部为 0,右侧全部为 1)。这是一个动态规划问题。我在旅途中没有得到正确的方法,但是面试官给了我一个提示,我能够对其进行编码。他想要我最终得到的最优化的解决方案。
注意:上面的链接有点类似,解决方案的空间复杂度可以进一步优化。
第 3 轮详细信息(F2F 技术第 2 轮):再次介绍自己并直接开始编码。问了以下两个问题。
- 给定一个按行和按列排序的矩阵,返回第 k 个最高的数字。我使用最大堆解决了这个问题。面试官很满意,让我从头开始编码(包括一个堆的类)。我认为它可以进一步优化。
- 给定一个组织的员工,每个员工可以邮寄另外两个员工,依此类推。 CEO是根本。计算 CEO 发送“m”封邮件到达所有员工所需的时间。这是一个二叉树问题,可以通过找到树的高度来解决。
注意:上面的链接是第 k 个最小的元素。
这是最后一轮,没有 HR 问题、关于我的项目的问题或其他主题。
结论:选中!