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

xiaoxiao2021-02-28  124

 

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系统调用保护了一些只能在内核模式执行操作指令 答案:D17、假设在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 也没什么特殊的。

 

转载请注明原文地址: https://www.6miu.com/read-68620.html

最新回复(0)