📜  Cadence 面试体验软件开发人员(校外)

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

嗨,我最近接受了 Cadence 设计系统(地点:诺伊达)的软件开发人员 C++ 职位(校外 0 -1 年经验)的面试并被选中。我是最后一年 (ECE) 的学生。这是我的 Cadence 面试经历。

第 1 轮(技术轮):

  1. 问题陈述:假设我们在 COWIN 注册中有 100 万个使用电话号码的条目(所有电话号码数据不需要排序),我们必须搜索具有最低电话号码的个人详细信息(例如 9999999999 > 9999999998)并继续注册人,我们怎么做?

    方法 1:如果数据(所有电话号码)都存储在其中,那么我们可以简单地应用二分搜索,它的复杂度为 0(log N)。但根据问题陈述数据未排序。

    方法2:我们可以保留一个优先级队列(最小堆),它可以以排序数据的形式跟踪每个条目,我们可以在树的根部找到电话号码最低的人的详细信息。

    采访者:能否请您用堆绘制特定数据的图表进行可视化?

    9999999910、9999999997、9999999917、9999999915、9999999912、9999999996。

    语法: priority_queue,greater>p;

    p.top()     9999999996 (smaller element at root)
                                                                      9999999996(root)
                               9999999997(left child)                                            9999999912(right child)
      9999999910(left)                            9999999915(right)               9999999917(left)

    面试官说稍微解释一下如何插入特定数据以及我们如何遍历,这是更优化的 DFS 或 BFS 以及散列的概念。

    你知道哪些排序算法?实现任何排序算法。

  2. 给定一个链表,交换每两个相邻节点并返回其头部。您必须在不修改列表节点中的值的情况下解决问题(即,只能更改节点本身)
    Input: head = [1,2,3,4]
    
    
    
    Output: [2,1,4,3]

第二轮(技术轮):

  1. 给定一个数组,为每个元素打印下一个更大的元素 (NGE )。元素 x 的下一个更大的元素是数组中 x 右侧的第一个更大的元素。不存在更大元素的元素,将下一个更大的元素视为 -1。
    Input : 11, 13, 21, 3
    Output :13, 21, -1,  -1
  2. 给定一个字符串strs 数组,将字谜组合在一起。您可以按任何顺序返回答案。

    字谜是通过重新排列不同单词或短语的字母而形成的单词或短语,通常只使用一次所有原始字母。

    Example 1:
    Input: strs = ["eat","tea","tan","ate","nat","bat"]
    Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

第 3 轮:这一轮完全基于 C++ 概念。

  1. 地图【STL 库】是如何工作的?其实现的时间复杂度是多少? – C++ 中的映射
  2. 上面的问题导致了红黑树——它的工作和属性。
  3. 什么是静态变量,全局变量?
  4. 什么是访问说明符?举例说明
  5. 什么是 const成员函数? –const 成员函数-c
  6. 对构造函数的深入讨论。

第 4 轮:

  1. 合并 k 排序数组,然后进一步修改问题,例如如何处理重复项。
  2. 询问了 Sql 查询的基础知识,操作系统(如进程与线程)。
  3. 对当前工作和项目的长时间讨论。

最后HR下周做完了,终于收到offer了。