微软的实习生笔试题,不是太难,算法的题好多,但是很多答案都不确定,欢迎大家讨论答案~
答案:1.ABCDE(没把握,反正应该大于32,每迭代一次至少一个确定) 2.AC 3.ACE 4.A 5.C 6.C 7.D
8. AD 9.B 10.E 11.BCD(没把握) 12.BC 13.不会 14.AC 15.D 16.A 17.B 18.D
19.C 20.E
各个论坛上看到的分析:
11. 兰亭集序有361个中文字符(含标点),请问存储在文本文件中的时候,文件大小可能是多大?
(A) 722字节 UTF-16 (这个不对,因为UTF-16有Big Endian和Little Endian两种,必须要加BOM)(这个我答错了)
(B) 724字节 UTF-16 (这个是对的,UTF-16两字节表示一个汉字,外加一个BOM两字节)
(C) 1083字节 UTF-8 (这个是对的,UTF-8通常三字节一个汉字,选用不加BOM的方式)
(D) 1086字节 UTF-8 (这个是对的,UTF-8通常三字节一个汉字,选用加BOM的方式)
(E) None of the above
第10题.
当x<y时,y^((x^y)&(-(x<y))) = y^((x^y)&(-1)) = y^((x^y)&0xffffffff) = y^(x^y) = (y^y)^x = 0^x = x
当x>=y时,y^((x^y)&(-(x<y))) = y^((x^y)&(-0)) = y^((x^y)&0) = y^0 = y
13. 一个3阶的B树有2047个元素,树的最大高度是多少。
(A) 11 (B) 12 (C) 13 (D) 14
(这个我选了A。
M阶B树只能在叶子结点存储数据,其他结点的孩子个数必须在[ceiling(M/2), M]之间,根节点要么是叶子结点,要么至少有两个孩子。
根据该定义,如果3阶B树有2048个元素,那高度最大时每个结点都取孩子个数下限(2),高度为12(即log(2048)+1)。
然后去掉一个叶子结点,则从叶子向根一路发生结点合并,一个2孩子结点和一个1孩子结点合并成为一个3孩子结点。
这不是高潮,高潮是,根节点的两个孩子也发生了结点合并,变成了一个结点,根不再满足B树的要求,被删除,其唯一的孩子成为了新的根。
于是,树的高度变为了11。
)