Adobe 面试经验(2 年经验)
我为 MTS profile 采访了 adobe。一共进行了4轮
第一轮:在线编码轮
包括能力、基于输出的问题和 2 个编码问题。一种是基于简单的哈希图,另一种是基于后缀树。
第 2 轮:F2F 面试
面试官问我项目。我告诉他我没有深入的 c++ 知识,因为我只在 android 上工作过,但他仍然问我问题。面试官非常乐于助人,而且很酷,但他对我的回答笑了很多,这极大地影响了我的士气。
1)
int a = 10;
void * b = &a;
printf("%d", *b);
回答:你不能在没有类型转换的情况下打印 void 指针。可悲的是我不知道。
2.函数在内存中存储在哪里?如何在运行时解析参数。
回答:阅读有关符号表的信息。
3. 结构和联合。他们之间的区别。它们是如何存储在内存中的。然后谈话转到小端/大端。
4.虚拟继承,多重继承中的菱形问题。
5. 如何在 C 中做类 final
https://www.geeksforgeeks.org/simulating-final-class-in-c/
6. 假设你有一个根目录结构,里面有子文件夹和文件。打印结构中的所有文件。
我给出了正常的递归 DFS 解决方案。他问我可能出现的问题。我告诉他如果文件结构太大,可能会发生 StackOverflow。他给了我提示,最大文件路径在 Windows 中是有限的。我从中得到了提示,并设计了使用单栈进行遍历的解决方案。
他进一步问我可以在这个结构的每个节点中存储一些数据。我将如何训练我的算法以根据过去的失败和成功做出明智的决定。我建议也许可以以某种方式使用文件夹下的文件和子文件夹的数量。他不满意。我什么都想不出来。在这之后他放弃了这个问题。
7.
void fun(int x)
void fun(int x, int y=10)
fun(5);
哪个函数会被调用?
https://www.geeksforgeeks.org/default-arguments-c/
8. 问我关于 vTables 和 vPtr 的问题。
第三轮(管理轮):
介绍,他问我项目。
1-解释进程间通信
https://www.geeksforgeeks.org/inter-process-communication/
2-解释如何在线程中实现同步。
读取互斥量和信号量。我也用底层实现解释了一切。他印象深刻。
3-生成树的镜像。
https://www.geeksforgeeks.org/write-an-efficient-c-function-to-convert-a-tree-into-its-mirror-tree/
4- 实现字典
我使用 Trie 数据结构来实现它。我准备好了三元搜索树,但他没有进一步询问。
5-解释客户端的进程如何与服务器的进程交互。
我以我在大学实施的 Web 项目为例,向他解释了 REST API 如何与 GET/POST 方法一起使用来发送数据以及如何在服务器端接收和处理数据。
面试官非常友好,他一直在激励我。一旦我开始解释,他就一直在听,没有交叉问题。这让我信心大增。
第4轮(DS轮):
再次面试官非常友好。
1-解释贪婪和动态编程算法范式之间的区别。
我用两种算法的一种算法向他解释了范式。 DP 的 Fibonacci 和 Greedy 的 Splitwise 算法。
2-将树转换为双向链表。
我说我有各种解决方案,他回答说,“从最低的一个开始。你知道演习:p”。我们讨论了 2-3 个解决方案。在其中一个解决方案中,我使用了一个静态变量。
3-静态变量存储在哪里。程序中有什么生命周期。
4- 最大递增子序列。并用动态规划解释它。
https://www.geeksforgeeks.org/longest-increasing-subsequence-dp-3/
他没有进一步询问 nlogn 解决方案。但对于不了解 nlogn 解决方案的人。
https://www.geeksforgeeks.org/longest-monotonically-increasing-subsequence-size-n-log-n/
他在这个问题之后完成了,至少可以说这是很棒的一轮。
第五轮(导演轮):
我很紧张,他看到了。他让我放松一下,给我倒了一杯咖啡。他坚持让我拥有它。他问我大学时光,不是学习部分,而是乳腺部分。
然后他根据我的简历问我为什么要切换和其他问题。他问了我一个基于设计的问题。
假设我们正在旅行并且我们点击了很多照片。现在照片根据不同文件夹中的日期进行分类。如果我希望根据事件对它们进行分类怎么办。
我建议我们可以根据社交媒体数据、位置、背景图像处理等使用各种参数。然后他修改了问题并说我只会提供时间戳。我建议我们可以根据两张照片之间的频率(差距)进行分类。他让我从算法的角度思考这个问题并提出解决方案。他说如果我回答正确,他不会再问更多问题,并离开办公室,因为他与某人进行了一次小型会议。这一举动给我带来了巨大的压力,也许他只是在检查这一点。 5分钟后他回来了。我准备好了解决方案。我告诉他,根据时间戳,我将为每张照片分配一个 ID,这将在本质上严格增加,后续照片的 ID 之间的差距将基于它们的时间戳之间的差距,我还将提供一个滑块,这将有助于用户对照片进行分组,如果它在最左边,那么每张照片将被放置在不同的组中,如果它在最左边,则将包括所有照片。他似乎很满意。他进一步问我滑块的默认值是多少,关于这件事我们进行了长时间的讨论。我们讨论了利弊。他很满意,告诉我他已经完成了。
2天后接到HR的电话。
尖端:
1) Adobe 不想特别听到 GFG 的回答。他们肯定会询问您内部细节或替代解决方案来评估您的想法。做好准备。
2) 深入阅读操作系统和基本的 C++。
3)面试官非常友好,他们会通过给你提示来推动你解决问题。不要放弃并继续思考。还要不断分享你的想法,这非常重要。
感谢 geeksforgeeks 提供了很棒的平台。