📜  Adobe 面试体验(女性 Adobe)

📅  最后修改于: 2022-05-13 01:58:40.632000             🧑  作者: Mango

Adobe 面试体验(女性 Adobe)

我最近接受了Adob e 的MTS 1 (技术人员 1 成员)职位的采访。在我开始描述我的经历之前,我希望读者知道结果是积极的,我很快就会加入 Adobe。我自己参考了 GFG 的面试经验来准备面试,我一直觉得它们非常有用,并且很乐意做出贡献。

一个负责将优秀学生与领先的技术公司联系起来的第三方组织来到我们学院进行Adobe的初步招聘过程。这属于 Adobe 的“女性 Adobe”计划,因此只有女性程序员才有资格申请。已经被高薪包裹的顶级公司的学生直接被要求进行面试,而其他人则必须进行在线编码测试(2 小时,15 道能力 MCQ,2 道编码问题)。我是直接接受采访的人之一。

采访在 Adobe 的诺伊达办公室进行。有 3 轮 F2F 技术面试,然后是电话 HR 轮。每一轮都是淘汰赛,主要测试我们的数据结构和算法,还有一些关于操作系统的问题。在每一轮中,我们都被标记在我们的逻辑、编码、DS 和 OS上,所有参数都具有相同的权重。我在面试的第 1 天(可能是 20 天)被叫来,来自不同大学的 54 位其他女孩也被叫来了。在这一天结束时,我们中只有 2 人得到了报价。

第 1 轮(技术-F2F):这是最长且最具挑战性的一轮(可能是为了在第一轮中过滤掉最多的候选人)。我的第一个技术回合持续了大约 80-90 分钟。它以简短的介绍开始,然后是以下问题:

  1. https://www.geeksforgeeks.org/find-maximum-possible-stolen-value-houses/ (也必须编写伪代码)
  2. https://practice.geeksforgeeks.org/problems/next-larger-element-1587115620/1(类似的问题以不同的方式表达:每天给出每日温度,返回下一次上升的天数看到温度。被要求对整个解决方案进行编码。)
  3. https://www.geeksforgeeks.org/external-sorting/ (要排序的大文件,内存太少。建议用有限的内存对整个文件进行排序。只要求口头解决方案。没有要求编码.)
  4. https://practice.geeksforgeeks.org/problems/burning-tree/1 (同样的问题,只需要给出整个树燃烧所需的时间,如果每条边缘需要 1 秒才能使火蔓延。Wasn没有要求编码,只有口头解决方案。)
  5. 鉴于电话目录(联系人按字母顺序排序)太大而无法放入 RAM,建议使用优化的搜索算法快速检索联系人。我给出的解决方案:将电话目录分成大小 = RAM 大小的块。将每个块一个一个地加载到 RAM 中,检查每个块中的最后一个条目,并将条目的第一个字母与正在搜索的联系人的第一个字母进行比较。如果条目字母<联系人字母,则在下一个块中搜索。继续直到输入字母>=联系字母。达到此条件后,在此块中应用二进制搜索以查找联系人。处理最后一个条目=联系人、未找到联系人等极端情况。
  6. ^相同的问题更改为正在搜索的多个联系人。我建议我们维护一个包含 26 个索引的数组。每个数组索引将使用上面建议的解决方案存储该特定字母的起始地址。例如。 array[0] 将存储字母 A 的起始地址在目录中,array[1] 用于 B 等等。这样,给定要搜索的联系人和 RAM 的大小,您可以查找数组并知道您将在其中找到联系人的块号。同样的解决方案可以进一步优化,采用一个二维数组(26*26矩阵)来存储AA、AB、AC等的起始地址。同样,如果需要进一步减少搜索时间(以空间为代价),也可以采用 3D 数组来存储前三个字母。
  7. 来自 OS 和 OOP 的问题:什么是虚函数?什么是纯虚函数?区分内部碎片和外部碎片。

我被困在几个地方,但在面试官的提示下能够轻松恢复。超过 75% 的候选人在第一轮后被送回。等待了不到 10 分钟后,我被告知我将进行第二轮。

第 2 轮(技术-F2F):。这是最短、最简单、最直接的一轮。正好有 3 个编码问题,我被要求在给出解决方案并尽可能优化后为每个问题编写代码。问题如下:

  1. https://www.google.com/amp/s/www.geeksforgeeks.org/connect-nodes-at-same-level/amp/ (在不平衡的二叉树中分配右兄弟指针。)
  2. https://practice.geeksforgeeks.org/problems/combination-sum-1587115620/1(被进一步要求修改上述解决方案以仅考虑组合中的不同元素。)
  3. 给定一个只有 push 和 pop 函数的标准堆栈类,实现一个带有 push、pop 和 peek 函数的 MyStack 类。 MyStack 类的每个函数最多可以使用原始 Stack 类中的一个函数。我建议的解决方案是在 MyStack 类中再添加 2 个私有变量:top 和 isValid。对于 peek(),首先检查 isValid()==true。如果是,则返回 top(如果有两个连续的 peek 则需要);如果没有,则从堆栈中弹出,将其存储在顶部。将 isValid 设置为 true,然后返回顶部。对于pop(),首先检查isValid()==true。如果是,则表示该元素已被较早地弹出。所以设置isValid=false(因为顶部元素必须被弹出,所以不再是堆栈的一部分)并返回顶部。如果没有,请从 Stack 调用 pop()。对于 push(x),检查 isValid==true。如果是,则先 push(top),然后 push(x),然后设置 isValid=false。否则,只需从 Stack 类中调用 push(x)。

这次采访持续了30分钟。我没有被困在这一轮中,也不需要任何提示,这可能就是为什么没有更多问题被问到,我马上被要求参加第三轮技术。从第 1 天开始,只有 5 名候选人有资格参加最后一轮技术比赛。

第 3 轮(技术-F2F):这一轮持续 40-50 分钟,有来自各种不同主题的问题。这次面试是由 Adobe 的一位管理级别的高级员工进行的,所以他的知识非常好。首先,有人问我关于我在简历中提到的项目。结果发现我的面试官和我的项目在同一个领域工作,所以他似乎对我所做的工作很感兴趣。我也被问到很多关于相同的技术细节。在这 10 分钟的讨论结束时,他似乎对我的回答印象深刻,并建议我发表一篇关于我工作的论文。这是面试的良好开端。接下来是一些关于 DS、DP、Bit 操作和 OS 的问题:

  1. https://practice.geeksforgeeks.org/problems/count-all-possible-paths-from-top-left-to-bottom-right3011/1(被要求提供伪代码)
  2. ^同一问题的多个变体,例如。 i*j=奇数的所有单元格都被封锁,现在找到路线。
  3. https://stackoverflow.com/questions/33684970/print-2-d-array-in-itarian-expanding-spiral-from-center (仅逆时针,而不是顺时针。此外,给定的矩阵可以是矩形的,所以也必须处理最后留下行/列的情况。这些也必须按顺序打印。被要求正确编码整个解决方案。)
  4. https://practice.geeksforgeeks.org/problems/x-xor-a-is-minimum-and-set-bits-in-xb/0/
  5. ^这个的变体。给定 A 和 B,返回 X 使得 X 具有与 B 相同数量的设置位,并且仅高于 A,即与 B 中设置位相同的下一个更高的数字。)
  6. 解释操作系统中的双模式。解释每种模式的意义。

由于时间已晚,我们被要求回家,并被告知我们将被告知后续回合(如果有的话)。第二天,我(和另外一位候选人)接到了 HR 的电话,告诉我我已经通过了所有的技术轮次。

据我所知,这个电话应该是我的HR 轮(第 4 轮) ,这不是淘汰赛。但是,HR 确实说它不能保证我的选择,因为他们也必须为我找到合适的团队。这个电话持续了 40 分钟,与其说是面试,不如说是关于我的个性和偏好的讨论。给了我各种不同的场景,并被问到我会如何反应以及在这种情况下我会做什么。我还被问到我是否是一个冒险者,我是否更倾向于研究而不是软件开发。他们也很想知道我为什么愿意放弃对 Adobe 的其他报价。

面试后大约 10 天(漫长而焦急的等待),我收到了 HR 发来的电子邮件,确认我的选择(另一位候选人也被选中)。 2 个月后,我将加入 Adobe,担任 Document Cloud 团队的 MTS1(具体来说是产品开发)职位。

希望这可以帮助! 🙂