阿里巴巴笔试题目Word文档下载推荐.docx
《阿里巴巴笔试题目Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《阿里巴巴笔试题目Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
2A2B,那么牛妹最少还要猜____次才能保证一定得到4A0B的结果。
A.0
B.1
C.2
D.3
E.4
F.5
经过分析,只有可能是以下四种情况
2413
3142
3421
4312
现在考虑是否可以知询问一次就得到答案。
A+B的总数量肯定无法提供额外的信息。
所以我们只能通过0A,1A,2A,3A,4A来获取信息。
如果要达到3A,则只能至少猜一个1,2,3,4以外的数字。
这样的话,这个位置就废掉了,没啥意义。
所以我们只能通过0A,1A,2A,4A分别区分四种情况
如果用到4A,如猜2413
2413=>
2A
3142=>
0A
3421=>
1A
4312=>
无法区分两个1A的情况,由对称性,猜其他三个类似。
所以我们至少再猜两次才能知道答案。
所以我们至少再猜三次才能保证得到4A
5.有关下述Java代码描述正确的选项是____。
1
2
3
4
5
6
7
8
publicclassTestClass{
privatestaticvoidtestMethod(){
System.out.println("
testMethod"
);
}
publicstaticvoidmain(String[]args){
((TestClass)null).testMethod();
A.编译不通过
B.编译通过,运行异常,报NullPointerException
C.编译通过,运行异常,报IllegalArgumentException
D.编译通过,运行异常,报NoSuchMethodException
E.编译通过,运行异常,报Exception
F.运行正常,输出testMethod
F
1)此处是类对方法的调用,不是对象对方法的调用。
2)方法是static静态方法,直接使用"
类.方法"
即可,因为静态方法使用不依赖对象是否被创建。
null可以被强制类型转换成任意类型(不是任意类型对象),于是可以通过它来执行静态方法。
3)非静态的方法用"
对象.方法"
的方式,必须依赖对象被创建后才能使用,若将testMethod()方法前的static去掉,则会报空指针异常。
此处也验证了2)的观点
当然,不管是否静态方法,都是已经存在的,只是访问方式不同。
6.以下函数中,和其他函数不属于一类的是_____。
A.fread
B.gets
C.getchar
D.pread
E.getline
F.scanf
D
Pread是系统调用,其他为IO函数
常见文件系统系统函数
fcntl
文件控制
open
打开文件
creat
创建新文件
close
关闭文件描述字
read
读文件
write
写文件
readv
从文件读入数据到缓冲数组中
writev
将缓冲数组里的数据写入文件
pread对文件随机读
pwrite
对文件随机写
7.有一个类A,其数据成员如下:
9
10
classA{
...
private:
inta;
public:
constintb;
float*&
c;
staticconstchar*d;
staticdouble*e;
};
则构造函数中,成员变量一定要通过初始化列表来初始化的是:
______。
A.abc
B.bc
C.bcde
D.bcd
E.b
F.c
B
构造函数中成员变量一定要通过初始化列表来初始化的有一下几种情况
(1)const常量成员,因为常量只能初始化,不能赋值,所以必须放在初始化列表中
(2)引用类型,引用类型必须在定义的时候初始化,不能重新赋值,所以必须放在初始化列表中
(3)没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数
注:
static类要在类外初始化,不用再初始化列表中。
8.在如下8*6的矩阵中,请计算从A移动到B一共有__种走法。
要求每次只能向上或向右移动一格,并且不能经过P。
A:
456
B:
492
C:
568
D:
626
E:
680
F:
702
8*6的矩阵,从左下角A到右上角B,一共需要走12步,其中5步向上,7步向右,因此总的走法一共有C(12,5)=792种,但题目规定不能经过P,因此需要减去经过P点的走法。
经过P的路径分为两部分,从A到P,从P到B。
同理,从A到P的走法:
C(6,2)=15;
同理,从P到B的走法:
C(6,3)=20;
因此从A到B经过P点的走法有15*20=300种,
所以从A到B不经过P点的走法有792-300=492种。
9.某单链表有5个元素,设单链表的节点结构为(data,next),5个元素的data依次为(1、2、3、4、5),已知指针q指向节点3,指针p指向节点4,那么下面操作能将链表变为data依次为(1、2、3、5)的是____。
(其中temp为节点类型指针,默认指向NULL)
A.q=p->
next;
B.p=q->
C.p->
next=q->
D.q->
next=p->
deleteq;
E.p->
data=p->
next->
data;
p->
deletep->
F.temp=p->
next=temp->
data=temp->
deletetemp;
temp=NULL;
//D:
q->
next=p->
next=null;
deletep;
把节点5的值赋给节点4,然后移去节点5.
//E:
10.两人在一个n个点的无向完全图上进行游戏,每次可以选择当前图中两个端点度数奇偶性相同的边删除,谁不能操作谁输,则在n=1,2,3,……,9,10中,有__个图先手有必胜策略
答:
五个,N个点的无向完全图边数为:
N*(N-1)/2;
先手获胜必须总数为奇数;
N=1,2,3,……,9,10代入公式,为奇数的只有N=2,3,6,7,10这5个
11.A为整数数组,N为A的数组长度,请问执行以下代码,最坏情况下的时间复杂度为____。
11
voidfun(intA[],intn){
for(inti=n-1;
i>
=1;
i--){
for(intj=0;
j<
i;
j++){
if(A[j]>
A[j+1]){
inttmp=A[j+1];
A[j+1]=A[j];
A[j]=tmp;
}
∙O(N)
∙O(N^2)
∙O(Nlog(N))
∙O(log(N))
∙O(N^3)
∙无法确定
B
冒泡排序法,最坏情况为(n-1)+(n-2)+……+1=n(n-1)/2
所以复杂度是N^2
12.当前国内A股市场的新股发行采取的是抽签申购的方式。
假设最多可以申购某新股X1万股,以1千股为单位分配一个号码进行抽签,每个号码抽中与否是相互独立的且概率为0.5%,X的发行价是10元,涨至15元和20元的概率均为50%,那么在最大申购的情况下盈利的期望是____。
A.250
B.300
C.325
D.375
E.425
F.500
最多申购10000股,1000股分配一个号,则顶格申购就会产生10个号,每个号码是否中签独立,就是说中签号为伯努利事件,服从B(10,0.005),
中签的期望为E=n*p=10*0.005=0.05.
发行价是10元,涨至15元和20元的概率均为50%,则如果中签后每股收益的期望为(15-10)*0.5+(20-10)*0.5=7.5。
因此总的收益为中签的概率期望*中签后每股收益的期望*股数=0.05*7.5*1000=375
13.下面数据结构能够支持随机的插入和删除操作、并具有较好的性能的是____。
正确答案:
B
你的答案:
A(错误)
A.数组和链表
B.链表和哈希表
C.哈希表和队列
D.队列和堆栈
E.堆栈和双向队列
F.双向队列和数组
1,数组是在定义的时候申请一块连续的内存空间,访问某个元素只需要通过下标就可以,但是随机插入和删除都要移动后面所有的元素,所以,数组肯定不行;
2,链表,是非连续的空间,通过指针访问,所以随机插入和删除通过指针之间的操作很方便,但是如果要查询一个数的时候还是得依次便利,但是题目问的是随机插入和删除,所以,链表可以;
3,栈,所有的操作都是在栈顶,如果要随机插入或者删除某个数也必须依次对其他数就行操作,所以,栈也排除;
4,队列,通过队头和队尾指针进行读入数据和删除数据,如果直接在队尾添加数据很方便,但是,题目中是随机,所以,队列排序;
5,哈希表通过键值对操作,只要知道相关的key很容易就行读取和删除,插入某个元素也通过key很方便,所以,哈希表肯定可以;
14.一个英雄基础攻击力为100,携带了三件暴击武器,武器A有40%的概率打出2倍攻击,武器B有20%的概率打出4倍攻击,武器C有10%概率打出6倍攻击,各暴击效果触发是独立事件,但是多个暴击效果在一次攻击中同时触发时只有后面武器的暴击真正生效,例如一次攻击中武器A判定不暴击,武器B和武器C都判定触发暴击,那么这次攻击实际是600攻击力。
那么这个英雄攻击力的数学期望是____。
C
F(错误)
A.186.6
B.200
C.232.8
D.256.8
E.320
F.332.6
(600*10%)//使用武器C
+(400*90%*20%)//使用武器B,需要保证没有使用武器C,否则因为多个暴击效果在一次攻击中同时触发时只有后面武器的暴击真正生效,武器B不生效
+(200*90%*80%*40%)
//同理,使用武器A,需要保证武器B和C都没有使用
+(100*60%*80%*90%)//没有使用任何武器
=232.8
15.某操作系统采用分页存储管理方式,下图给出了进程A和进程B的页表结构。
如果物理页的大小为512字节,那么进程A与进程B的物理内存总共使用了____字节。
进程A页表:
进程B页表:
逻辑页
物理页
逻辑页
物理页
0
9
0
1
1
2
1
3
4
2
4
3
6
3
7
2
5
5
E(错误)
A.4608
B.3584
C.4096
D.5120
E.2560
F.2048
物理页可以在进程间共享,两个进程共使用了1,2,3,4,6,7,9,共7个物理页。
故:
7*512=3584
16.有1,2,3,......无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。
A.2
B.2.4
C.2.8
D.3
E.3.2
F.3.6
G.4
E
还是设f(i)表示在第i号格子上时,期望再走多少步结束。
则从1号开始走,我们的目标是求f
(1)
f
(1)=0.5*(1+f
(2))+0.5*(1+f(3))
即有0.5概率走一步到2号,0.5概率走两步到3号
f
(2)=0.5*(1+f(3))+0.5*(1+f(4))
即有0.5概率走一步到3号,0.5概率走两步到4号
f(3)=0.5*(1+f(4)
)+0.5*(1+f
(1))
即有0.5概率走一步到4号,0.5概率走两步到5号(5号即可看做1号)
f(4)=0
走到4号就结束了,故为0
可以解上述方程,得f
(1)=18/5.
17.从1,2,3,......,49,50里选择一个集合S,使得若x属于S,则2x不属于S,则S最多能有____个元素。
D
D(正确)
A.25
B.27
C.30
E.33
F.36
H.37
18.考虑以下二分查找的代码:
#include<
stdio.h>
intbsearch(intarray[],intn,intv)
{
intleft,right,middle;
left=0,right=n-1;
while(left<
=right){
middle=left+(right-left)/2;
if(array[middle]>
v){
right=middle;
}elseif(array[middle]<
v){
left=middle;
}else{
returnmiddle;
}
return-1;
对于输入array为:
{2,6,8,10,13,25,36,45,53,76,88,100,127},n=13,v=127时,
运行bsearch函数,while循环调用的次数为____。
F你的答案:
F(正确)
A.1
B.3
C.4
D.5
E.6
F.无数次
本题是一个坑,这是不正确的二分查找法,当中间的没有找到的时候,left和right下标应该左移或者右移(left++,right--),实质是(
right=middle-1,left=middle+1),才不会出现除以二向下取值的时候出现无限循环。
19.在一个axb的整数矩阵中,寻找最长的严格递减数字序列。
数列可以沿着横或竖的方向,但不能重叠,该问题的最优复杂度是____。
举例来说,以下是一个3x5的矩阵,其结果如下:
A.O(M*N)
B.O(M+N)
C.O(Mlogn)
D.O(N*logM)
E.O(M^2*N^2)
F.O(max(M,N))
A
此题只看结果,最优情况就是至少要把这m*n个数每个读一遍,所以最优就是O(m*n)
20.设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为______。
B(正确)
A.12
B.13
C.14
D.15
E.16
F.17
设度为0,为1,为2的节点分别有N0,N1,N2.则有以下等式
N0+N1+N2=1*N1+2*N2+1
解方程,得N0=N2+1,题中说N0=3,则N2=2;
故N0+N1+N2=2+3+8=13
21.一台机器对200个单词进行排序花了200秒(使用冒泡排序),那么花费800秒,大概可以对多少个单词进行排序
A
A(正确)
400
500
600
700
800
900
冒泡排序的时间复杂度为O(N^2),
如果N^2=200,当M^2=800时,可以得到M/N=2,因此当N==200,M=400
22.优衣库最近退出了京东平台,你怎么看待这件事?
如果你是阿里的产品经理,如何设计一款产品(or运营方案)来提升优衣库的销量?
23.现在大型超市食品类柜台经常有试吃活动
A.请谈谈顾客是怎样的消费心理,这对用户的购买率是否有影响?
为什么?
B.如果有一位没用任何销售技能,甚至不能说话的销售员,你是否愿意让他去试吃柜台为用户服务,这对用户的购买率是否有影响?
24.请分析手机淘宝中的淘抢购频道