阿里巴巴笔试题2015

进修社 人气:1.06W

1、设栈S初始状态为空。元素a,b,c,d,e,f依次通过栈S,若出栈的顺序为c,f,e,d,b,a,则栈S的容量至少应该为______ 。

阿里巴巴笔试题2015

· 3

· 4

· 5

· 6

2、10个相同的糖果,分给三个人,每个人至少要得一个。有 种不同分法。

· 33

· 34

· 35

· 36

3、小数值1.5625的二进制表示是____。

· 101.1001

· 0.001

· 101.111

· 1.1001

4、某二叉树的先序遍历是12453,中序遍历是42513,那么其后续遍历是______。

· 45231

· 42351

· 12345

· 54321

5、主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是 。

· 500

· 700

· 800

· 1000

6、在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 。

· O(N*logN)

· O(N)

· O(1)

· O(N^2)

7、平均速度最快的排序算法是______。

· Shell排序

· 快速排序

· 冒泡排序

· 插入排序

8、以下指令集架构属于复杂指令集架构的是____。

· ARM

· MIPS

· SPARC

· 以上皆不是

9、有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)

· A按行存,B按行存。

· A按行存,B按列存。

· A按列存,B按行存。

· A按列存,B按列存。

10、设一棵二叉树中有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为______。

· 12

· 13

· 14

· 15

11、IP数据报头采用______字节序,在此字节序下从低地址到高地址0×1234的表示形式为______。

· big_endian, 0×12 0×34 0 0

· little_endian,0×34 0×12 0 0

· big_endian, 0 0 0×12 0×34

· little_endian,0 0 0×34 0×12

12、下列叙述中正确的是____。

· 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

· 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

· 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

· 循环队列中元素的个数是由队头指针和队尾指针共同决定

13、将一个从大到小的数组,用以下排序方法排序成从小到大的,______最快。

· 插入排序

· 冒泡排序

· 快速排序

· 堆排序

14、在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是______。

· O(n)

· O(n log n)

· O(n(log n)2)

· O(n 3/2)

15、 已有变量定义和函数调用语句;编程-代码

int a=25;

print_value(&a);

则下面函数的正确输出结果是______。

void print_value(int* x)

{

printf(“%xn”,++*x);

}

· 25

· 26

· 19

· 1a

16、在二进制数据中,小数点向右移一位,则数据______。

· 除以10

· 除以2

· 乘以2

· 乘以10

17、设集合A={1,2,3},A上的.关系R={(1,1),(2,2),(2,3),(3,2),(3,3)},则R不具备 。

· 自反性

· 传递性

· 对称性

· 反对称性

18、下列叙述中正确的是 。

· 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

· 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

· 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

· 循环队列中元素的个数是由队头指针和队尾指针共同决定

19、假定x=500,求下面函数的返回值______ 。

int fun(int x)

{

int countx = 0;

while (x)

{

countx++;

x = x & (x – 1);

}

return countx;

· 2

· 3

· 5

· 6

20、有一台带一个千兆网卡的服务器A,会把接收到的消息转发给另外两台带一个千兆网卡的服务器B和C,B和C上面的一个服务进程处理一条10K字节的消息需要2毫秒。如果在B和C上面各跑80个服务进程,在不考虑CPU负载和进程切换、内存占用、传输损耗和交互损耗的情况下,B和C服务器每秒一共大约可以处理______条10K字节的消息。

· 50000

· 60000

· 70000

· 80000

21、以下措施中,有可能改进分布式系统读写(IO)性能的有____。

· 网络从千兆网升级为万兆网

· 优化调度系统,尽量做到任务与数据相近(Locality)

· 数据预取机制

· 实现异步读写机制

22、无锁化编程有哪些常见方法?______ 。

· 针对计数器,可以使用原子加

· 只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)

· RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法

· CAS(Compare-and-Swap),如无锁栈,无锁队列等待

23、程序

struct T {

char a;

int *d;

int b;

int c:16;

double e;

};

T *p;

在64位系统上以下描述正确的是 。

· sizeof(p) == 8

· sizeof(*p) == 32

· sizeof(p->a) == 1

· sizeof(p->e) == 4

24、下面所述步骤中,是创建进程所必须的步骤是_____。

· 由调度程序为进程分配CPU

· 建立一个进程控制块

· 为进程分配内存

· 为进程分配文件描述符

25、有一种用左右值表示树形结构的存储格式,其中左右值有一些相当有用的场景,但是每个节点的左右值需要遍历树形结构计算出来。一个示例:

N[1,12]

|__N[2,7]

| |__N[3,4]

| |__N[5,6]

|__N[8,11]

|__N[9,10]

请完成遍历算法给节点赋左右值。

typedef struct node_t {

int left;

int right;

int n_children;

1 children;

} NODE;

int visit(NODE * node, int value) {

node->left = value;

int i = 0;

for(i=0; in_children; i++) {

2

}

3

return value;

}

int initLR(NODE* root) {

return visit(root, 1);

}

26、我们需要在淘宝的商品中提取一批优质商品(有特色、质量好、服务好等),比如需要提取100万件,准确率要求是95%。我们有n个不同的方法可以提取这些商品,但每个方法在保持准确率满足要求的情况下都不能做到提取完整的100万件商品。因此可以把这n个方法得到的满足要求的商品集按如下方法合并起来:如果一个商品被k个方法选为优质商品,则将它的分数设为k;按照k从大到小排序选取前100万件。但实际中发现这样选出的100万件商品不符合精度要求,请解释可能的原因。还可以向哪个方向努力?

27、有个学校的15个女生一直3个一群上学。请问该如何安排才能使这些女生每周7天每天都和两个不同的同伴结伴同行呢?例如:用A到O来标识这些女孩,7天A正好和B到O这14个女孩各同行一次。而B到O每个人和都和其他14个女孩各同行一次。

28、长度为100的环形双向链表,A指针顺时针方向每次走3步,B指针逆时针方向每次走5步,每次走完判断是否相遇,初始状态B在A逆时针方向相距20,走100次,AB指针能相遇几次?

29、某招聘笔试共有120人参加,考试有6道题。1-6道分别有86人,88人,92人,76人,72人和70人答对,如果答对3道或3道以上通过笔试,问至少有多少人通过?

30、Wait()和sleep()的区别