📜  Synopsys 面试体验 | 4年经验

📅  最后修改于: 2021-11-18 01:42:04             🧑  作者: Mango

与招聘经理的筛选回合(1 小时 30 分钟):

  1. 询问当前公司项目和编码语言。我工作过的。 C++ 经验是非常小鬼。为他们。
  2. 您如何评价自己的 C++ 初学者/中级/优秀?我说中级
  3. Diff b/w malloc 和 new 导致对构造函数的讨论。为复制构造函数编写语法。为什么复制构造函数的参数作为 ref 传递?
  4. https://www.geeksforgeeks.org/merge-3-sorted-arrays/。第一个讲述一次使用 2 个数组的合并方法。但这需要更多的额外空间。因此,面试官要求将空间复杂度降低到 O(1)。然后,告诉方法使用大小为 3 的额外数组。需要工作代码。
  5. https://www.geeksforgeeks.org/puzzle-9-find-the-fastest-3-horses/
  6. https://www.geeksforgeeks.org/count-set-bits-in-an-integer/
  7. https://www.geeksforgeeks.org/detect-loop-in-a-linked-list/
  8. https://www.geeksforgeeks.org/puzzle-set-35-2-eggs-and-100-floors/
  9. https://www.geeksforgeeks.org/maximum-sum-path-across-two-arrays/

我讲述了使用树/图的方法,然后检查每种可能性,但无法编写代码。面试官告诉我正确的方法,然后结束了面试。

技术回合(1小时):

  1. 询问公司目前的项目。
  2. 问我是否研究过 C++11 特性,如移动构造函数、智能指针等。我说我没有工作,但我对它们有一些了解
  3. 使用 malloc 和 new 的差异黑白内存管理
  4. 给定 2 个包含一位数数据的链表,它们的长度相同。关于差异的讨论。添加2个链表的方法
    L1 : 3  ->  5  ->  7
    L2 : 4  ->  4  ->  5
    L3 : 8   -> 0  ->  2
    add (L1, L2)
    • 我告诉了反转链表然后执行加法的方法,然后他添加了不能修改链表的约束
    • 我告诉了使用递归的方法,因为堆栈调用的空间复杂度为 O(n),他要求在 const 空间中进行
    • 他给出了一个提示,如果 2 位数字之和 <=8 那么它就不会向后传播进位。所以,维护 2 个 prev 指针,指向节点,使得它们的 sum<=8 和 2 个 curr 指针,如果 curr 指针 sum >=10,那么从 prev 到 curr,我们需要传播进位。他要求只遍历输入列表节点一次
    • 方法是我们需要维护最新的sum节点的ptr,sum<=8,一旦sum>=10,这意味着从prev到curr节点,所有sum节点都为零。

    https://www.geeksforgeeks.org/add-the-given-digit-to-a-number-stored-in-a-linked-list/ -> 这个问题的扩展

技术回合(2小时):

  1. 询问公司目前的项目。
  2. 什么是虚函数及其内部实现?
  3. 基于输出的问题
    C++
    class A{
      
    int a;
      
    public:
      
    void show(){
      
     cout<<"show";
      
    }
      
    void show1(){
      
     cout<<"show1:"<show();   //will program crash-?
      
    a->show1();  //will program crash-?
      
    return 0;
      
    }


    他也问了原因。

  4. 要求在 C++ 中实现 BST(insert, print)。我用funcs实现。然后他要求使用 C++ 的封装和抽象特性来实现它。我在 Tree 类之外保留了 Node 结构。他要求把它放在 Tree 类中,并询问内部类。然后他要求让它通用,我做到了。此外,他要求为树节点定义自己的 DS(具有 2 个整数),为此需要在代码中进行许多修改。添加运算符重载代码用于比较黑白 MyDS 对象。但打印函数也需要修正。对于那个朋友函数是必需的。他让我向谷歌寻求帮助。
  5. https://www.geeksforgeeks.org/puzzle-21-3-ants-and-triangle //在我的例子中不是三角形而是正方形
  6. http://www.crazyforcode.com/3-mislabeled-jars/
  7. 询问 Tree 问题,讨论了为什么我们从友元函数返回 ostream 。
  8. 然后是行为问题,为什么要转换。我还谈到了 Synopsys。

导演回合(30 分钟):关于工作和工作文化的一般性讨论