亚马逊专访 |设置 103(校内)
首先,我要特别感谢 geeksforgeeks 的特别指导。以下是我的面试经历:
第一天:
第1轮 :
20 个 MCQ(数据结构、C、C++、操作系统、概率)。
2个程序:
1. 给定一个整数数组。在开始时隔离所有非零数字。打印这些操作所需的非零整数的数量和交换的最小数量。
Eg. : I/p : 1, 0, 0, -6, 2, 0
o/p : Number of non-zero integers : 3
Minimum number of swaps : 2
2. 给定一个文本 txt[0..n-1] 和一个模式 pat[0..m-1],编写一个函数search(char pat[], char txt[]) 打印所有出现的 pat[]及其在 txt[] 中的排列(或字谜)。你可以假设 n > m。
E.g. : I/p : txt[] = “BACDGABCDA” pat[] = “ABCD”
o/p : Found at index 0
Found at index 5
Found at index 6
第二天:
第二轮:PI
1. 项目讨论。
2. 代码:给定一个整数数组。求两个数之间的最小距离。
我在 O(N) 时间复杂度中做到了。
然后他改变了问题并询问如果数组已排序并包含重复项怎么办。
我在 O(logN) 时间复杂度中做到了。
3. 给定一个链表。将开头的所有正数和结尾的所有负数分开。
我在 O(N) 时间复杂度中做到了。
第三轮:PI
1. 项目讨论。
2. 代码:BST 的 LCA。
3.代码:二叉树的LCA。
4.关于堆和栈的讨论。
5. 代码:最大子数组和。
6. os的概念:什么是信号量? wait() 和 signal() 操作的简要说明。
第4轮:PI
1. oops 概念的讨论。问了我关于拷贝构造函数、虚函数、虚类的问题,
模板,特殊处理。
2. 操作系统概念的讨论。信号量,不同的页面替换算法。
3. LRU 使用栈实现(我不允许使用任何其他数据结构)。
我用两个堆栈做到了。
4. 这是对这个问题的修改。
我们的厨师最近开了一家风格独特的新餐厅。餐厅分为K个隔间(从1到K编号),每个隔间最多可容纳一名顾客。每个到访餐厅的顾客都有一个强烈偏好的隔间 p (1 ? p ? K),如果那个隔间已经被占用,那么顾客就直接离开。现在很明显,厨师想要最大化在他的餐厅用餐的顾客总数,因此他允许(或禁止)某些顾客以完成这项任务。你要帮助他解决这个问题。给定一个包含 N 个顾客的列表,包括他们的到达时间、离开时间和首选隔间,您需要计算可以在餐厅用餐的最大顾客数量。
我得到的不是餐厅和顾客,而是站台和火车。
我被要求为此设计一个数据结构。
第三天 :
第五轮:
1. 项目讨论。
2.讨论不同类型的分拣技术。
归并排序和快速排序的区别。何时何地使用它们。
关于计数排序的讨论。
3.关于hash-map的讨论。
设计一个提供与 hash-map 相同函数的数据结构。
4. 代码:给定一个数组:A1[] = 2, 1, 2, 5, 7, 1, 9, 3, 6, 8, 8
A2[] = 2, 1, 8, 3
对 A1 进行排序,使元素之间的相对顺序与 A2 中的相对顺序相同。如果 A2 中不存在该元素,则按排序顺序最后附加它们。
o/p : 2, 2, 1, 1, 8, 8, 3, 5, 6, 7, 9
我做到了 O(NlogN) 时间复杂度。
第 6 轮:(提高标准)
1.代码:将小端转换为大端。
2.代码:文件中的第K个最大值。
我是用最小堆做的,然后他让我使用其他数据结构。然后我使用平衡二叉搜索树做到了。
3. 代码:在字符串中查找第二个不重复的字符。
4. 给定素数 p>=5 :
证明: (p^2 – 1) 可以被 24 整除。
5. 给定一个十进制数 N 作为字符串数字(只有 0、1 和 2),如何仅使用正则表达式检查它是否可被 3 整除,而不转换为 int?我被要求为此设计 DFA。
我要感谢 GeeksForGeeks,它帮助我提高了对数据结构和算法的知识和理解