11:、n从1开始,每个操作可以选择对n加1或者对n加倍。若想获得整数2013,最少需要多少个操作。
A:18 B:24 C:21 D;不可能
KO:将2013转换成二进制序列,0的个数表示对其进行了一次加倍,1的个数(除去最高位)表示分别进行了一次加倍、一次加1。(C)
13.考虑一个特殊的hash函数h,能将任一字符串hash成一个整数k,其概率p(k) = 2^(-k),k = 1,2,3,4,....对于一个未知大小的字符串集合S中的每一个元素取hash值所组成的集合为h(S).若h(s)中最大元素max h(s) =10,那么s的大小期望是
A:1024 B:512 C:5 D:10
概率问题,不是太明白...
其他解释:对于几何中的每个字符串取hash可以看作是同分布的独立重复事件,所以每一个事件出现10的概率都是p=1/1024,那么当出现的时候,期望的次数就是1/p,1024。 (A)
14.如下函数,在32bit系统foo(2^31-3)的值是:
Int foo(int x)
{
Return x&-x;
}
A: 0 B: 1 C:2 D:4
Int foo(int x)
{
Return x&-x;
}
A: 0 B: 1 C:2 D:4
KO:异或操作,位运算需要转换成补码进行!! (C)
16:在32为系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
Struct A
{
int a;
short b;
int c;
char d;
};
Struct B
{
int a;
short b;
char c;
int d;
};
A: 16,16 B:13,12 C:16,12 D:11,16
KO:编译器中提供了 #pragma pack(4) 来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:
Struct A
{
int a;
short b;
int c;
char d;
};
Struct B
{
int a;
short b;
char c;
int d;
};
A: 16,16 B:13,12 C:16,12 D:11,16
- 如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式。
- 如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。
结构的总大小也有个约束条件,分为下面两种情况:
- 如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数。
- 否则必须为n的倍数。 (C)
18.一个洗牌程序的功能是将n张牌的顺序打乱,以下关于洗牌程序的功能定义说法最恰当的是:
A: 每张牌出现在n个位置上的概率相等
B: 每张牌出现在n个位置上的概率独立
C: 任何连续位置上的两张牌的内容独立
D: n张牌的任何两个不同排列出现的概率相等
A: 每张牌出现在n个位置上的概率相等
B: 每张牌出现在n个位置上的概率独立
C: 任何连续位置上的两张牌的内容独立
D: n张牌的任何两个不同排列出现的概率相等
KO:洗牌程序的目的:产生随机序列。什么叫随机,后边产生的数和前边没有关系。既独立,又等概。 (D)
19.用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色:
A: 10 B:11 C:14: D:15
A: 10 B:11 C:14: D:15
这么多概率题目,晕啊... A白B黑,全黑或全白(2)+ 一黑或一白(2)
+ 两黑或两白(连在一块BBAAAA、间隔一个BABAAAA、间隔两个BAABAA 6)
+ 三黑三白(三连BBBAAA、分别间隔一个BABABA、BABBAA、ABAABB 4) = 14。 (C)
(*)2014.03.25初次做笔试题就选了阿里的,有助于自己后续多学多读书查缺补漏~