欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:28153904       资源大小:376.84KB        全文页数:42页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、阿里巴巴实习生笔试题含答案答案: D内联函数:Tip :只有当函数只有10 行甚至更少时才将其定义为内联函数.定义 :当函数被声明为内联函数之后, 编译器会将其内联展开, 而不是按通常的函数调用机制进行调用 .优点 :当函数体比较小的时候 , 内联该函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短 , 性能关键的函数 , 鼓励使用内联 .缺点 :滥用内联将导致程序变慢 .内联可能使目标代码量或增或减, 这取决于内联函数的大小 .内联非常短小的存取函数通常会减少代码大小,但内联一个相当大的函数将戏剧性的增加代码大小 . 现代处理器由于更好的利用了指令缓存,小巧的代码往往执行更快。结

    2、论 :一个较为合理的经验准则是,不要内联超过 10行的函数 .谨慎对待析构函数 ,析构函数往往比其表面看起来要更长,因为有隐含的成员和基类析构函数被调用!另一个实用的经验准则: 内联那些包含循环或 switch语句的函数常常是得不偿失( 除非在大多数情况下 , 这些循环或 switch语句从不被执行 ).注意:有些函数即使声明为内联的也不一定会被编译器内联,这点很重要 ;比如虚函数和递归函数就不会被正常内联. 通常,递归函数不应该声明成内联函数.( 递归调用堆栈的展开并不像循环那么简单 ,比如递归层数在编译时可能是未知的, 大多数编译器都不支持内联递归函数 ). 虚函数内联的主要原因则是想把它

    3、的函数体放在类定义内, 为了图个方便 ,抑或是当作文档描述其行为, 比如精短的存取函数 .-inl.h文件:Tip :复杂的内联函数的定义 ,内联函数的定义必须放在头文件中理论上应该放在 .cc 文件中 ,能上有明显优势 .应放在后缀名为 -inl.h 的头文件中 , 编译器才能在调用点内联展开定义我们不希望 .h 文件中有太多实现代码.,.然而 , 实现代码除非在可读性和性如果内联函数的定义比较短小 , 逻辑比较简单 , 比如 , 存取函数的实现理所当然都应该放在类定义内实现代码放在 .h 文件里没有任何问题. 出于编写者和调用者的方便 ,.较复杂的内联函数也可以放到 .h 文件中 , 如果

    4、你觉得这样会使头文件显得笨重 , 也可以把它萃取到单独的 -inl.h 中 . 这样把实现和类定义分离开来 , 当需要时包含对应的 -inl.h即可。A 项错误,因为使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。B 项错误,头文件中不仅要包含 inline 函数的声明,而且必须包含定义,且在定义时必须加上 inline 。【关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用】C 项错误, inline 函数可以定义在源文件中,但多个源文件中

    5、的同名 inline 函数的实现必须相同。一般把 inline 函数的定义放在头文件中更加合适。D 项正确,类内的成员函数,默认都是 inline 的。【定义在类声明之中的成员函数将自动地成为内联函数】EF 项无意思, 不管是 class 声明中定义的 inline 函数,还是 class 实现中定义的 inline 函数,不存在优先不优先的问题,因为 class 的成员函数都是 inline 的,加了关键字 inline 也没什么特殊的答案: D 插入排序改良的冒泡最优也是 n答案: A答案: A答案: B答案: D先序遍历中左右中序遍历左中右后序遍历左右中答案: DTCP建立连接时首先客户

    6、端和服务器处于close 状态。然后客户端发送SYN同步位,此时客户端处于SYN-SEND状态,服务器处于lISTEN 状态,当服务器收到SYN以后,向客户端发送同步位SYN和确认码 ACK,然后服务器变为SYN-RCVD,客户端收到服务器发来的SYN和 ACK后,客户端的状态变成 ESTABLISHED(已建立连接 ) ,客户端再向服务器发送ACK确认码,服务器接收到以后也变成ESTABLISHED然后服务器客户端开始数据传输答案: F假设为 n 进值则 2*(n2)+4*(n1)+0 * 1*n+2=2* ( n3) +8*(n2)+8*(n1)化简后居然为很等式, n 为任意值答案: B

    7、用户空间与系统空间所在的内存区间不一样,同样,对于这两种区间, CPU的运行状态也不一样。 在用户空间中, CPU处于 用户态 ;在系统空间中, CPU处于 系统态 。答案: Cselectselect 能监控的描述符个数由内核中的 FD_SETSIZE限制,仅为 1024,这也是 select 最大的缺点,因为现在的服务器并发量远远不止 1024。即使能重新编译内核改变 FD_SETSIZE的值,但这并不能提高 select 的性能。每次调用select都会线性扫描所有描述符的状态,在select结束后,用户也要线性扫描fd_set数组才知道哪些描述符准备就绪,等于说每次调用复杂度都是O(

    8、n)的,在并发量大的情况下,每次扫描都是相当耗时的,很有可能有未处理的连接等待超时。每次调用 select 都要在用户空间和内核空间里进行内存复制fd描述符等信息。pollpoll 使用与 selectpollfd 结构来存储的后两点类似, pollfd ,突破了仍然需要将selectpollfd中描述符数目的限制。数组拷贝到内核空间,之后依次扫描fd的状态,整体复杂度依然是O(n)的,在并发量大的情况下服务器性能会快速下降。epollepoll 维护的描述符数目不受到限制,而且性能不会随着描述符数目的增加而下降。服务器的特点是经常维护着大量连接,但其中某一时刻读写的操作符数量却不多。 epo

    9、ll先通过epoll_ctl注册一个描述符到内核中,并一直维护着而不像poll每次操作都将所有要监控的描述符传递给内核;在描述符读写就绪时,通过回掉函数将自己加入就绪队列中,之后epoll_wait返回该就绪队列。也就是说,epoll基本不做无用的操作,时间复杂度仅与活跃的客户端数有关,而不会随着描述符数目的增加而下降。epoll在传递内核与用户空间的消息时使用了内存共享,而不是内存拷贝,这也使得epoll的效率比poll和select更高。答案: F答案: 4答案: 165/ 在 100-999 这 900 个自然数中 , 若将组成这个数的三个数字认为是三条线段的长度线段组成一个等腰三角形

    10、( 包括等边 ) 的共有 () 个 ., 那么是三条#include usingnamespace std;int main()int a = 0;int b = 0;int c = 0;int time = 0;for ( int i = 100; i c) | (b = c & (c + ba) | (c = a & (a +cb)time +;cout time endl;return 0;答案:关联数组1. 循环链表是另一种形式的链式存贮结构。特点是表中最后一个结点的向 头结点 ,整个链表形成环。指针域指( 1)单循环链表在单链表中, 将终端结点的指针域 NULL改为指向表头结点或开始

    11、结点即可。( 2)多重链的循环链表将表中结点链在多个环上。2 队列( Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表;3. 栈( stack )在计算机科学中是限定仅在栈顶进行插入或删除操作的线性表。4. “关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了 NULL)来索引它。 关联数组和数组类似,由以名称作为键的字段和方法组成。 它包含标量数据, 可用索引值来单独选择这些数据, 和数组不同的是,关联数组的索引值不是非负的整数而是任意的标量。这些标量称为 Keys,可以在以后用于检索数组中的数值。 关联数组的元素

    12、没有特定的顺序, 你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。5. 链表( Linked list )是一种常见的基础数据结构,是一种线性表,是一种物理存储单元上非连续、 非顺序的存储结构。 双向链表也叫双链表 ,是链表的一种,它的每个数据结点中都有两个 指针 ,分别指向直接后继和直接前驱。 所以, 从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向 循环链表。答案: B桶排序的平均时间复杂度为线性的 O(N+C),其中 C=N*(logN-logM) 。如果相对于同样的 N,桶数量 M越大,其效率越高,最好的时间复杂度达到 O

    13、(N)。当然桶排序的空间复杂度为 O(N+M),如果输入数据非常庞大, 而桶的数量也非常多,则空间代价无疑是昂贵的。 此外, 桶排序是稳定的。答案: B答案: F选项 AB是对称的, 所以肯定正确, 由 AB 可以看出题目的意图是, 这次交换靠的是物品的相对价值相当 (小张觉得橡皮比小刀更好, 小王觉得小刀比橡皮更好 ),但明显最后一个选项等值指的是他们的绝对价值答案: 161.struct 的对齐原则,注意不同的编译器有不同的效果。2. 不同的数据类型在 32 位和 64 位下所占字节的区别32 位编译器:bit,也就是char :1 个字节char* (即指针变量) : 4 个字节(4 个

    14、字节。同理 64 位编译器)short int : 2 个字节int : 4 个字节unsigned int : 4 个字节float: 4 个字节double: 8 个字节long: 4 个字节long long: 8 个字节unsigned long: 4 个字节32 位的寻址空间是232,即 32个64 位编译器:char:1 个字节char*( 即指针变量 ): 8short int : 2 个字节个字节int:4 个字节unsigned int : 4个字节float:double:4 个字节8 个字节long: 8 个字节long long: 8 个字节unsigned long:

    15、 8 个字节此处指针先占用 8 字节。 int 占用时总的字节数必须满足 8 的倍数即4 字节,满足要求不用补齐,16char占用一个字节,同答案: 100 300 300 500vector:erase() :从指定容器删除指定位置的元素或某段范围内的元素vector:erase() 方法有两种重载形式如下:iterator erase( iterator _Where);iterator erase( iterator _First, iterator _Last);如果是删除指定位置的元素时:返回值是一个迭代器,指向删除元素下一个元素 ;如果是删除某范围内的元素时: 返回值也表示一个迭代

    16、器,指向最后一个删除元素的下一个元素 ;本题中,当 *itor=300 成立时,删除第一个值为 300 的元素,同时 itor 指向下一个元素(即是第二个值为 300 的元素)在 for(;itor+)执行 itor ,itor 指向第三个值为 300 的元素,进入下一个循环进入循环满足 *itor=300 ,重复上面的过程,执行完循环, itor 执行值为 500 的元素。所有整个过程中,只删除了 2 个值为 300 的元素。答案: C 可以修改类的静态成员属于整个类而不是某个对象, 可以被类的所有方法访问, 子类当然可以父类静态成员;静态方法属于整个类, 在对象创建之前就已经分配空间, 类

    17、的非静态成员要在对象创建后才有内存, 所有静态方法只能访问静态成员, 不能访问非静态成员; 静态成员可以被任一对象修改,修改后的值可以被所有对象共享答案: DKMP算法 : 时间复杂度 O(p+N)答案: 8每套校服都包括短袖运动衫, 长袖运动衫 , 厚外套 , 运动长裤和运动短裤组成 . “每种运动服”有个备选方案。说明校服一共有25=32 种选择方案。任意 3 个学生都至少在一种运动服上选择互不相同, 假设有老师邀请了n 个学生参加挑选,n2n3,得出 n=8。说明 C32C答案: C看第二次抽样即可,与第一次抽的是同一张牌的概率是的话肯定是一样,不同张的时候如果抽中一样的牌的概率是1/4,不同张的概率是3/15 ,所以答案是3/4 ,同一张1/4+3/4 *3/15 = 2/5


    注意事项

    本文(阿里巴巴实习生笔试题含答案.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开