第一轮有20道选择题,涉及C编程、数据结构、算法、数学和谜题,以及一道来自网络和操作系统的问题。测试持续时间为90分钟,评分方案为+1,-0.25
它还有两个编码问题。 (一) 给定一个数字数组,求该数组中任意一对数字的绝对差的最小值。
二) 查找字符串中第一个不重复的字符。 如果没有这样的字符,那么返回-1。
有4轮技术面试,没有人力资源面试。以下是在技术交流中向我提出的主要问题。我必须首先提出逻辑,与面试官讨论,然后他让我把它编出来。
第一轮- 1) 检查给定的树是否为二叉搜索树 .这个问题很简单。
2) 您将获得一个数组,其每个元素表示塔的高度。每座塔的宽度是1。开始下雨了。两座塔之间收集了多少水? [1,5,3,7,2]——那么答案是5号楼和7号楼之间有两个单元。 看起来很简单,但如果你观察不好,你可能会像我一开始做的那样,以错误的逻辑结束。此外,也有很多可能的角落案例。幸运的是我能认出他们。
3) 给定一个数组和一个固定的窗口大小X,你必须找出每个窗口的最小值。不允许取消排队。 所以我不得不使用两个堆栈。
第二轮- 1) 一些DBMS问题,如数据库如何存储在内存中,图像如何存储在数据库中,以及其他一些问题。
2) 什么是 高度平衡树 .给出一个O(n)解来平衡它。然后,他将平衡树的定义更改为:如果某一特定级别的每个节点都应该有相同数量的子节点(而不仅仅是直接子节点),那么树就是平衡的。每个节点可以有任意数量的子节点。我必须设计这个类,然后为它编写代码。
3) 给定一个整数数组,找到一个索引,如果你把数组分成两部分,那么两部分元素之和的差值的绝对值必须最小。 在给了他逻辑之后,他改变了它,把它分成三部分,这样所有部分的元素之和都相等。我必须给这个编码。
第三轮- 1) 有一句话你的朋友知道,但在给你的时候,他失去了所有的空间。你必须随身携带字典。你会如何用它重建原来的句子。
2) 如何从循环链表中删除特定节点。
3) 你会得到一个加密文件。你不知道用来加密它的密钥。比如A可能被映射到B,B映射到某个D,D映射到另一个F。但是你不知道这个加密方案。你带着字典。你将如何解密该文件?我提出了很多解决方案,比如彻底搜索,然后使用一些变体来最小化复杂性。他只给了我一个词的暗示——直方图。所以我给了他一个逻辑,计算字典中每个字母的使用频率。然后用字典中使用最多的字母替换文件中使用最多的字母。然后将单词与字典进行比较。在不匹配的情况下,返回轨迹并使用第二大轨迹,以此类推。我还和他讨论过,在最坏的情况下,它也可能具有很高的复杂性,但他继续说下去。
4) 什么是数据库管理系统中的索引。您将如何实现索引。
第四轮- 1) 树的完整路径是从根到叶。k重路径是元素之和大于k的完整路径。请编写代码删除不在任何k重路径中的所有节点。
2) 有一个数组,其元素先严格增加,然后严格减少。你必须找到改变的点。
所有回合中的所有问题都要求尽可能降低复杂性(时间和空间)。我还必须编写最终解决方案的代码。结果终于出来了,我被他们选中了。
如果你喜欢Geeksforgek,并想贡献自己的力量,你也可以写一篇文章,然后把你的文章发到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。