阿里巴巴2016 实习生招聘 练习题(一)

 

1、有4副相同的牌,每副牌有4张不同的牌.先从这16张牌中,随机选4张出来.然后,在这4张牌中随机选择一张牌,然后把抽出的一张放回3张中,再随机选择一张牌.与上次选出的牌一样的概率是()
 A1/4
 B1/3
 C2/5
 D1/2
 E2/3
 F3/4
答案:C
说明:前面的条件只是告诉你4副牌是完全相同的,所以每一种牌都有4张。将这四张牌标记为A、B、C、D,假设第一次抽到的是A。
看第二次抽牌,重新抽回A的概率是1/4,抽到其他的概率是3/4。而在其他的3张牌中与A相同的牌存在的概率,就相当于在15张牌中抽到其他3张与A相同的牌的概率,3/15。所以最后的概率是1/4 + 3/4 * 3/15 = 2/5
2、某体校选择校服,每套校服都包括短袖运动衫,长袖运动衫,厚外套,运动长裤和运动短裤组成.每种运动服有个备选方案.老师请了部分学生来挑选自己喜欢的校服.结果发现任意3个学生都至少在一种运动服上选择互不相同,那么老师最多邀请了()名学生参加挑选.
 A7
 B8
 C9
 D10
 E11
 F12
答案:B
说明:每套校服都包括短袖运动衫,长袖运动衫,厚外套,运动长裤和运动短裤组成.“每种运动服”有个备选方案。说明校服一共有2^5=32种选择方案。任意3个学生都至少在一种运动服上选择互不相同,假设老师邀请了n个学生参加挑选,则Cn2<32<Cn3得n=8
3、给定的一个长度为N的字符串str,查找长度为P(P<N)的字符串在str中的出现次数.下面的说法正确的是()
 A不存在比最坏时间复杂度O(NP)好的算法
 B不存在比最坏时间复杂度O(N^2)好的算法
 C不存在比最坏时间复杂度O(P^2)好的算法
 D存在最坏时间复杂度为O(N+P)的算法
 E存在最坏时间复杂度为O(log(N+P))的算法
 F以上都不对
答案:D
说明:KMP算法。
KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。
4、下面关于一个类的静态成员描述中,不正确的是()
 A静态成员变量可被该类的所有方法访问
 B该类的静态方法只能访问该类的静态成员函数
 C该类的静态数据成员变量的值不可修改
 D子类可以访问父类的静态成员
 E静态成员无多态特性
答案:C
说明:类的静态成员属于整个类 而不是某个对象,可以被类的所有方法访问,子类当然可以访问父类静态成员;静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,所有静态方法只能访问静态成员,不能访问非静态成员;静态成员可以被任一对象修改,修改后的值可以被所有对象共享。
5、
#include <iostream>       
#include <vector>
using namespace std;
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for(itor=array.begin();itor!=array.end();itor++)
    {
        if(*itor==300)
        {
            itor=array.erase(itor);
        }
    }
    for(itor=array.begin();itor!=array.end();itor++)
    {
            cout<<*itor<<"";
    }
  return 0;
}
上面这个代码输出的是()
 A100 300 300 300  300 500
 B100 300 300 300 500
 C100 300 300 500
 D100 300 500
 E100 500
 F程序错误
答案:
6、
struct st
{
    int *p;
    int i;
    char a;
};
int sz=sizeof(struct st);
如上C程序,在64位处理器上运行后sz的值是什么?
 A24
 B20
 C16
 D14
 E13
 F12
答案:http://blog.csdn.NET/b_zhang/article/details/6818354
7、在自由交换的情况下,只考虑偏好,小张用自己的小刀换了小王的橡皮.关于这个交换以下说法错误的是:
 A小张觉得橡皮比小刀更好
 B小王觉得小刀比橡皮更好
 C小张和小王总的财富里没有发生变化
 D小张和小王的效用值增加了
 E如果把小王换成小吴,那么这个交换可能就不会发生
 F小刀和橡皮等值
答案:F
8、有100个金币,分给10个人.第一个金币等概率地分给10个人之一.之后的每一个金币分配给第K个人的概率正比于这个人已经持有的金币数+1.在这样的分配机制下,关于每个人最终的金币个数的分布的说法错误的是()
 A每个人得到的金币的个数的期望是相等的
 B每个人的金币个数接近均匀分布
 C第一个金币给哪个人,哪个人的最终金币个数的期望就会更大
 D在中间的某个阶段金币个数越多的人,未来获得金币的可能性越大
 E以上说法都是正确的
 F以上说法都是不正确的
答案:C 
9、7的2014次方这个整数的十位数字数是()
 A0
 B1
 C3
 D4
 E5
 F7
答案:D
说明:以4位周期2014/4余2
10、某创业团队的一个很大的办公室(障碍和遮挡可以忽略)里有一个WIFI源,有1个工位由于距离WIFI源太远而接收不到信号.为了提高该工位的联网质量,准备在工位和WIFI信号源之间安装一个无线AP(相当于中继的,可以中转该工位上的计算机和WIFI之间的信号).只考虑从WIFI发出的信号,如果AP离WIFI源太近,就起不到中继的作用,如果AP离工位太远则可能连不上WIFI.因此AP有一个最佳的安装位置,那么关于AP最佳安装位置的说法正确的是()
 A如果WIFI源功率越大,那么AP最佳安装位置越靠近WIFI源
 B如果WiFi源功率越大,那么AP最佳的安装位置越靠近工位
 CWIFI源功率和AP最佳安装位置无关.
 DAP最佳安装位置在工位和WIFI信号源连线之外
 EAP最佳安装位置在工位和WIFI信号源连线中点
 F以上说法都不对
答案  :B
11、下面的哪种排序算法在算复杂度平均不是O(nlogn)的?
 A快速排序
 B桶排序
 C合并排序
 D二叉树排序树排序
 E堆排序
答案:B
桶排序:n+N*(logN-logM)

12、下面哪个不是线性表?
 A循环链表
 B队列
 C栈
 D关联数组
 E空字符串数组
 F双向链表
答案:D
13、在100-999这900个自然数中,若将组成这个数的三个数字认为是三条线段的长度,那么这三条线段组成一个等腰三角形(包括等边)的共有()个.
 A45
 B91
 C121
 D142
 E156
 F165
答案:F
说明:
先考虑等边三角形情况
则a=b=c=1,2,3,4,5,6,7,8,9,此时n有9个
再考虑等腰三角形情况,若a,b是腰,则a=b
当a=b=1时,c<a+b=2,则c=1,与等边三角形情况重复;
当a=b=2时,c<4,则c=1,3(c=2的情况等边三角形已经讨论了),此时n有2个;
当a=b=3时,c<6,则c=1,2,4,5,此时n有4个;
当a=b=4时,c<8,则c=1,2,3,5,6,7,有6个;
当a=b=5时,c<10,有c=1,2,3,4,6,7,8,9,有8个;
由加法原理知n有2+4+6+8+8+8+8+8=52个
同理,若a,c是腰时,c也有52个,b,c是腰时也有52个
所以n共有9+3×52=165个 
14、有无限的水源,一个5L无刻度桶和一个7L无刻度桶,则只利用这两个无刻度桶,将不能获得()L水
 A2
 B3
 C6
 D8
 E11
 F以上均能获得
答案:F
说明:均可获得。
2:7L装满,倒满5L,剩2L
3:5L装满,倒7L;再装满5L,倒满7L,剩3L
6:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,再倒满7L,剩1L;倒给7L,5升装满,共6L。
8:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,共8L
11:7L装满,倒满5L,剩2L;倒给5L,7L装满,再倒满5L,剩4L;倒给5L,7L倒满,共11L
15、关于linux的I/O复用接口select和epoll,下列说法错误的是()
 Aselect调用时会进行线性遍历,epoll采用回调函数机制,不需要线性遍历
 Bselect的最大连接数为FD_SETSIZE
 Cselect较适合于有大量并发连接,且活跃链接较多的场景
 Depoll较适用于有大量并发连接,但活跃连接不多的场景
 Eepoll的效率不随FD数目增加而线性下降
 Fepoll通过共享存储实现内核和用户的数据交互
答案 :C

 

说明:select 和 epoll效率差异的原因:select采用轮询方式处理连接,epoll是触发式处理连接。 

Select: 

 

  1.Socket数量限制:该限制可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 

 

  2.操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。 

 Epoll 

 

  1.Socket数量无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限制(默认4k)。 
  2.操作无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不需要遍历轮询。 
  但当所有的Socket都活跃的时候,所有的callback都被唤醒,会导致资源的竞争。既然都是要处理所有的Socket, 
  那么遍历是最简单最有效的实现方式。
16、下面关于系统调用的描述中,错误的是()
 A系统调用把应用程序的请求传输给系统内核执行
 B系统调用中被调用的过程运行在"用户态"中
 C利用系统调用能够得到操作系统提供的多种服务
 D是操作系统提供给编程人员的接口
 E系统调用给用户屏蔽了设备访问的细节
 F系统调用保护了一些只能在内核模式执行操作指令
答案:D
17、假设在n进制下,下面的等式成立,n值是()240*12=2880
 A19
 B18
 C17
 D16
 E15
 F以上都不对
18、在TCP/IP建立连接过程中,客户端和服务器端的状态转移说法错误的是?
 A经历SYN_RECV状态
 B经历SYN_SEND状态
 C经历ESTABLISHED状态
 D经历TIME_WAIT状态
 E服务器在收到syn包时将加入半连接队列
 F服务器接受到客户端的ack包后将从半连接队列删除

 

答案:D

 

说明:TCP建立连接时,首先客户端和服务器处于close状态。然后客户端发送SYN同步位,此时客户端处于SYN-SEND状态,服务器处于lISTEN状态,当服务器收到SYN以后,向客户端发送同步位SYN和确认码ACK,然后服务器变为SYN-RCVD,客户端收到服务器发来的SYN和ACK后,客户端的状态变成ESTABLISHED(已建立连接),客户端再向服务器发送ACK确认码,服务器接收到以后也变成ESTABLISHED。然后服务器客户端开始数据传输
19、以下二叉树的后序遍历结果是() 
 A(ABCDEF)
 B(ABDECF)
 C(FCEDBA)
 D(DEBFCA)
 E(FEDCBA)
 F(EDBFCA)
答案:D
说明:先序:根左右;中序:左根右;后序:左右根
20、甲乙两个一样大小的杯子各自分别装着小于一半容积的水和酒精.现将甲杯子里的一部分水倒入乙杯子;之后将乙杯子的混合液倒入一些到甲杯子,此时甲杯子的液体恢复到最初的状态.假定水和酒精混合之后的体积等于混合之前的体积之和.那么以下说法正确的是()
 A甲杯子里的酒精体积等于乙杯子里的水的体积
 B甲杯子里的酒精的体积等于乙杯子里的酒精的体积
 C甲杯子里的水的体积等于乙杯子里的酒精的体积
 D甲杯子里的水的体积等于乙杯子里的水的体积
 E甲杯子里的液体高于乙杯子里的液位
 F以上都不对
答案:A
21、一个黑盒子里有若干红球和黑球,随机取出一个球是红球的概率是p.现在从黑盒子中拿出等量的红球和黑球后,随机取出一个球是红球的概率是q,如果p<q,那么以下说法正确的是()
 A最初红球的个数小于黑球的个数
 B最初红球的个数大于黑球的个数
 C最初红球的个数是黑球的的2倍
 D最初红球的个数是黑球的1/2
 E无法判断最初红球和黑球谁多谁少
22、
main()
{
    char *a[]={"work","at","alibaba"};
    char **pa=a;
    pa++;
    printf("%s",*pa);
}
下列程序的执行结果是()
 Aat
 Batalibaba
 Cork
 Dorkatalibaba
 E编译错误
 F运行溢出

答案:A
说明:a[ ]就是*a,那么就是**a换成了**pa
23、对N个数进行排序,在各自最优条件下以下算法复杂度最低的是(   )
 A快速排序
 B堆排序
 C冒泡排序
 D插入排序
 E选择排序
 F归并排序

 

答案:D

 

24、关于c++的inline关键字,以下说法正确的是()
 A使用inline关键字的函数会被编译器在调用处展开
 B头文件中可以包含inline函数的声明
 C可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数
 D定义在Class声明内的成员函数默认是inline函数
 E优先使用Class声明内定义的inline函数
 F优先使用Class实现的内inline函数的实现
答案:D
说明:
A项错误,因为使用inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。
B项错误,头文件中不仅要包含inline函数的声明,而且必须包含定义,且在定义时必须加上inline。【关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅inline 放在函数声明前面不起任何作用】

 

C项错误,inline函数可以定义在源文件中,但多个源文件中的同名inline函数的实现必须相同。一般把inline函数的定义放在头文件中更加合适。

D 项正确,类内的成员函数,默认都是 inline的。【定义在类声明之中的成员函数将自动地成为内联函数】

 

EF项无意思,不管是class声明中定义的 inline函数,还是class实现中定义的inline函数,不存在优先不优先的问题,因为class的成员函数都是inline的,加了关键字 inline
也没什么特殊的。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值