在线测试:
编码:时间:90分钟
存在三个编码问题,如下所示:
- 一个男人从他的房子开始,有几个煎饼。让他们成为N。现在他在回家之前先拜访了K个地方。他可以在每个地方买蛋糕,卖蛋糕或什么都不做。但是他必须在回家之前先卖掉L个蛋糕。找出在旅途中任何时候可以拿到的最大蛋糕数量。N,K,L作为输入
例如:对于5 3 1,输出:7 - 我不记得确切的问题。您必须在数组中找到最大的连续子数组。基本上是关于Kadane算法的问题
解决方案:GeeksforGeeks链接 - 有文字。有一个模式。该模式包含一个*符号,并且可以用0个或多个字母(任何字母)替换。例如,如果aa * b中的模式aaab,aab,aaccb等都是有效模式。您必须在文本中查找该模式的出现次数。
MCQ:50分钟
基于逻辑推理,数据解释和基础数学的问题共有45个。一个建议是,从头开始,它们比开始时容易得多。
选择了约16名学生进行面试。
第1轮
- 面试官看了我的简历。然后直接移至数据结构和算法。
- 他问我有关排序算法的问题,然后又问我快速排序和合并排序有什么区别,什么时候使用什么?
我告诉他合并排序是稳定的,快速排序的最坏情况复杂度为o(n ^ 2),但是在快速排序中,我们不需要合并排序后的数组。在数组的情况下,我们使用Quicksort,对于链表,我们使用合并排序 - 编写代码以合并包含浮点数的链表
解决方案:GeeksforGeeks链接 - 然后,他通过交换节点中的数据向我介绍了链接列表中的冒泡排序,并问这里除了复杂性之外还有什么问题?
我告诉我们,查找列表通常包含数据块,因此交换数据可能会导致相当大的开销并降低性能。他似乎对答案感到满意。 - CPU内部如何表示5.7之类的浮点数?
我不得不说说IEEE符号。我不记得那些,所以无法回答。 - 关于操作系统,线程,进程,它们的区别,分页等的几个问题
- 您必须编写一个通用的Compare函数进行排序。例如,假设有一个学生类,其中包含科目X,Y,Z的标记。您必须编写一个比较函数,以便根据用户希望的任何字段进行排序。
提示:使用函数指针 - 给了两个数字,您必须不使用*运算符就将它们相乘,并且还告诉您这样做所需的最小加法数.i给了一个also但不能说出所需的最小加法数。
解决方案:GeeksforGeeks链接
第二回合
面试官再次看了看我的简历,并告诉我做了很多项目。但同样,我的项目没有任何问题。
- 设计用于存储任何类型数据的缓存。
由于我们不知道要存储什么数据,因此我们必须返回void指针。现在首先我实现了一个数组。然后用于页面替换,我使用了LRU。为了跟踪最近最少使用的元素,我使用了一个堆。有人告诉我要进一步优化它。因此,首先将缓存表示为一个堆,然后最后进行双向链接列表,该列表具有存储在HashMap中的节点地址。还编写了用于设置和获取缓存以及替换功能的代码。
面试官提供了很多帮助,并将我推向正确的解决方案 - 给出了AC代码,并要求我查找错误。这是一项艰难的工作,涉及到内存空间中的指针和字符对齐以及分段错误。
- 有关函数重载的几个问题
解决方案:GeeksforGeeks链接 - 给出了火车的到达时间和出发时间,您必须找到火车所需的最少平台数目。
解决方案:GeeksforGeeks链接
第三回合
在这一轮中,我的实习项目得到了详细讨论。然后提出以下问题:
- 当我们经常分配和取消分配内存时会发生什么?
关于操作系统如何分配内存,碎片以及如何避免内存(压缩)进行了长时间的讨论。 - 压实如何工作?他正在要求算法
告诉他,内存块可以用0(空闲)和1(占用)表示。紧缩将意味着最后移动所有0。我告诉他数组和链表的各自算法。 - 解除分配如何发生?在解除分配期间应注意哪些事项?
我告诉他,我们可以不用再分配和取消分配内存了,而可以使用realloc()来重用它。关于realloc()有几个问题。 - 为什么大型数组的行主遍历比列主遍历更快?
告诉他内部缓存可以带来的好处 - 您必须覆盖距离N。您可以采取1,2或3步。查找做s0的方法数量。
提供递归和dp解决方案。
解决方案:GeeksforGeeks链接
第四回合(最终人力资源回合)
- 这基本上是一次人力资源回合,还有诸如为什么要使用Adobe?
- 如果您找到另一份工作,您将如何决定接受哪一份?
- 您的位置偏好是什么?等被问到。
Adobe的所有练习题!