Adobe 计算机科学家面试经历
第1轮:
1. 打印二叉树中给定节点的祖先。 [https://www.geeksforgeeks.org/print-ancestors-of-a-given-node-in-binary-tree/]
2. 找出两个链表的交集。 [https://www.geeksforgeeks.org/write-a-function-to-get-the-intersection-point-of-two-linked-lists/]
3. 关于工厂设计模式的问题。
4. C++ 中的智能指针。 [https://www.geeksforgeeks.org/smart-pointers-cpp/]
5. 考虑一个在 10 个不同位置具有 return 语句的函数。假设这个函数修改了一些全局变量来实现它的功能。现在每次从这个函数返回之前,你都需要重置全局变量。你会如何以更好的方式做到这一点? 【代码重复少】
第二轮:
1. 二维数组的可视化。二维数组的动态分配和解除分配。
2. 无递归的预序遍历。 [https://www.geeksforgeeks.org/iterative-preorder-traversal/]
3. 反转链表。 [https://www.geeksforgeeks.org/reverse-a-linked-list/]
4. C++中的virtual和override关键字。
第三轮:(招聘经理轮)
1. 考虑一个两个用户可以聊天的聊天框。设计一个线程安全的聊天框,以便一次只有一个用户可以向聊天框添加评论。要求使用互斥锁、条件变量等在 C++ 中实现低级设计。
2. 我在 Photoshop 团队面试时,关于 LRU 缓存、图像缩放和图像翻译概念的一些一般问题。
第四轮:(导演轮)
1、公司现有项目讨论。
2、目前公司最大的成就。
3. 你为什么离开你现在的组织?
4. 你如何跟上新技术/概念?
5. 多线程问题,Singleton、Observer等设计模式。