📜  Accolite面试经验|套装4(校园)

📅  最后修改于: 2021-04-23 20:58:44             🧑  作者: Mango

第一回合(书面)
大约有140名学生参加了离线测试。

在30分钟内要完成20个MCQ,问题来自OS,DBMS和数据结构。
在那轮编码之后(纸面编码),提出了3个问题,我们必须尝试任何2个问题(1小时)

1.编写自己的sqrt()函数。如果它是一个理想的平方,该函数应返回平方根,否则返回floor(sqrt(x))
2.给定一个包含正整数和负整数的数组。您必须找到最小的缺失正数。您的代码应在O(n)时间和O(1)空间中运行。
3.给定一个字符串数组,查找是否可以将字符串链接成一个圆圈。一个字符串x可以在另一个之前y字符串放到如果x的最后一个字符是同为y的第一个字符。

第一轮比赛后,有19人入围了面试。

第二轮(技术)(1:30 hr)
1.跟我说说你自己。同时,他(采访者)调查了我的简历,并询问了我的项目。
我已经完成了3个项目,所以他开始讨论CUDA和并行编程,以及如何在图像上实现检测边缘和获得多少增益因子。
其次,我做了一个有关在线投票系统的项目,因此他要求我绘制ER图,模式以及它们与功能之间的关系。大约(25-30)分钟的讨论。

2.给定一个BST,您必须在O(n)时间和O(1)空间中找到第k个最小的元素。

3.假设您有一个服务器,同时到达多个请求,t1,t2…现在假设用户在服务器上的任何特定时间t命中,则服务器应返回最后一个请求。您必须设计相同的数据结构。
我建议我们可以使用将返回最后一个请求的堆栈,然后他让我对最后10个请求进行操作,然后我建议使用将存储请求号的结构数组。现在我们可以随时向后移动10个元素,但是他说,假设用户频繁点击,那么每次我都必须一次又一次地回溯,因此时间复杂度会很高,我同意并建议另一个与LRU实现类似的解决方案,因此可以更快地处理频繁出现的请求。然后他修改了一个问题,即用户需要最近1分钟的请求,然后他提示需要存储所有请求,我们不能仅存储每1分钟的请求,然后突然点击了我,我建议使用双端队列60秒现在假设请求在第61秒到达,那么我们可以在后面添加一个,然后从前面移除一个并保持60秒的窗口。他很满意,但他希望不应该删除任何内容,所以我告诉他使用圆形双端队列,我们可以替换以前的元素。他现在对这种方法完全满意。(大约35分钟的讨论时间)

4.给定一个包含30天股份价格的数组。一个人拥有1股可以买卖任意次数的股份,您必须找到可以赚取的最大利润。
我建议一种方法来创建两个辅助数组MIN,从左侧创建一个辅助数组MIN,从右侧创建两个辅助数组,如果MAX [i]和MIN [i]之间的差值大于maxDiff,则同时遍历两个辅助数组,然后更新maxDIff并存储当前索引,如果index + 1不等于当前迭代索引并最终返回sum。他在我的代码上尝试了一些测试用例,发现在某些情况下给出了错误的答案,然后他问我对动态编程的命令如何,我告诉我知道只是标准的,没有其他经验,然后他说这个问题是DP的问题,但是他很高兴看到我的方法。(大约20-25分钟)

第三回合(技术)(1:30 hr)
她(采访者)问我是否在笔试中尝试了第三个问题,我说我只尝试了第一和第二个问题,然后她给了我论文,并告诉我要实施第三个问题。
我建议了一种使用两个结构数组的方法(第一个字符和最后一个字符),其中将包含布尔值以标记字符串中字符的存在及其索引。现在比较两个数组,看看两个数组是否具有相同的布尔值和所有fisrt和last字符的索引不同。如果是这样,那么字符串可以形成一条链。她对我的解决方案有疑问,因此她找到了我的代码给出错误答案的测试用例,于是她告诉我寻找另一种解决方案,我想出了另一种方法并告诉她我们可以从第一个字符和最后一个字符制作一个有向图,然后在DFS中对其进行遍历,现在假设如果再次访问了访问的节点并且访问的节点总数与节点总数相同,那么我们可以说字符串将形成一个链,现在她对方法感到满意,并要求我编写代码,由于我的图表很虚弱,我感到震惊,所以她说只需要写伪代码。

2.给定一个BST,您必须在O(n)时间和O(1)空间中找到第k个最大元素。
我建议声明一个静态变量count,如果按顺序访问了节点并且count变为k,它将增加count,我将打印该节点的数据并返回。然后她问我静态如何工作以及全局和静态之间的区别。

3.给定诺基亚手机的移动键盘和包含所有可以形成的有意义单词的字典,假设现在用户键入一些数字(输入),则您的程序必须建议字典中存在的所有有意义的单词。她问我要有效地存储字典的数据结构,然后如何使用该数据结构编写代码。
首先,我建议我将字典存储在二维数组中,并以字典方式对其进行排序,现在假设用户键入一个数字,则在数组中搜索以该字符开头的字符串。她说为了减少复杂性,因为字典可能包含1000个单词,然后我建议使用trie数据结构来存储和搜索字符串,她现在很满意,并请我解释一下这个概念。
4.给定一个图的前序和后序,如何构造图。
当我听到这个问题时,我被困了2分钟,但随后我说,就图而言,我对此一无所知,但无法通过前后顺序构造一棵唯一的树,因此图是有序的,所以她很高兴,她很高兴并同意了答案。

第4回合(技术性)(2:30 hr)
1.假设给出了一个链表并且有一个循环,您必须在O(n)时间内找到孤立节点。孤立节点是循环外的节点。

2.设计一个BRTS交通信号系统,以确保没有两辆车发生碰撞。请注意,BRTS公交车将在4个方向上跟随BRTS交通灯B1,B2,B3,B4,而常规交通将仅遵循常规交通灯R1,R2,R3,R4。在输入中仅给出了最大循环时间(在该时间之后重复该过程),检查所有极端情况(交通信号灯只有两种状态(红色和绿色))。您必须告诉信号灯在最大循环时间下的任何一种可能组合。 (大约1个小时的讨论时间)。

3.假设给出了一个链表,但是我们不知道节点数,那么您必须从最后查找第k个节点而不计算节点数。
4.给定一个由n个整数组成的数组,某些元素在0到n-1的范围内,而某些超出范围的元素可能是有益的。您必须重新排列数组,使所有处于范围内的元素都出现在它们的索引上,其余元素出现在不存在索引的排序方式。应在O(n)时间和O(1)空间中完成。
例如-假设n = 6,4 5 2 3 6 -3输出= -3,6,2,3,4,5

5.如何使用队列/队列实现堆栈。
6.如何在队列的帮助下对元素进行排序。
我建议一个O(n)时间解以及O(n)额外空间。他要求在O(1)空间中做,所以我建议双端队列,他似乎很满意。

直到本轮比赛,才选出4个人(我是其中之一)

第五回合(举手比赛)(30分钟)

1.从索引0开始查找字符串中最长回文的长度。
2.查找字符串B中是否存在字符串A。
3.查找字符串中最长前缀的长度

最终这2个被选中之后,不幸的是我不在他们当中,因为他们可能认为我没有什么压力。最后,我建议您的方法和概念必须扎实,因为它们总是会提出一些变化的问题。

相关实践问题

最小正缺数
数平方
字符串圈
检查子序列
股票买卖
字符串中最长的回文
关于Accolite的所有练习题!