阿里巴巴集团2013实习生招聘技术类笔试题(B)

一、单向选择题

1、在常用的网络协议中,___B__是面向连接的、有重传功能的协议。

  A. IP     B. TCP     C. UDP     D. DXP

2、500张骨牌整齐地排成一行,按顺序编号为1、2、3、......、499、500,第一次拿走所有奇数位置上的骨牌,第二次再从剩余骨牌中拿走所有奇数位置上的骨牌,依次类推,请问最后剩下的一张骨牌的编号为__B__。

  A. 128     B. 250     C. 256     D. 500

解析:

  第一次后剩下250个偶数:2,4,6,8......498,500

  将它们除以2得到1-250的一列

  第二次后剩下125个偶数:2,4,6,8......248,250

  将它们除以2得到1-125的一列

  第三次后剩下62个偶数2,4,6,8.......122,124

  将它们除以2得到1-62的一列

  第四次后剩下31个偶数2,4,6,8......60,62

  将它们除以2得到1-31的一列

  同理,第五次后到15 第六次除后到7 第七次除后到3 第八次除后最后一张

  所以,它的编号为1*2^8=256

3、两个线程并发执行以下代码,假设a是全局变量,初始值为1,那么以下输出中__D__是不可能的。

 void foo()

 {

 ++a;

 printf(“%d_”,a);

 }

  A. 3_2_     B. 2_3_     C. 3_3_     D. 2_2_

解析:

  对于A选项:线程1先执行++a,此时a=2,

  对于B选项:线程1先执行++a,此时a=2,然后线程1输出;线程2执行++a,此时a=3,最后线程2输出;

  对于C选项:线程1先执行++a,此时a=2,然后中断,线程2执行++a,此时a=3,线程2输出,最后线程1输出;

  对于D选项:这个是不可能的。

4、某系统采用36进制数字来表示一个字符串,36个字符0-9,a-z分别由数字0-35表示,则10进制数字872581表示字符串___B___。

  A. imc     B. ipad     C. iphone     D. ipod

解析:(872581)10=(18 25 10 13)36,所以为ipad

5、以下代码输出的结果是:___B___

  A. 81     B. 27     C. 9     D. 3

6、关于数据结构的以下说法,错误的是___C___。

  A. 红黑树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

  B. B+树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

  C. Hash表插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(n)

  D. 排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n)

解析:

  Hash表的查找、插入和删除都是O(1)。

7、哈夫曼编码是一种无损二进制熵编码算法,其加权路径长度最小,字符串“alibaba”的二进制哈夫曼编码有___C__位(bit)。

  A. 11     B. 12     C. 13     D. 14

解析:

  a的个数为3,b的个数为2,l的个数为1,i的个数为1。

  最后构造的哈夫曼树,编码如下所示。

  编码: 个数

  a:1     3

  b:01   2

  l:000   1

  i:001   1

  所以,哈夫曼编码长度为:3*1 + 2*2 + 3*1 + 3*1 = 13。

8、节点按中序遍历为xyz的二叉树可能有__D__种。

  A. 2     B. 3     C. 4     D. 5

解析:

  注意左右子树的问题就OK了。

9、在4个元素的集合上可定义的互不相同的划分有___B___种。

  A. 14     B. 15     C. 16     D. 17

解析:

  集合A的一个划分确定A的元素间的一个等价关系。

  如果划分为4个子集,只有一种划分;

  如果划分为3个子集,那么三个子集的元素必须是1、1、2个。有C(4,2)=6种划分;

  如果划分为2个子集,那么可能是1+3,也可能是2+2.在1+3的情况,有四种方法去选择集合的元素,所有有4种。如果是2+2,有C(4,2)=3种。所以,总共有7种两个子集的划分;

  如果划分为1个子集,只有一种划分;

  所以,总共有1+6+7+1 = 15种划分。

10、以下关于C语言中指针的说法错误的是:___C__。

  A. 指针的值是一个地址

  B. 非法指针是指该指针的值不是一个已经分配内存的地址

  C. 两个指向同类型地址的指针之间做减法是没有意义的

  D. 指针的指针占用的内存空间和其他指针占用的内存空间相同

二、不定向选择题

13、以下关于内存泄露的说法正确的是_____。《此题不确定》

  A. 内存泄露是操作系统内存管理出错导致的问题

  B. 单线程程序不可能内存泄露

  C. 如果一个进程在运行过程中占用的内存无限制的上升,那么该进程有内存泄露

  D. 只有进程在退出之前释放了所有分配的内存,那么就不会有内存泄露

  E. 内存泄露仅仅出现在C/C++程序的问题,Java程序不会出现内存泄露

解析:

  对于A选项,内存泄露通常是指分配出去的内存使用完毕后没有释放掉,未被回收,所以,A应该不对。

  对于B选项,肯定是不对的,单线程也会出现内存泄露;

  对于E选项,肯定是不对的,Java程序也会出现内存泄露的问题;

14、关于进程和线程,下面说法正确的是__BCD__

  A. 线程是资源分配和拥有的单位

  B. 线程和进程都可以并发执行

  C. 在linux系统中,线程是处理器调度的基本单位

  D. 线程的粒度小于进程,通常多线程比多进程并发性更高

  E. 不同的线程共享相同的栈空间

解析:

  对于A选项,进程是系统资源分配和调度的基本单位;而线程是处理器调度的基本单位;

  对于E选项,应该是属于同一进程的不同线程共享相同的栈空间;

第三部分 填空与问题

16、某种物理机一年的无故障概率为p,每台物理机通过虚拟技术可以虚拟出v台虚拟机,假定在物理机没出现故障的情况下虚拟机不会出现故障,那么每台虚拟机一年无故障的概率为___p___。如果有m台这样的物理机,虚拟出mv台虚拟机,通过某种分布式容错技术,可以使基于这些虚拟机搭建的服务只要有一台虚拟机无故障,这个服务便可以无故障。那么这个服务一年的无故障概率为__1-(1-p)^m_。如果想通过同样数量的虚拟机实现更高的无故障概率,但不限制物理机的数量,可以采用的方法是_降低每台物理机虚拟出的虚拟机的数量_。

解析:

17、宿舍内5个同学一起玩对战游戏,每场比赛有一些人作为红方,另一些人作为蓝方,请问至少有多少场比赛,才能使任意两个人之间有一场红方对蓝方和一场蓝方对红方的比赛?请写出思路及结果。

解析:

  4场。

18、读取并处理一个文件中的记录,每条记录处理会产生一个对应的结果,不同记录的处理过程之间互不依赖,结果输出到另一个文件中,某程序员实现了该处理程序的单线程版本,运行时发现CPU使用率达到80%。

(1)为何CPU使用率不是100%?

(2)假定程序运行的机器的核数在4到16不等,如何设计程序,使该处理程序运行的最快?

(3)在一个n核机器上,速度最快是原来的程序的多少倍?

解析:

  (1)CPU使用率达不到100%,有可能是CPU分配给该进程的时间片用完,其他进程抢占了CPU,从而导致该程序阻塞;

  (2)假设该机器的核数为n,其中4<=n<=16,以及文件中有m条记录,那么可以创建n个线程,每个线程并发 最多 处理不同的m/n+1条记录,这样会使该处理程序运行的最快;

  (3)最多为n倍。

19、请实现一个程序,能对点分字符串按段翻转。如”www.taobao.com”翻转为”com.taobao.www”,”sports.sina.com.cn”翻转为”cn.com.sina.sports”。要求时间复杂度为O(n),空间复杂度为O(1),结果保存在参数指针所指的空间中。

解析:

  解决方法是这样的,分为两步:

(1)首先将整个字符串逐个反转,例如www.taobao.com 处理后就是 moc.oaboat.www;

(2)再在段内进行一次反转,结果就是com.taobao.www了;

  

 void Swap(char *a, char *b)
{
char tmp = *a;
*a = *b;
*b = tmp;
}
void reverse(char *str, int first, int last)
{
if(str == NULL || first > last){
return;
}
int i = first, j = last;
while(i < j){
Swap(&str[i], &str[j]);
i++;
j--;
}
}
char* RerveAll(char *str)
{
if(str == NULL){
return NULL;
}
//反转整个字符串
reverse(str, , strlen(str) - );
//段内逐步反转
size_t i = ;
int istart = ;
for(i = ; i < strlen(str); i++){
if(str[i] == '.')
{
reverse(str, istart, i - );
istart = i + ;
}
}
//最后一个'.'后面的字符串
reverse(str, istart, i - );
return str;
}

第四部分 综合题

  某B2C网站有1亿用户和200万商品,每一个用户都有自己喜欢的若干件商品,如果两个用户都喜欢同一件商品,我们定义中两个用户有一个“同好商品”,“同好度”为两个用户的同好商品数和这两个用户中至少有一人喜欢的商品数的比值。同好度衡量了两个用户之间的商品喜好的接近程序,这有着十分重要的用途。

  请设计一个算法,计算每一个用户的同好用户集合及同好度。

  输入数据:多个文件,每个文件的数据有多行,每一行的数据格式如下:用户ID喜欢的商品ID1 喜欢的商品ID2 .......喜欢的商品n,其中用户ID和商品ID均为32位整数,中间以空格分隔。

  如:

  16 1001 1002 3003

  输出数据:一个或多个文件,每一行的数据格式如下:

  用户ID 同好用户ID1:同好度 同好用户ID2:同好度......同好用户IDn:同好度

  中间以空格隔开。算法可以描述为伪代码。


  转载请注明:http://www.cnblogs.com/iloveyouforever/

阿里巴巴2013年实习生笔试题B的更多相关文章

  1. 阿里巴巴2013年实习生笔试题A

    一.单项选择题 1.下列说法不正确的是:(B) A.SATA硬盘的速度速度大约为500Mbps/s B.读取18XDVD光盘数据的速度为1Gbps C.前兆以太网的数据读取速度为1Gpbs D.读取D ...

  2. [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】

    /*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...

  3. Microsoft 2013校园招聘笔试题及解答

    Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1.      Which of the following callingconvension(s) suppo ...

  4. 诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点

    总结一下Microsoft Devices Group的软件类笔试题,全部笔试题分两份试卷,逻辑题一份和软件測试题一份,仅仅总结技术题喽~题目全英文,仅仅包括选择题和填空题.选择题居多.分单选和多选. ...

  5. 2014腾讯实习生笔试题——define与typedef

    2014腾讯实习生笔试(广州站)第26题填空题: #define MAX_NUM 1000+1 int Temp = Max_NUM*10; 则Temp的值为( ) 答案是:1010, 由于宏定义仅仅 ...

  6. Java类的连接与初始化 (及2013阿里初始化笔试题解析)

    Java虚拟机通过装载.连接.初始化来使得一个Java类型可以被Java程序所使用,如下图所示,其中连接过程又分为验证.准备.解析三个部分.其中部分类的解析过程可以推迟到程序真正使用其某个符号引用时再 ...

  7. PayPal2019春招实习生笔试题的某一题

    题目简单描述:给你n个点的坐标(x, y),均为浮点数. 如果任意两个点之间的欧几里得距离小于给定的一个浮点值,则认为这两个点之间有关联,并且关联具有传递性,总之就是尽可能扩大一个集合. 输入: d ...

  8. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  9. 代写编程的作业、笔试题、课程设计,包括但不限于C/C++/Python

    代写编程作业/笔试题/课程设计,包括但不限于C/C++/Python 先写代码再给钱,不要任何定金!价钱公道,具体见图,诚信第一! (截止2016-11-22已接12单,顺利完成!后文有成功交付的聊天 ...

随机推荐

  1. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  2. HUD-1142

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  3. struts 学习

    1.在Struts2的Action中取得请求参数值的几种方法 public class GetRequestParameterAction extends ActionSupport { privat ...

  4. hdu - 2102 A计划 (简单bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...

  5. hihoCoder 1040 矩形判断(计算几何)

    http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...

  6. Linux Java 环境变量设置

    对整个机器:所有用户 1,在/etc/profile 文件末尾加入 export JAVA_HOME=/var/opt/jdk1.7.0_04 export PATH=$JAVA_HOME/bin:$ ...

  7. How to: Synchronize Files by Using Managed Code

    The examples in this topic focus on the following Sync Framework types: FileSyncProvider FileSyncOpt ...

  8. 在C#中dagagridview绑定list泛型

    今天在项目中由于需要使用到datagridview绑定list的数据源,在针对list的添加.删除.修改都可以很好地完成,可是在初始化datagridview时,却发现了问题,绑定数据源后,并没有在列 ...

  9. leetcode:Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  10. HeadFirst Jsp 07 (使用 jsp)

    Jsp 变成 Servlet, 容器会查看你的JSP, 把它转换成java源代码, 再编译成完整的Java servlet类. Jsp 不需要你的编译, 容器会自动替换成servlet. 在 jsp中 ...