淘宝2012秋季校园招聘技术试卷(A)

一、单项选择题(15题,每题3分,共45分,每题答对计3分,答错减1分,不答计0分)
1.若系统中有6个队列,有多个进程均需要使用其中的3个,规定每个进程一次只允许申请一个队列,那么最多允许多少个进程参与竞争,才不会造成死锁?()
A. 1个
B. 2个
C. 3个
D. 4个
答:B
SUM(每个进程所需要的资源) <= 总资源数
2.假设双链表结点的类型如下:
typedef struct linknode
{
    int data;                                           /*数据域*/
    struct linknode *llink, *rlink;          /*llink和rlink是分别指向前驱结点和后继结点的指针域*/
}bnode;
下面给出的()是要把一个q所指新结点作为非空双向链表中的p所指示结点的前驱结点。
A. q->rlink=p;q->llink=p->llink;p->llink=q;p->llink->rlink=q;
B. p->llink=q;q->rlink=p;p->llink->rlink=q;q->llink=p->llink;
C. q->llink=p->llink;q->rlink=p;p->llink->rlink=q;p->llink=q;
D. 以上都不对
答:C
3.给定一个关键字序列{24, 18, 32, 43, 38, 7, 13, 22},采用堆排序时的初始化大顶堆是()
A. {22, 18, 13, 7, 24, 38, 43, 32}
B. {43, 38, 32, 22, 24, 7, 13, 18}
C. {22, 13, 18, 7, 24, 38, 43, 32}
D. {43, 38, 32, 22, 24, 13, 7, 18}
答:B
从s[3]开始,到s[0],依次执行对s[i]执行向下调整,每次调整效果如下:
i=3 -> {24, 18, 32, 43, 38, 7, 13, 22}
i=2 -> {24, 18, 32, 43, 38, 7, 13, 22}
i=1 -> {24, 43, 32, 22, 38, 7, 13, 18}
i=0 -> {43, 38, 32, 22, 24, 7, 13, 18}
4.设有28盏灯,拟公用一个电源,则至少需有4手头的接线板数几个?()
A. 7
B. 8
C. 9
D. 10
答:C
(28-1)/3 = 9
5. 下列哪种不是平衡二叉树?()
A. 红黑树
B. avl树
C. Treap树
D. b+树
答:D
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。
  红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。
  AVL是最先发明的自平衡二叉查找树算法。在AVL中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
  Treap是一棵二叉排序树,它的左子树和右子树分别是一个Treap,和一般的二叉排序树不同的是,Treap纪录一个额外的数据,就是优先级。Treap在以关键码构成二叉排序树的同时,还满足堆的性质(在这里我们假设节点的优先级大于该节点的孩子的优先级)。但是这里要注意的是Treap和二叉堆有一点不同,就是二叉堆必须是完全二叉树,而Treap并不一定是。
  伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它的优势在于不需要记录用于平衡树的冗余信息。
        B+树是为磁盘或其他直接存取辅助存储设备而设计的一种平衡二叉树。它是一种多路查找树,可以有许多个子女,因此它是不是二叉树。
6.网页搜索引擎因为要索引的网页数量巨大,所以会把索引分布在非常多的服务器上,而最终搜索结果则一般返回最符合搜索条件的前1000个,你认为获取最终搜索结果的排序算法是以下哪种?()
A. 快速排序
B. 堆排序
C. 插入排序
D. 希尔排序
答:B
使用堆排序,堆中只维持前1000个数据,不用对所有数据排序
7.TCP/IP模型的体系结构中,ICMP协议属于()
A. 应用层
B. 网络层
C. 数据链路层
D. 传输层
答:B
主要协议:
数据链路层:HDLC, PPP, CSMA/CD, CSMA/CA
网络层:IP,下面两个(ARP, RARP),上面两个(ICMP, IGMP)
传输层:TCP,UDP,  RIP, OSPF
应用层:FTP(tcp21/20), Telnet(tcp23), HTTP(tcp80), POP3(tcp110),DNS(udp53),NFS(udp), SNMP(udp161), TFTP(udp), SMTP(tcp),HTTPS(tcp443)
8.设A、B、C为三个事件,P(AB)>0且P(C|AB)=1,则有()。
A. P(C) <= P(A) +P(B) - 1
B. P(C) <= P(AUB)
C. P(C) >= P(A) +P(B) - 1
D. P(C) >= P(AUB)
答:D
贝叶斯公式:P(A∩B)=P(A)*P(B|A)=P(B)*P(A|B)
    P(C|AB)=P(AB|C) * P(C) / P(AB) = 1
==>P(C) = P(AB) / P(AB|C) >= P(AB)
9.某班同学要订A、B、C、D四种报纸,每人至少订一种,最多订四种,那么每个同学有()种不同的订报方式?
A. 7种
B. 12种
C. 15种
D. 21种
答:C
2^4-1 = 15
10.假设某计算机具有1M字节的内存(目前使用的计算机往往具有64M字节以上的内存),并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制()位。
A. 10
B. 16
C. 20
D. 32
答:A
1M字节的内存,按字节编址,共有1M个地址,用10位二进制表示
11.当待排序的所有元素的排序码都相等时,下列哪种排序算法是最慢的?()
A. 直接插入排序
B. 简单选择排序
C. 起泡排序
D. 基数排序
答:D
ABC都只需要一次遍历即可完成
12.因特网中的协议应该满足规定的层次关系,下面选项中正确的协议层次和对应关系是()

答:C
应用层常用协议及配置:
FTP(tcp21/20), Telnet(tcp23), HTTP(tcp80), POP3(tcp110),DNS(udp53),NFS(udp), SNMP(udp161), TFTP(udp), SMTP(tcp),HTTPS(tcp443)
13.下面关于二分查找的叙述正确的是()
A. 表必须有序,表可以顺序方式存储,也可以链表方式存储
B. 表必须有序且表中数据必须是整形,实型或字符型
C. 表必须有序,而且只能从小到大排列
D. 表必须有序,且表只能以顺序方式存储
答:D
14.有一口老钟,1点敲一下,2点敲两下,6点敲6下用了6秒钟,那么11点的时候,这口钟需要敲多久?()
A. 6秒
B. 11秒
C. 12秒
D. 不确定
答:D
不知道是要考查什么
15.32位操作系统char* a = "123",sizeof(a)是多少?()
A. 2
B. 3
C. 4
D. 5
答:C
a是指针

二、填空题(4题,每题4分,共16分)
1.请填写四种硬盘接口类型:()、()、()、()
答:IDE, SATA, SCSI, 光纤
2.为了避免需要在服务器上保存用户的登录信息,通常互联网网站都采用()来在浏览器中记录用户是否登录等信息。
答:cookie
3.
public class ArithmetieResultsOutput{
	public static void main(string[] args)
	{
		int i = 0;
		int j = 0;
		if(i++ == ++j){
			System.out>println("True:i="+i+",j="+j);
		}
		else{
			System.out>println("False:i="+i+",j="+j);
		}
	}
}
输出结果为()
答:False:i=1,j=1
4.已知A桶中有4个白球8个黑球,B桶中有2个红球3个黑球,某人从其中一个桶中任取一个球,这个球是黑色的。请问这个黑球来自B桶的概率是()。
答:51/110
已知:P(A) = P(B) = 1/2
P(w) = 6/17 P(b) = 11/17
P(b|A) = 2/3 P(b|B) = 3/5
求:P(B|b)
根据贝叶斯公式:P(B|b) = P(b|B) * P(B) / P(b) = 51/110

三、综合题(2题,共39分)
1.(14分)一棵树上有海量结点,假设在亿这个级别,现在给定任意2个结点(非根结点),请找出他们共同的祖先结点,请在节省空间的前提下,高效查找。
注意:请勿对该树做任何假设,它不一定是平衡树,也不一定有序。
答:虽然对树不能做任何假设,但是可以对树结点的数据结构做假设。设每个结点有一个指针域p,用于指向其父结点。那么只需沿着p指针向上找,找出两个结点的所有祖先,再找出公共祖先。
2.(25分)请使用C语言完成strnicmp的编码实现,要求不能调用任何其它的函数。strcnicmp完成两个ascii字符串的比较,忽略大小写(两个英文字母比较时,认为大小写无差别),最多比较n个字符(当两个字符串长度超过n时,就认为它们的长度都等于n),返回<0表示第一个字符串小于第二个字符串,返回>0表示第一个字符串大于第二个字符串,返回等于0时表示两个字符串相等。函数声明如下:int strnicmp(char const *s1, char const *s2, int n)
int strnicmp(char const *s1, char const *s2, int n)
{
	int i;
	for(i = 0; i < n; i++)
	{
		char a = s1[i], b = s2[i];
		if(a >= 'A' && a <= 'Z')a = a - 'A' + 'a';
		if(b >= 'A' && b <= 'Z')b = b - 'A' + 'a';
		if(a == b)
			continue;
		return a - b;
	}
	return 0;
}
四、附加题(3题,不计分)
1.下面哪个字符串不能被正则表达式"a(bc)*d?"匹配?
A. ad
B. abcd
C. abc
D. abccd
答:D
2.假如我们设计一个高效的服务器判断浏览器的算法,要求能根据User-Agend字符串判断出浏览器的类型和版本,请描述一下你的思路
答: http://www.cnblogs.com/dowinning/archive/2011/07/22/2113981.html在userAgent里面检索以下字符串:含有"windows nt":显而易见了,windows操作系统,nt后面的版本号可以判断OS版本;含有"mac":苹果的Mac OS X或者其他Mac OS内核的系统;含有"iphone":苹果iphone手机专有的,一般情况下也应该含有"mac";含有"ipad":苹果iPad平板电脑(资料表明iPad的浏览器userAgent同时含有"mac","iphone","ipad");含有"linux":Linux操作系统或者其他以linux作为内核的操作系统;含有"android":谷歌的Android操作系统,有可能是智能手机,也有可能是安卓版的平板电脑哦,一般情况下android平台上的userAgent也应该包含"linux";含有"unix","sunos","bsd"三者之一:Unix系统,其实对这个系统的用户体验问题,目前几乎可以不用考虑了;含有"ubuntu":ubuntu定制版的linux……
3.
答:不一定是最好的,就当是抛砖引玉
(1)将每条数据作为一个文件存入硬盘中,在内存中建立一个数组,每一个ID号对应一个下标,在这个位置上存储这个ID号对应的数据在硬盘中的地址
(2)因为ID可能有10^9个,不可能在内存中为每个ID号建立一个映射。将所有数据分成1000个文件存储。设某条数据的ID号为a,a%1000=b,那么这个条数据存储在第b个文件。平均每个文件中有1000条数据,大小为160KB。在内存中存储每个文件在硬盘上的地址。当要查询ID号为a的ID对,只需求出b的值及b文件在硬盘中的起始地址,读入文件并遍历查询。
(3)要查询排名,并且必须是在线算法。
还是用题(2)的方法,将所有数据为成1000个文件存储。并在内存中,为每个文件建立一个树结构,B+树、红黑树、二叉查找树,都可以,树中结点的关键字是成绩总分。使用这些树结构进行统计量查询。
若要查询ID号为a的数据,先用(2)的方法查到数据的分数,并算出总分s。然后依次遍历每个文件对应的统计树(共1000个),查询树中总分比s大的数据的个数n。每个文件中的n相加即可求出排名。


你可能感兴趣的:(面试题目)