多玩笔试
多玩(欢聚时代)的笔试又挂了,真是桑心死了。本来招那么多人,看着挺有希望的,而且笔试的时候,想破脑袋把最后几道编程题给想出来了。虽然不知对错,但还是抱有一点希望可以进一面的,结果还是和腾讯一样笔试就挂了。看来前面的基础知识还是做得很不好,很多java的知识都忘了,现在真是什么都忘了,操作系统忘了,java忘了,悲剧。。。。。。
算了,还是回忆一下,把能想起的题记录一下算了。
1,StringBuilder和StringBuffer有什么区别?在什么场合下使用?
网上讲的是:类似于HashTable和HashMap,HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也在于此,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。
无奈我记反了,唉。。。。。
详细介绍请看:/s/blog_73cdc7a60101chpp.html
2,TCp/IpV4协议。
这个我居然想不起“表示层”,唉,活该被刷。
详细介绍请看:/s/blog_73cdc7a60101chq7.html
3,计算两个字符串的最小差异值:
A串比B串短,可以在A串首尾随意添加字符,求添加后A串和B串的差异值。如:
A:abc
B:efgajkadce
在A串首尾添加后得到efgajkabce,与B串efgajkadce的差异值为1。
求函数int fun(String a, String b)
我的思路:因为A串中间不能插入新的字符,所以不管在A的首尾添加多少字符,最终最小差异值是以A的长度来和B上所有这个长度的子串来比较而得到的。所以可以以B.length
- A.length + 1 为循环,比较找出这个最小差异值。如下:
第一次,结果为3:
efgajkadce
abc
第二次,结果为3:
efgajkadce
abc
第三次,结果为3:
efgajkadce
abc
第四次,结果为2:
efgajkadce
abc
......
......
第七次,结果为1:
efgajkadce
abc
......
最后即可得出答案。
不知道这种想法对不对,也不知有没有更好的方法,毕竟这个的复杂度是O(mn)。
4,字符串“AAABBBAB”,通过改动字符,使得所有A都在B左边,求最少改动次数。如:
AAABBBAB=1
BBBBAAAA=4
我的思路是找到字符串\"BA\",然后将其删去,重复这个过程,直到找不到。比如对于ABABABABAABAB:
1,A(BA)BAABABAABAB
2,A(BA)ABABAABAB
3,AA(BA)BAABAB
4,AA(BA)ABAB
5,AAA(BA)B
6,AAAB
结束,即最少改动次数为5。
5,文本编辑器,这道题网上有,考试前瞄了一下,也使用hashmap做的,具体看:/s/blog_73cdc7a60101chrj.html