这两家都不是一投有OA;好不容易过了简历拿到OA,没想到真心难,所以都跪了
赶紧过来吐槽一下,也分享下经验
nextCapital
请看这里:http://blog.leanote.com/post/westcode/%5B%E9%9D%A2%E7%BB%8F%5D
模式大概一致,要求两个小时搞定
第一题,巨巨巨恶心的2-D array题;就是一个简单逻辑的2D array变形题,但列了5层按照顺序的要求!!!5个啊同志们~所以double for loop我写了5遍,而且每一层的要求还不是那么简单,都要那种上下左右都要变的那种
第二题,equally巨巨巨恶心的String变形题,也是简单逻辑,但是也貌似要求你变形5次!而且每一层变形也不是那么容易,各种花式+奇怪的要求。。具体我都忘了。。要求你对String的各种操作非常熟悉
第三题,就是上面链接的那个html
第四题,最坑爹;大概就是另外一个帖子里florist,种花然后花盆摆放的问题;被我压中了(还有一道面经题是类似trapping rain water那种题,所以我顺便把这类题复习了一下)。这道题临场做还是挺难的,但我之前就写好了,手头有code;
但没想到最坑爹的是,这个hackerrank OA居然不支持Java8!!!而我的priorityQueue用的是Java8的lambda;然后现场赶紧去写Java7的comparator;但因为code很复杂,一层套一层,comparator写的手忙脚乱就没时间了。。。
quantCast
就一道那个什么Json design题,要求implement add, get, delete…需要用Trie来做;我辛苦了两天写了300+行Java,最后只过了3个case。。。后面的case太大,超时
-
我觉得我的思路没错。比如{“location” : “Seattle”}, 那么就是 location —> Seattle, 上一个node指向下一个node;然后我用的是hashMap存比如{locationString : locationTrieNode};碰到同样的string就用过去的TrieNode即可
莫非我的思路有错?这个题要处理的都是这些String,无法像dictionary那样就建立26个字母的array简单方便。。。所以我只会用Map来存储TrieNode和Name的对应信息,莫非有更好的办法我不会的? -
Json处理,也挺烦人的。或许Python处理这种更有效,Java的话一个是用json-simple,一个是Google的Gson;正好hackerrank俩都支持;Gson感觉挺花时间(我用System.time计算过)。。
-
最后是stdin的输入input,需要用Scanner来处理input;而不是直接给你String,然后跑一跑add(s), get(s)这么简单;而且貌似add, get,这样的method也是stdin的一部分;所以我还用了Method.invoke来实现
总之还是很难的。不过对我自己有很大锻炼,学到不少;估计Trie这一套就不会忘了,然后也算是做了一次design题(平常只会刷刷algorithm题);
感觉还是实力不够,看来coding skill还是要继续努力提高,学无止境~~~