📜  Synopsys研发高级工程师面试经历1

📅  最后修改于: 2021-11-22 12:56:52             🧑  作者: Mango

最近我经历了四轮Synopsys对研发高级工程师的面试1

第1轮:

基于输出的问题:

  1. C++
    int j = 0;
      
    for(int i = n; i > 1; i = i/2) j++;
      
    int add(int &a, int &b)
      
    {
      
     int c = a + b;
      
     return c;
      
    }
      
    int main()
      
    {
      
     int int1, int2, sum;
      
     sum = add(int1, int2);
      
    }


    C++
    int a =10;
      
    int &r = a;
      
    int b = 25;
      
    r = b;
      
    r++;
      
    cout << r << endl << a << endl << b << endl;
      
    void printArray(int A[])
      
    {
      
     // write code here
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     printArray(Arr);
      
     return 0;
      
    }


    C++
    void ChangeArray(int A[], int n)
      
    {
      
     for(int i = 0; i < n; i++)
      
      A[i]++;
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     ChangeArray(Arr, 5);
      
     for(int i = 0; i < 5; i++)
      
         cout << Arr[i] << " ";
      
     return 0;
      
    }


    C++
    void func(int n)
      
    {
      
     cout << n;
      
     func(n-1);
      
    }
      
    int main()
      
    {
      
     func(3);
      
     return 0;
      
    }
      
    int func(int n)
      
    {
      
     static int x = 0;
      
     if(n<=0)
      
      return 0;
      
     x++;
      
     return func(n-1) + x;
      
    }
      
    main()
      
    {
      
     func(5);
      
    }


    C++
    void foo(int n, int sum)
      
    {
      
     if(n==0) return;
      
     int k = n%10;
      
     int j = n/10;
      
     sum = sum + k;
      
     foo(j, sum);
      
     cout << k << ", ";
      
    }
      
    int main()
      
    {
      
     int a = 2048, sum = 0;
      
     foo(a, sum);
      
     cout << sum << endl;
      
    }


    C++
    int j = 0;
      
    for(int i = n; i > 1; i = i/2) j++;
      
    int i = n; 8
      
    int j = 0;
      
    while(i > 1) {
      
    j++;
      
    i = i/2;
      
    }


    C++
    void printArray(int A[])
      
    {
      
     // write code here
      
     int len = sizeof(A)/sizeof(A[0]);
      
     for(int i = 0; i < len; i++) {
      
      printf("%d ", A[i]);
      
     }
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     printArray(Arr);
      
     return 0;
      
    }


    C++
    int func(int n)
      
    {
      
     static int x = 0;
      
     if(n<=0)
      
      return 0;
      
     x++;
      
     return func(n-1) + x;
      
    }
      
    main()
      
    {
      
     func(5);
      
    }


    C++
    void foo(int n, int sum)
      
    {
      
     if(n==0) return;
      
     int k = n%10;
      
     int j = n/10;
      
     sum = sum + k;
      
     foo(j, sum);
      
     cout << k << ", ";
      
    }
      
    int main()
      
    {
      
     int a = 2048, sum = 0;
      
     foo(a, sum);
      
     cout << sum << endl;
      
    }


  2. C++

    int a =10;
      
    int &r = a;
      
    int b = 25;
      
    r = b;
      
    r++;
      
    cout << r << endl << a << endl << b << endl;
      
    void printArray(int A[])
      
    {
      
     // write code here
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     printArray(Arr);
      
     return 0;
      
    }
    
  3. C++

    void ChangeArray(int A[], int n)
      
    {
      
     for(int i = 0; i < n; i++)
      
      A[i]++;
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     ChangeArray(Arr, 5);
      
     for(int i = 0; i < 5; i++)
      
         cout << Arr[i] << " ";
      
     return 0;
      
    }
    
  4. C++

    void func(int n)
      
    {
      
     cout << n;
      
     func(n-1);
      
    }
      
    int main()
      
    {
      
     func(3);
      
     return 0;
      
    }
      
    int func(int n)
      
    {
      
     static int x = 0;
      
     if(n<=0)
      
      return 0;
      
     x++;
      
     return func(n-1) + x;
      
    }
      
    main()
      
    {
      
     func(5);
      
    }
    
  5. C++

    void foo(int n, int sum)
      
    {
      
     if(n==0) return;
      
     int k = n%10;
      
     int j = n/10;
      
     sum = sum + k;
      
     foo(j, sum);
      
     cout << k << ", ";
      
    }
      
    int main()
      
    {
      
     int a = 2048, sum = 0;
      
     foo(a, sum);
      
     cout << sum << endl;
      
    }
    
  6. C++

    int j = 0;
      
    for(int i = n; i > 1; i = i/2) j++;
      
    int i = n; 8
      
    int j = 0;
      
    while(i > 1) {
      
    j++;
      
    i = i/2;
      
    }
    
  7. C++

    void printArray(int A[])
      
    {
      
     // write code here
      
     int len = sizeof(A)/sizeof(A[0]);
      
     for(int i = 0; i < len; i++) {
      
      printf("%d ", A[i]);
      
     }
      
    }
      
    int main()
      
    {
      
     int Arr[5] = {2, 4, 6, 8, 10};
      
     printArray(Arr);
      
     return 0;
      
    }
    
  8. C++

    int func(int n)
      
    {
      
     static int x = 0;
      
     if(n<=0)
      
      return 0;
      
     x++;
      
     return func(n-1) + x;
      
    }
      
    main()
      
    {
      
     func(5);
      
    }
    
  9. C++

    void foo(int n, int sum)
      
    {
      
     if(n==0) return;
      
     int k = n%10;
      
     int j = n/10;
      
     sum = sum + k;
      
     foo(j, sum);
      
     cout << k << ", ";
      
    }
      
    int main()
      
    {
      
     int a = 2048, sum = 0;
      
     foo(a, sum);
      
     cout << sum << endl;
      
    }
    
  10. 使用前序和中序遍历构建二叉搜索树
  11. C++中的虚函数问题

第二轮:

  1. 使用栈设计队列
  2. 下一个较大的元素和上一个较小的元素
  3. 在 C++ 中声明二维数组
  4. 以下每个声明的含义
    const char* p; // pointer itself is constant
    char * const p; // value is consstant  
    const char * const p; // both are constants
  5. 设计自己的向量类以及向量和数组的区别。

第 3 轮:

  1. BST 中的第二大元素。
  2. 在有向和无向图中循环
  3. 与虚函数和构造函数相关的基本 C++ 问题。

第 4 轮:

  1. 查找系列中的下一个数字
    3, 5, 8, 13, 22
    3 * 2 = 6 - 1   5  
    5 * 2 = 10 - 2  8  
    8 * 2 = 16 - 3  13  
    13 * 2 = 26- 4  22
    22 * 2 = 44- 5  39
  2. 将字符串数字转换为整数,如 atoi 并确保覆盖正确的测试用例
  3. 为什么要寻求改变和其他一些行为问题。