职位:高级Android开发人员
能力是技术适合(问题解决,数据结构和算法)
第一回合:
电话回合:
1.用下一个和随机指针克隆一个链表
https://www.geeksforgeeks.org/ a-linked-list-with-next-and-arbit-pointer /
2.您必须设计一个有列表的数据结构。您需要执行3项操作
1.在位置插入。
2.从索引获取价值。
3.更新所有索引
时间复杂度为O(1)。
提示:我已经使用了每个索引的计数,并且在用户调用更新所有索引时有额外的变量来存储值。
借助计数,您可以确定是否必须从索引或额外的更新变量中选择值。
班加罗尔现场回合
第二轮:
1.与项目有关的问题。
2.我们有n张卡,每张卡的编号从1到n。
所有卡随机洗牌。
我们只允许执行MoveCard(n)操作,该操作将值为n的卡移动到堆的顶部。
我们需要使用最少的MoveCard操作对一堆卡进行排序。
我能想到的幼稚方法是从MoveCard(n),MoveCard(n-1),MoveCard(n-2)开始。 MoveCard(1)。
这种方法将解决n个MoveCard操作中的问题。
https://stackoverflow.com/questions/21852309/sort-a-deck-of-cards-with-minimum-number-of-moves
第三轮:
1.它是树的“共同祖先”问题和“链表Y节点”问题的变体。我不记得了
但是如果您知道这两个,就可以回答。
2.最长的递增子序列
https://www.geeksforgeeks.org/dynamic-programming-set-3-longest-increasing-subsequence/
第四轮:
1.手中拿着枪的人围成一圈站着1。 1杀死2、3杀死4、5杀死6等
直到我们只剩下一个人。谁将是最后一个还活着的人。编写代码以有效地实现此目的。
2. Java循环依赖问题。
3.一些基本问题
4.用两个线程(A和B)编写一个程序,其中A打印1,B打印2,依此类推,直到达到50。
谢谢GFG