阿里巴巴实习生笔试题含答案.docx

上传人:b****5 文档编号:28153904 上传时间:2023-07-08 格式:DOCX 页数:42 大小:376.84KB
下载 相关 举报
阿里巴巴实习生笔试题含答案.docx_第1页
第1页 / 共42页
阿里巴巴实习生笔试题含答案.docx_第2页
第2页 / 共42页
阿里巴巴实习生笔试题含答案.docx_第3页
第3页 / 共42页
阿里巴巴实习生笔试题含答案.docx_第4页
第4页 / 共42页
阿里巴巴实习生笔试题含答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

阿里巴巴实习生笔试题含答案.docx

《阿里巴巴实习生笔试题含答案.docx》由会员分享,可在线阅读,更多相关《阿里巴巴实习生笔试题含答案.docx(42页珍藏版)》请在冰豆网上搜索。

阿里巴巴实习生笔试题含答案.docx

阿里巴巴实习生笔试题含答案

 

答案:

D

 

内联函数:

Tip:

只有当函数只有

10行甚至更少时才将其定义为内联函数.

定义:

当函数被声明为内联函数之后

编译器会将其内联展开

而不是按通常的函数调用

机制进行调用.

优点:

当函数体比较小的时候,内联该函数可以令目标代码更加高效

.对于存取函数以及

其它函数体比较短,性能关键的函数,鼓励使用内联.

缺点:

滥用内联将导致程序变慢.

内联可能使目标代码量或增或减

这取决于内联函数的

大小.

内联非常短小的存取函数通常会减少代码大小,

但内联一个相当大的函数将戏剧性

的增加代码大小.现代处理器由于更好的利用了指令缓存

小巧的代码往往执行更快。

结论:

一个较为合理的经验准则是

不要内联超过10

行的函数.

谨慎对待析构函数,

构函数往往比其表面看起来要更长

因为有隐含的成员和基类析构函数被调用

!

另一个实用的经验准则

:

内联那些包含循环或switch

语句的函数常常是得不偿失

(除非

在大多数情况下,这些循环或switch

语句从不被执行).

注意:

有些函数即使声明为内联的也不一定会被编译器内联

这点很重要;

比如虚函数和递

归函数就不会被正常内联

.通常,

递归函数不应该声明成内联函数

.(递归调用堆栈的展开

并不像循环那么简单,

比如递归层数在编译时可能是未知的

大多数编译器都不支持内联

递归函数).虚函数内联的主要原因则是想把它的函数体放在类定义内

为了图个方便,

或是当作文档描述其行为

比如精短的存取函数.

-inl.h

文件:

Tip:

复杂的内联函数的定义,

内联函数的定义必须放在头文件中

理论上应该放在.cc文件中,

能上有明显优势.

应放在后缀名为-inl.h的头文件中,编译器才能在调用点内联展开定义我们不希望.h文件中有太多实现代码

.

 

 

.

 

然而,实现代码除非在可读性和性

如果内联函数的定义比较短小,逻辑比较简单,比如,存取函数的实现理所当然都应该放在类定义内

实现代码放在.h文件里没有任何问题

.出于编写者和调用者的方便,

.

较复

 

杂的内联函数也可以放到.h文件中,如果你觉得这样会使头文件显得笨重,也可以把它

萃取到单独的-inl.h中.这样把实现和类定义分离开来,当需要时包含对应的-inl.h

即可。

A项错误,因为使用inline关键字的函数只是用户希望它成为内联函数,但编译器有

权忽略这个请求,比如:

若此函数体太大,则不会把它作为内联函数展开的。

B项错误,头文件中不仅要包含inline函数的声明,而且必须包含定义,且在定义时

必须加上inline。

【关键字inline必须与函数定义体放在一起才能使函数成为

内联,仅将inline放在函数声明前面不起任何作用】

C项错误,inline函数可以定义在源文件中,但多个源文件中的同名inline函数

的实现必须相同。

一般把inline函数的定义放在头文件中更加合适。

D项正确,类内的成员函数,默认都是inline的。

【定义在类声明之中的成员函数将

自动地成为内联函数】

EF项无意思,不管是class声明中定义的inline函数,还是class实现中定义

的inline函数,不存在优先不优先的问题,因为class的成员函数都

是inline的,加了关键字inline也没什么特殊的

 

答案:

D插入排序

 

改良的冒泡最优也是n

 

答案:

A

 

答案:

A

 

答案:

B

 

答案:

D

先序遍历中左右

中序遍历左中右

后序遍历左右中

 

答案:

D

TCP建立连接时

首先客户端和服务器处于

close状态。

然后客户端发送

SYN同步位,此时客户端处于

SYN-SEND状态,服务器处于

lISTEN状态,

当服务器收到

SYN以后,向客户端发送同步位

SYN和确认码ACK,

然后服务器变为

SYN-RCVD,

客户端收到服务器发来的

SYN和ACK后,客户端的状态变成ESTABLISHED(已建立连接),

客户端再向服务器发送

ACK确认码,

服务器接收到以后也变成

ESTABLISHED

然后服务器客户端开始数据传输

 

答案:

F

假设为n进值则[2*(n^2)+4*(n^1)+0]*[1*n+2]=2*(n^3)+8*(n^2)+8*(n^1)

 

化简后居然为很等式,n为任意值

 

答案:

B

用户空间与系统空间所在的内存区间不一样,同样,对于这两种区间,CPU的运行状态也不

一样。

在用户空间中,CPU处于"用户态";在系统空间中,CPU处于"系统态"。

 

答案:

C

 

select

select能监控的描述符个数由内核中的FD_SETSIZE限制,仅为1024,这也是select最大

的缺点,因为现在的服务器并发量远远不止1024。

即使能重新编译内核改变FD_SETSIZE的值,

但这并不能提高select的性能。

 

每次调用

 

select

 

都会线性扫描所有描述符的状态,在

 

select

 

结束后,用户也要线性扫描

fd_set

数组才知道哪些描述符准备就绪,等于说每次调用复杂度都是

O(n)的,在并发量大的

情况下,每次扫描都是相当耗时的,很有可能有未处理的连接等待超时。

每次调用select都要在用户空间和内核空间里进行内存复制

 

fd

 

描述符等信息。

poll

 

poll使用

与select

pollfd结构来存储

的后两点类似,poll

fd,突破了

仍然需要将

select

pollfd

 

中描述符数目的限制。

数组拷贝到内核空间,

 

之后依次扫描

 

fd

的状态,整体复杂度依然是

O(n)的,在并发量大的情况下服务器性能会快速下降。

epoll

epoll维护的描述符数目不受到限制,而且性能不会随着描述符数目的增加而下降。

服务器的特点是经常维护着大量连接,但其中某一时刻读写的操作符数量却不多。

epoll

先通过

epoll_ctl

注册一个描述符到内核中,

并一直维护着而不像

poll

每次操作都将所有要监

控的描述符传递给内核;在描述符读写就绪时,通过回掉函数将自己加入就绪队列中,之后

epoll_wait

返回该就绪队列。

也就是说,

epoll

基本不做无用的操作,时间复杂度仅与活跃的

客户端数有关,而不会随着描述符数目的增加而下降。

epoll

在传递内核与用户空间的消息时使用了内存共享,而不是内存拷贝,

这也使得

epoll

的效率比

poll

select

更高。

 

答案:

F

 

答案:

4

 

答案:

165

//在100-999这900个自然数中,若将组成这个数的三个数字认为是三条线段的长度线段组成一个等腰三角形(包括等边)的共有()个.

那么是三条

#include

usingnamespacestd;

 

intmain()

{

inta=0;

intb=0;

intc=0;

inttime=0;

for(inti=100;i<=999;i++)

 

{

c=i%10;

b=(i-c)/10%10;

a=i/100;

if(a==0||b==0||c==0)

{

continue;

}

if((a==b&&(a+b>c))||(b==c&&(c+b>a))||(c==a&&(a+

c>b)))

{

time++;

}

}

cout<

return0;

 

答案:

关联数组

1.循环链表是另一种形式的链式存贮结构。

特点是表中最后一个结点的

向头结点,整个链表形成环。

指针

域指

(1)单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可。

(2)多重链的循环链表——将表中结点链在多个环上。

2队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表;

3.栈(stack)在计算机科学中是限定仅在栈顶进行插入或删除操作的线性表。

4.“关联数组”是一种具有特殊索引方式的数组。

不仅可以通过整数来索引它,还可以使

用字符串或者其他类型的值(除了NULL)来索引它。

关联数组和数组类似,由以名称作

为键的字段和方法组成。

它包含标量数据,可用索引值来单独选择这些数据,和数组

不同的是,关联数组的索引值不是非负的整数而是任意的标量。

这些标量称为Keys,可以

 

在以后用于检索数组中的数值。

关联数组的元素没有特定的顺序,你可以把它们想象为一

组卡片。

每张卡片上半部分是索引而下半部分是数值。

5.链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,是一种物理存储单元

上非连续、非顺序的存储结构。

双向链表也叫双链表,是链表的一种,它的每个数据结点

中都有两个指针,分别指向直接后继和直接前驱。

所以,从双向链表中的任意一个结点

开始,都可以很方便地访问它的前驱结点和后继结点。

一般我们都构造双向循环链表

 

 

答案:

B

 

桶排序的平均时间复杂度为线性的O(N+C),其中C=N*(logN-logM)。

如果相对于同样的N,桶数量M越大,其效率越高,最好的时间复杂度达到O(N)。

当然桶排序的空间复杂度为O(N+M),如果输入数据非常庞大,而桶的数量也非常多,则空间代价无疑是昂贵的。

此外,桶排序是稳定的。

 

答案:

B

 

答案:

F

选项AB是对称的,所以肯定正确,由AB可以看出题目的意图是,这次交换靠的是物品的相

对价值相当(小张觉得橡皮比小刀更好,小王觉得小刀比橡皮更好),但明显最后一个

选项等值指的是他们的绝对价值

 

答案:

16

1.struct的对齐原则,注意不同的编译器有不同的效果。

2.不同的数据类型在32位和64位下所占字节的区别

 

32位编译器:

 

bit

 

,也就是

 

char:

1个字节

char*(即指针变量):

4个字节(

4个字节。

同理64位编译器)

shortint:

2个字节

int:

4个字节

unsignedint:

4个字节

float:

4个字节

double:

8个字节

long:

4个字节

longlong:

8个字节

unsignedlong:

4个字节

 

32位的寻址空间是

 

2^32,

 

即32

 

64位编译器:

char

1个字节

char*(即指针变量):

8

shortint:

2个字节

个字节

int

4个字节

unsignedint:

4

个字节

float:

double:

4个字节

8个字节

long:

8个字节

longlong:

8个字节

unsignedlong:

8个字节

 

此处指针先占用8字节。

int占用

时总的字节数必须满足8的倍数即

 

4字节,满足要求不用补齐,

16

 

char

 

占用一个字节,同

 

答案:

100300300500

vector:

:

erase():

从指定容器删除指定位置的元素或某段范围内的元素

vector:

:

erase()方法有两种重载形式

如下:

iteratorerase(iterator_Where);

iteratorerase(iterator_First,iterator_Last);

如果是删除指定位置的元素时:

返回值是一个迭代器,指向删除元素下一个元素;

如果是删除某范围内的元素时:

返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

本题中,当*itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素)

在for(;;itor++)执行itor,itor指向第三个值为300的元素,进入下一个循环

进入循环满足*itor==300,重复上面的过程,执行完循环,itor执行值为500的元素。

所有整个过程中,只删除了2个值为300的元素。

 

答案:

C可以修改

类的静态成员属于整个类而不是某个对象,可以被类的所有方法访问,子类当然可以父类静

 

态成员;

静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,所有静态方法只能访问静态成员,不能访问非静态成员;静态成员可以被任一对象修改,修改后的值可以被所有对象共享

 

答案:

D

KMP算法:

时间复杂度O(p+N)

 

答案:

8

每套校服都包括短袖运动衫

长袖运动衫,厚外套,运动长裤和运动短裤组成.“每种运动服”

有个备选方案。

说明校服一共有

2^5=32种选择方案。

任意3个学生都至少在一种运动服上选择互不相同

假设有老师邀请了

n个学生参加挑选,

n2

n

3

,得出n=8。

说明C

<32

 

答案:

C

看第二次抽样即可,与第一次抽的是同一张牌的概率是

的话肯定是一样,不同张的时候如果抽中一样的牌的概率是

 

1/4

 

,不同张的概率是

3/15,所以答案是

 

3/4,同一张

1/4+3/4*

3/15=2/5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1