📜  新思科技 R&D-2 工程师面试经验 | 4年经验

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

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

  1. 询问我目前的工作细节。
  2. 基于输出的问题:
    C
    int main(){
      
    int i=5;
      
    int j=6;
      
    int k=(i+j)++;  //what will be value of i,j and k  ?
      
    }


    C
    Void f1 (int x, int y ) {   x = y;   }
      
    void f2 (int  *x, int *y ) { *x = *y;  }
      
    void f3 (int  *x, int *y ) { x = y;  }
      
    void f4 (int  *x, int *y ) {  int z = 20; *x = &z ;   }
      
    void main (void )
      
    {
      
    Int a = 5 ;            Int b = 10 ;
      
    f1(a,b);   //print a, b           
      
    a= 5, b =10 ;        
      
    f2(&a,&b);   //print a, b           
      
    a= 5, b =10 ;
      
    f3(&a,&b);    //print a, b           
      
    a= 5, b =10 ;
      
    f4(&a,&b);      //print a, b  
      
    }


    C
    Void function (int* a) {
      
    If (a == NULL) {
      
      a = new int(4);}
      
    }
      
    Int main() {
      
      Int *a = NULL;
      
     Function(a);
      
    Printf(“%d”,*a);   -> what it will print?
      
    }


  3. 动态铸造如何工作?
  4. 为 AND 和 OR 门写真值表。使用算术运算运算符(+、-、*、/),推导出 AND 和 OR 门的功能

    Sol:使用乘法的与门,使用+、*、-的或门

  5. 给定一个 4 位数字。使用相同的数字找到下一个更接近的数字。

    我告诉了寻找下一个更大数字的方法。 https://www.geeksforgeeks.org/find-next-greater-number-set-digits/

    他要求找到下一个比原始数字更大或更小的更接近的数字。我告诉方法找到更大的和以前的数字,并以最小的差异取数字。

    然后他让我在一次遍历中完成。我告诉比较 adj。数字从右边开始,当数字不匹配时,交换它们,但它失败了以下 tc:9891->9819,但 9918 更接近 9891

    我告诉从右侧对所有相邻对执行交换,按升序和降序对剩余数字进行排序,并跟踪更接近原始数字的数字。

    我会感谢读者提出正确的方法来解决这个问题。

  6. 10 个硬币放在桌子上。 4表示尾部,6表示头部。

    现在掷 7 个硬币。翻转后,9个硬币状态已知,4个反面,5个正面,找到第10个硬币的状态。

    我给出了数学证明,最后一枚硬币是尾巴。

    然后他要求做它而不做等式。而抛 7 个硬币的意思是,1 个硬币也可以抛 7 次。

    由于翻转是奇数次和 4 个尾巴,所以在翻转前后出现 5 个头,当然,至少 1 个硬币已经改变了它的状态 => 1 个头已经变成了 1 个尾

技术回合(1 小时 30 分钟):

  1. 询问我当前的项目以及与此相关的一些交叉问题
  2. 问为什么需要BST。检查 BST 创建逻辑。

    编写一个函数,如果右节点的总和与左节点的总和之间的差等于 parent_node,则该函数将在 BST 中打印一个节点。

    问这个程序会不会崩溃?这之外的因素会导致崩溃吗?

    如果这个树非常大或者无限递归,会导致栈溢出并会导致崩溃。

    还询问了内存损坏。

  3. 询问是否有任务分配给我,我不清楚。我将如何完成该任务?
  4. 你在平面上有 n 个点,你必须用最少的电线连接所有这些点,这样当电流施加在任何节点上时,它会到达所有节点。如果 a,b 和 b,c 连接。我们可以假设 a,c 也是连通的。

    用最小生成树方法解决。

  5. 基于输出的问题:

    C

    Void f1 (int x, int y ) {   x = y;   }
      
    void f2 (int  *x, int *y ) { *x = *y;  }
      
    void f3 (int  *x, int *y ) { x = y;  }
      
    void f4 (int  *x, int *y ) {  int z = 20; *x = &z ;   }
      
    void main (void )
      
    {
      
    Int a = 5 ;            Int b = 10 ;
      
    f1(a,b);   //print a, b           
      
    a= 5, b =10 ;        
      
    f2(&a,&b);   //print a, b           
      
    a= 5, b =10 ;
      
    f3(&a,&b);    //print a, b           
      
    a= 5, b =10 ;
      
    f4(&a,&b);      //print a, b  
      
    }
    
  6. 问我为什么要转?
  7. 平面上两点可以画多少个圆?无限多和3分?只有一个,但如果点位于同一条线上,则无法绘制圆。

技术回合(1小时):

  1. 设计 API 以将缓冲区的内容从一个位置移动到另一个位置,进行了大量讨论以使程序在所有情况下都能正常工作,例如函数参数、使用 unsigned int。
  2. https://www.geeksforgeeks.org/print-all-combinations-of-balanced-parentheses/
  3. https://www.geeksforgeeks.org/median-of-two-sorted-arrays-of-different-sizes/

    告诉 O(n+m) 方法

技术回合(2小时):

  1. 询问公司目前的项目。
  2. 你知道大端和小端吗?编写 prog 来检查机器的字节序。

    https://www.geeksforgeeks.org/little-and-big-endian-mystery/

  3. 打印从开始到 150 的所有质数。 https://www.geeksforgeeks.org/sieve-of-eratosthenes/
  4. 编写单例类。我们可以继承吗?为此编写代码。

    我们可以使 Singleton 类构造函数受保护以使其在派生类中可访问

  5. 基于输出的程序

    C

    Void function (int* a) {
      
    If (a == NULL) {
      
      a = new int(4);}
      
    }
      
    Int main() {
      
      Int *a = NULL;
      
     Function(a);
      
    Printf(“%d”,*a);   -> what it will print?
      
    }
    
  6. arr-> 1 4 5 7 8 10 15. 使其成为高度平衡的树。

    我们需要为此创建中间元素根。

  7. 编写一个不使用分号打印 -4 到 -10 的程序
  8. 程序在 42 层塔中每 5 层停止电梯。例如:5,10,,,,40,35,30, 5, 0, 5,
  9. 查找 bst 中作为叶节点的父节点的节点数。此外,查找节点的所有父节点的计数
  10. 编写您自己的列表类迭代器。
  11. 使用递归打印二叉树的左视图。
  12. 模板专业化。 https://www.geeksforgeeks.org/template-specialization-c/
  13. 81 枚硬币,其中 1 枚较轻/较重,使用最小称重找出奇数一枚。
  14. https://www.geeksforgeeks.org/given-an-array-a-and-a-number-x-check-for-pair-in-a-with-sum-as-x/
  15. 差异黑白功能。重载和覆盖。编译器/链接器如何知道在 func 中调用哪个 func。超载情况。

    名称重整概念

  16. 设计一个图书馆系统(不使用数据库)(将有书名和作者姓名)

    a.在系统中增加一本书的条目

    b.删除系统中的书籍条目

    c.获取以“Abc”开头的书籍列表。如果 System 有像“Abcd”、“Abc of C code”、“Let us C”、“ABC of c++”这样的书——它应该显示

    1.“ABCD”
    2.“C代码的ABC”
    3.《C++的基础知识》

    d. 获取特定作者的所有书籍

  17. 讨论特里树和链表方法