您的位置:首页 > 其它

阿里巴巴2013年校招试题单选解析

2015-03-13 15:25 253 查看
版权所有,转载请注明出处,谢谢!

另外,我是初学者,这是自己笔记,网上也有相关2013阿里试题的解析,大家都可以去查找参考,会更全面一些。

1. -7的二进制补码表示为:

A.01111000 B.01111001 C.11111000 D.11111001

解析:有符号数有三种表示法原码,反码,补码。所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

2.以下四种介质带宽最大的是:

A.同轴电缆 B.双绞线 C.光纤 D.同步线

3.进程阻塞的原因不包括:

A.时间片切换 B.等待I/O
C.进程sleep D.等待解锁

解析:操作系统基础知识。单就从字面的阻塞两个字的意思看,等待和sleep都能造成阻塞,排除掉后三个选项。专业知识来看,时间片切换是用来进行进程切换的。考察的意图就是操作系统,软件工程专业必学的一门课程,此题相关的知识可以查找进程的7种状态,进程切换的原因,进程切换的过程,都是操作系统必备的一些知识。

4.设只含根节点的二叉树高度为1,现有一颗高度为h(h>1)的二叉树上只有出度为0和出度为2的节点,那么这颗二叉树节点最少为:

A.2^h-1 B.2h-1 C.2h
D.2h+1

解析:注意此题最少两个是关键。讨巧的方法就是画图。要想维持二叉树的高度,结点又最少,就必须满足每一层有且只有一个出度为2的结点,也就是说直接沿着一条路下去保持出度为2,直到高度达到h,那么就是每层有2个结点,共2h结点,而根节点只有一个(第一层只有1个结点),所以最少要为2h-7。
此题考察二叉树相关知识,具体知识可以参考此篇文章:http://blog.csdn.net/walkinginthewind/article/details/7518888

5.给定下面程序,那么执行printf("%d\n",foo(20,13));结果是多少:

int foo(int x,int y)
{
if(x <= 0 || y <= 0)return 1;
return 3*foo(x-6,y/2);
}


A.3 B.9 C.27 D.81

解析:对递归的非常简单的考察,很容易。关键的问题是整个思考过程中的逻辑问题,不然很容易丢掉一次循环次数。在此基础上要去看一下常见的递归算法:斐波那契等等。另外也有可能会给你段文字,让你去写递归的逻辑,这样总体而言需要注意三个过程:递归的出口是什么(即递归结束的条件)?解决当前层次上的递归逻辑?解决下一层次上的递归逻辑?详细可以参见:http://blog.csdn.net/lixiaoshan_18899/article/details/1227122

6.对于以下说法错误的是:

A.Dijkstra是求两点间最短路径的,复杂度:O(n*n)。

B.Floyd-Warshall是求所有点对之间最短路径的,复杂度:O(n^3)。

C.求n个数中的中位数复杂度最低为:O(n*logn)。

D.基于比较的排序算法复杂度下界为:O(n*logn)。

解析:算法设计与分析知识。每个选项都是一个知识点,至于c选项,看这篇文章

7.给定一个m行n列的整数矩阵,每行从左到右和每列从上到下都是有序(假设都是升序)的。判断一个整数k是否在矩阵中出现的最优算法,在最坏情况下的时间复杂度是:

1 5 7 9

4 6 10 15

8 11 12 19

14 16 18 21

A.O(m*n) B.O(m+n) C.O(log(m*n)) D.O(log(m+n))

解析:二分搜索技术的灵活运用,给定一个排好序的n个元素,现在要在这n个元素中找出特定元素x,最坏情况下的复杂度为O(logn),好吧,我巧妙的避开了回答啊这个最坏复杂度是怎么得到的。引申到该题中,就是O(logn)*O(logm)。该题考察的是软件工程专业的一门必修课算法设计与分析,主要看递归与分治策略,动态规划啊,贪心算法,回溯法,分支限界法这几大章节。

8.一个包里有5个黑球,10个红球和17个白球。每次可以从中取两个球出来,放置在外面。那么至少取多少次,一定出现过取出一对颜色一样的球。

A.16 B.9
C.4 D.1

解析:这道题反正跟我的想法有些出路,但是我问了几个人都是A的,所以答案就是A把。我自己的想法是问至少取出多少次,那么只要剩下的球都是白的就可以,那么前五次是黑红,后五次红白,那么取第11次的时候就是会出现颜色一样的了,可能我想法是错的,怎么也转不过来这个脑筋。

9.某地电信局要对业务号码进行梳理,需要检测开通的市话号码是否存在某一个是另一个的前缀的情况,以简化电话交换机的逻辑。例如:某用户号码是11001100,但与110报警电话产生前缀配对。已知实话号码最长为8位,最短3位,并且所有的电话号码都以1开头。由于市话号码众多,长度也未必一致,高效的算法可以用O(n)的时间复杂度完成检测(n为开通市话号码个数,数量是千万级的)。那么该算法在最坏情况下需要耗费大约多少内存空间?

A.5GB B.500MB C.50MB D.5MB

解析:最坏的就是都是8位号码即为1B 那么千万级就是1B*1000*1000*10 = 10MB 两位数的级别,为什么会出现50MB呢,因为这里的进位应该是1024B = 1KB的,约去了尾数24,只要去看数量级是两位数就够了。不知道这道题为什么有这么多字,自己也不是很把握,欢迎批评指正。

10.骑士只说真话,骗子只说假话。下列场景能确定一个骑士、一个骗子的有?

A.甲说:“我们中至少有一个人说真话”,乙什么也没说。

B.甲说:"我们两个都是骗子",乙什么也没说。

C.甲说:“我是个骗子或者乙是个骑士”,乙什么也没说。

D.甲乙都说:“我是个骑士”。

E.甲说:“乙是个骑士”,乙说:“我们俩一个是骑士一个是骗子”。

解析:是道逻辑题。无非就是每个选项都去假设甲是骑士乙是骗子,再反过来假设甲是骗子乙是骑士,看看两次假设是不是都满足一个条件不成立的时候,另一个条件成立。如果去掉红字部分,就有陷阱了,可能两个人都是骑士,两个人都是骗子,就不能像上面那样考虑了,这种题就是思维逻辑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: