Nutanix参观了我的校园。总共有3轮:
第1轮(编码轮): 2个问题需要在1小时15分钟内解决。 问题1: 给定一个字符串,确定它是否为“总和字符串”。如果字符串满足以下属性,则称为总和字符串: len(s)>3 子串(i,x)+子串(x+1,j)=子串(j,l) 例子: “12358”是一个求和字符串。说明:1+2=3;2+3 = 5 ; 3+5 = 8 “199100199”是一个求和字符串。说明:1+99=100;99+100 = 199 “2368”不是求和字符串。
问题2: 给定两个字符串s1和s2,确定s2是否是s1的混洗。其中,shuffle定义为在二叉树中切换一个节点的两个子节点的操作。
Example: s1 = great s2 = taerg binary tree for s1 great / gr eat / / g r e at after shuffle we obtain, great / eat gr (shuffle gr and eat as they are children of great node) / / at e r g / t a
所以taerg是s1的shuffel串。 这是一个棘手的问题。 12名学生有资格进入下一轮。我解决了第一个问题的所有测试用例和第二个问题的5个测试用例。所以我被选为第二轮。
第二轮: 我被要求解决一个动态规划问题。给定一组仅由运算符(+和*)分隔的数字。然后用括号括起字符串,这样我们可以先从字符串中得到可能的最大值,然后从字符串中得到可能的最小值。返回两个计算值之差。我必须在纸上解决这个问题,并解释整个方法。我花了30分钟在纸上完成了代码和解释。然后面试官测试了我的代码的一些简单情况:2*2+2=>最大值是2*(2+2)=8,最小值是(2*2)+2=6。 然后他问我有什么问题要问他。 我的解决方案和编码风格给他留下了深刻的印象,干净整洁的注释和驼峰式的变量。 包括我在内,共有6名学生入围第三轮。
第三轮: 面试官让我调试一个包含读写器锁的代码。这是一个操作系统问题,是读者-作者问题的修改版。我指出了代码的5个问题,语法和逻辑都有。出现死锁情况、写后不一致、写后不一致、if-then-else错误和语法错误。我花了10分钟指出所有问题并编写正确的代码。面试官的手机上有秒表,我5分钟后才知道。
如果你喜欢Geeksforgek,并想贡献自己的力量,你也可以写一篇文章,然后把你的文章发到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。