Synopsys 面试经验(针对研发工程师,Sr I)
我在 Synopsys Bangalore 接受了研发工程师的面试,我发帖。有两轮电话面试,然后是六轮面对面技术面试和一轮人力资源讨论。
电话第一轮:他们问了我以下问题。
- 关于当前工作的讨论。
- 遍历二维数组的有效方法(列与行遍历)。
- 运行时多态性(虚函数)
- 复制构造函数和赋值运算符。
- 钻石问题以及如何克服它。
- 检测链接列表中的循环。
- 从排序的链接列表构造平衡二叉树。
- 从整数流中执行 getMax() 操作。 getMax() 从流中返回最大值,下次此函数将返回其余元素中的最大值。
电话第二轮:
两堆游戏(https://coderinme.com/game-two-stacks-hackerrank-problem-solution/)
F2F 第 1 轮:他们问了我以下问题。
- 来自链表的问题。
- 创建单链表到双链表。
- 创建单链表到双链表,其中第 i 个节点的 prev 指针将指向第 (i-step) 个节点,该步骤将在运行时给出。对于所有 i < step,prev 将为 null。
- 在有向图中找到一个循环。
- 基于问题的树遍历
F2F 第 2 轮:
- 给定总和和计数。您可以使用 1-9 中唯一的整数(可以使用多次)来计算总和。限制是元素的数量应该等于 Count。找出所有可能的组合。
例子:Sum = 10 and Count = 2 Result is (1, 9), (2, 8), (3, 7), (4, 6) and (5, 5) 1 + 9 = 10 2 + 8 = 10 3 + 7 = 10 4 + 6 = 10 5 + 5 = 10
- 要求我为只有一个整数成员变量的类编写 +运算符重载代码。该类有一个参数化的构造函数。我提出了两种方法
- 方法一:
A operator + (A const &src) {
return (src.val + val);
}
Explained how does it work. - 方法二:
A operator + (A const &src) {
A res;
res.val = real + src.val;
return res;
}
我添加了复制构造函数以供将来增强该类。他将其删除并询问该代码是否有效。然后详细讨论复制构造函数。
- 方法一:
F2F 第 3 轮:
- 有多少种不同的方式可以排列单词“CORPORATION”的字母,以使元音始终聚集在一起?
- C风格数组和Vector的区别
F2F 第 4 轮:
- 关于内存管理器的讨论。内存管理器如何帮助分配内存?
- 检查两个字符串是否为字谜的 C 程序的代码分析。
- 使用 malloc 分配内存直到 malloc 返回 NULL 的代码的代码分析。
- 为什么要离开当前的组织?
F2F 第 5 轮:
- 详细讨论虚函数工作原理。如果虚函数有任何默认值参数会发生什么?
class A{ A(){} virtual void foo(int var = 10) { std::cout<< var; } }; class B: public A{ B(){} void foo(int var = 7) { std::cout<< var; } }; int main(){ A *ptr = new B(); ptr->foo(); delete ptr; return 0; }
- 为地理地图的所有国家或州着色,其中没有两个相邻的国家/州不能分配相同的颜色。
F2F 第 6 轮:
- 为什么选择新思科技?
- 关于当前工作和我当前角色的讨论。
- 有一个音频播放器,它从播放列表中随机选择一首歌曲并播放。在所有歌曲至少播放一次之前,不应重复该歌曲。歌曲的序列号以数组形式给出。在不使用任何额外空间的情况下设计这样的音频播放器。
https://practice.geeksforgeeks.org/problems/picks-up-a-random-song-from-the-playlist-and-plays-it - 使用 2×1 MUX 创建 32×1 MUX。
- 关于使用 malloc 分配内存的讨论。
- 如果你觉得你的朋友得到了你经理的青睐,你会怎么做?