📜  Cadence 面试经历 |软件开发人员 C++

📅  最后修改于: 2021-09-23 05:41:43             🧑  作者: Mango

嗨,我最近接受了 Cadence Design Systems(地点:班加罗尔)的软件开发人员职位的面试并被选中。我有 2.5 年的 C++ 经验。以下是面试题——

一轮电话面试,然后是 3 轮 F2F 面试。

第 1 轮(电话轮):

    1. 将偶数放在偶数索引处,将奇数放在奇数索引处,因为奇数的数目可能等于也可能不等于偶数的数目。额外的奇数/偶数应该放在数组的末尾。
      例子
      Input : arr[] = {3, 6, 12, 1, 5, 8}
      Output : 6 3 12 1 8 5 
      
      Input : arr[] = {10, 9, 7, 18, 12, 19, 4, 20, 6, 14}
      Output : 10 9 18 7 20 19 4 12 14 6 
      

      对于相等数量的奇数和偶数 – even-numbers-even-index-odd-numbers-odd-index

    2. 求一棵树的高度
    3. 和-最小-最大-元素-子数组-大小-k
    4. 你知道哪些排序算法?实现任何排序算法。

第二轮:

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

    1. 地图【STL 库】是如何工作的?其实现的时间复杂度是多少? – C++ 中的映射
    2. 上面的问题导致了红黑树——它的工作和属性。
    3. 什么是 const成员函数? –const 成员函数-c
    4. 什么是多态?如何在 C++ 中实现?
    5. 深入讨论虚函数vtable 和带代码的虚析构函数。父对象和子对象的内存分配如何发生。 – 虚拟函数-C++
    6. 为什么需要虚拟析构函数? – 虚拟析构函数
    7. C++ 中的函子

第 3 轮:

    1. 未排序数组中第 k 个最大的元素
    2. 讨论第一个问题并引出快速排序算法的实现。
    3. 堆排序是如何工作的?为给定数组实现堆排序。

第 4 轮:

    1. 合并 k 排序数组集 2 不同大小的数组
    2. 对当前工作和项目的长时间讨论。

最后HR回合在下周完成。收到报价。