巨硬实习昂赛

在111大楼下午场面,面我的全是Azure的,面试氛围很好, 四轮,中间休息十分钟。
第一轮: 印度小哥, 给一个字符串代表时间,然后找到时针和分针之间角度(返回小于等于180度的那个);第二题是给一个数组, 里面有duplicate,去重返回新的数组; 第三题设计一个class, 有add(int a)和get()两种方法。 每次get 都要返回前面加进去的数字的unique的那一个。比如说, add(3), add(3), add(5), get()的话返回5. 要求时间复杂度和空间复杂度都是constant。在小哥的提示下用位运算解决了

第二轮: 判断两个字符串是不是有同样的char。意思就是第一个字符串里有的char第二个字符串都得有,同理第二个字符串里有的第一个字符串里也必须有(char的数量不一定要一样)。时空复杂度要求N,follow up是优化running time。

第三轮: 关于rope的题,貌似地里有,但是我忘了。大概意思就是,给一组数组,每个元素代表一个绳子的长度,然后让你把绳子两两连起来组成新的绳子的长度,然后计算怎么连绳子才能让总和最小。

第四轮 李口依依爸

关于那道get和add的题目,如果有两个unique的情况怎么处理啊(

他没有说,但根据我自己的代码还有他的例子,就返回最新的就好了,其实他也没有具体有什么要求,就想知道你用什么方法处理这个问题

那位运算的做法能简单说说么?有点想不通(

就是说你给一个member variable存储刚加进来的数字,add一个数字的话,用这个数字^这个member varibale,如果结果是零的话,就说明跟上面那个重复了,如果不是的话,新加进来的数字就是目前的unique数字,然后现在这个member variable的值就是这个新加进来的数字

感觉有点说不通啊……如果这样的话用异或和用等号有啥差别……而且这样讲的话如果我add顺序是3,5,5那么在加入3以后再加入5的话3就会被替换掉,此后再次看到5那么5就不是一个unique number,那么这个case的答案应该是3,但是此时3的信息应该已经丢失了吧(

是有这个问题,他其实这道题是我在做出前两道题还有时间就随便问了一道,他目的就是考察会不会位运算,不用太纠结细节

on campus之后说两到四周通知,但是我有pending offer,两周后就联系了recruiter,他就硬把我塞到十一月的,要不然估计就没坑了

那好吧233