2015年阿里巴巴研发工程师笔试题

1、int main(){ fork()||fork(); }共创建几个进程?

答:3个。

【知识点】

• 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。

• 子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。

• UNIX将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。在不同的UNIX (Like)系统下,我们无法确定fork之后是子进程先运行还是父进程先运行,这依赖于系统的实现。所以在移植代码的时候我们不应该对此作出任何的假设。

如图所示:相同颜色的为同一进程,共有三种进程。更多信息可以参考http://coolshell.cn/articles/7965.html

2.下列正则表达式不可以匹配 “www.alibaba-inc.com”的是______。

• ^\w+\.\w+\-\w+\.\w+$

• [w]{0,3}.[a-z\-]*.[a-z]+

• [c-w.]{3,10}[.][c-w.][.][a]

• [w][w][w][alibaba-inc]+[com]+

• ^\w.*com$

• [w]{3}.[a-z\-]{11}.[a-z]{3}

【知识点】正则表达式,答案最后一个

3.下列描述中唯一错误的是______。

A. 本题有五个选项是正确的

B. B正确

C. D正确

D. DEF 都正确

E. ABC 中有一个错误

F. 如果 ABCDE 都正确,那么 F 也正确

【知识点】推理判断

根据题意,选项中只有唯一一个错误,所以A选项正确。再看C选项,如果C选项错误,那么D错误和唯一错误矛盾,所以C正确。进而D正确,那么DEF都正确,只有B错误。我们再看,如果B正确,根据前面的分析我们肯定CDE都是正确的,在E选项中,A正确,B正确,进而推导出C错误,这和前面我们推导C正确矛盾,因此B错误。

4、个数约为50K的 数列需要进行从小到大排序,数列特征是基本逆序(多数数字从大到小,个别乱序),以下哪种排序算法在事先不了解数列特征 的情况下性能大概率最优(不考虑空间限制)______。

• 冒泡排序

• 改进 冒泡排序

• 选择排序

• 快速排序

• 堆排序

• 插入排序

【知识点】各大排序的适用场合以及特点

个数约为50K,基本可以秒杀一般的冒泡,改进冒泡,选择,插入等基本的排序。加上数列的特征是基本逆序,而快速排序的worst case就是基本逆序或者基本有序的情况。综上所述,堆排序应该是大概率最优的。

5、下列方法中,______不可以用来程序调优 ?

• 改善数据访问方式以提升缓存命中率

•使用多线程的方式提高I/O密集型操作的效率

• 利用数据库连接池替代直接的数据库访问

• 使用迭代替代递归

• 合并多个远程调用批量发送

• 共享冗余数据提高访问效率

【知识点】程序调优常见的途径。可参考http://coolshell.cn/articles/7490.html

• I/O密集型问题一般是硬件层面的问题,比如硬盘,它的I/O就摆在那里,无论你在怎么多线程,瓶颈就在硬盘那,所以B的说法是不可行的。

• 对于“I/O密集型”的应用程序可以采用I/O效率较高的SCSI硬盘,或者采用集群的方式。

6、设 m 和 n 都是 int 类型,那么以下 for 循环语句,__

for(m=0,n=-1;n=0;m++,n++)

n++;

A.

循环体一次也不执行

B.循环体执行一次

C.是无限循环

D.有限次循环

E.循环结束判断条件不合法

F.运行出错

【知识点】循环,=和==区别

n=0,条件永远为假,所以循环体一次也不会执行

7、计算三个稠密矩阵A、B、C的乘积ABC,假定三个矩阵的尺寸分别为m*n, n*p, p*q,且m<n<p<q,以下计算顺序效率最高的是:______?

•(AB)C

• A(BC)

• (AC)B

• (BC)A

• (CA)B

• 以上效率相同

【知识点】矩阵及简单的算法复杂度

• 根据简单的矩阵知识,可以排除后面四项,因为A*B,A的列数必须和B的行数相等。

• 再看选项1和选项2,如下图所示,一个m*n的矩阵A乘以n*q的矩阵B。我们会用矩阵A的第一行,乘以矩阵B的第一列并相加。这一运算需要耗费n次乘法以及n-1次加法,矩阵B有q列,矩阵A有m行,所以A*B的复杂度为m*(2n-1)*q。

• 根据上面的分析,我们可以知道选项1的复杂度为m*(2n-1)*p + m*(2p-1)*q,而选项2的复杂度为m*(2n-1)*q+ n*(2p-1)*q,很显然选项1的效率高于选项2。


8、若干个等待访问磁盘者依次要访问的磁道为19,43,40,4,79,11,76,当前磁头位于40号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为?

A. 19,43,40,4,79,11,76

B. 40,43,19,11,4,76,79

C. 40,43,76,79,19,11,4

D. 40,43,76,79,4,11,19

E. 40,43,76,79,11,4,19

F. 40,19,11,4,79,76,43

【知识点】磁盘寻道算法,答案B

9、程序出错在什么阶段__?

Int main(void)

{

http://www.taobao.com

cout<<”welcome to taobao”<<endl

}

A. 预处理阶段出错

B. 编译阶段出错

C. 汇编阶段出错

D. 链接阶段出错

E. 运行阶段出错

F. 程序运行正常

【知识点】编译程序的基本知识

• Gcc编译器对程序的编译可分为4个阶段:预编译、编译和优化、汇编、链接,之后就是运行了。

• 预编译:将程序引用的头文件包含进源代码中,并对一些宏进行替换;

• 编译:将用户据可识别的语言翻译成一组处理器可识别的操作码,生成目标文件,通常翻译成汇编语言,而汇编一眼和机器操作码之间是一对一的关系;

• 所有的目标文件必须用某种方式组合起来才能运行,这就是链接的作用。目标文件中通常仅解析了文件内部的变量和函数,对于引用的函数和变量还没有解析,这需要将其他已经编写好的目标文件引用进来,将没有解析的变量和函数进行解析,通常引用的目标是库。链接完成后会生成可执行文件。

10、以下操作中,数组比线性表速度更快的是____

A. 原地逆序

B. 头部插入

C. 返回中间节点

D. 返回头部节点

E. 选择随机节点

【知识点】线性表和数组

线性表的定义请参见百度百科:http://baike.baidu.com/view/178622.htm

11、在一个请求页式存储管理中,一个程序的页面走向为 3、4、2、 1、4、5、3、4、5、1、2,并采用 LRU 算法。设分配给改程序的存储 快熟 S 分别为 3 和 4,在该访问中发生的缺页次数 F 是

A. S=3,F=6;S=4,F=5

B. S=3,F=7;S=4,F=6

C. S=3,F=8;S=4,F=5

D. S=3,F=8;S=4,F=7

E. S=3,F=10;S=4,F=8

F. S=3,F=11;S=4,F=9

【知识点】缺页次数的计算LRU和FIFO


12、每台物理计算机可以虚拟出 20 台虚拟机,假设一台虚拟机发生故障当且仅当它所宿主的物理机发生故障。通过 5 台物理机虚拟出100 台虚拟机,那么关于这 100 台虚拟机的故障的说法正确的是:____?

A. 单台虚拟机的故障率高于单台物理机的故障率

B. 这 100 台虚拟机发生故障是彼此独立的

C. 这100台虚拟机单位时间内出现故障的个数高于100台物理机单位时 间内出现故障的个数

D. 无法判断这 100 台虚拟机和 100 台物理机哪个更可靠

E. 如果随机选出 5 台虚拟机组成集群, 那么这个集群的可靠性和 5 台物 理机的可靠性相同

【知识点】理解题意吧

13村长带着 4 对父子参加爸爸去哪儿第三季第二站某村庄的拍摄。 村里为了保护小孩不被拐走有个前年的规矩, 那就是吃饭的时候小孩 左右只能是其他小孩或者自己的父母。那么 4 对父子在圆桌上共有 ___种坐法。 (旋转一下, 每个人面对的方向变更后算是一种新的坐法)

A. 144

B. 240

C. 288

D. 480

E. 576

F. 960

【知识点】排列组合

根据题意,可以知道位置排列只有以下两种可能,如下图所示:

对于第一种方式:孩子和孩子是面对面的,父亲和父亲是面对面的。所以8个位置可以等效为4个位置,孩子的位置定了,父亲的位置也就定了。而孩子的排列数为4*3*2,旋转只有4中可能(因为等效下来只有4个位置)。所以总可能输为4*4*3*2 = 96

对于第二种方式:孩子的排列有4*3*2*1,孩子的位置定了,其中两位父亲的位置就定了,剩下两位父亲就可以随意排了,此外可以旋转8次,总可能输为8 * 4 * 3 * 2 * 2 = 384

综上所述,总有384 + 96 = 450中可能。

14、如果一个博物馆参观者到达的速率是每分钟 20 人,平均每个人在馆内停留 20 分钟,那么该博物馆至少需要容纳多少人?

A. 100

B. 200

C. 300

D. 400

E. 500

F. 600

【知识点】?

16、对立的两方争夺一个价值为1的物品,双方可以采取的策略可以分为鸽子策略和鹰策略,如果双方都是鸽子策略,那么双方各有1/2的几率获得该物品;如果双方均为鹰策略,那么双方各有1/2的概率取胜,胜方获得价值为1的物品,付出价值为1的代价,负方付出价值为1的代价;如果一方为鸽子策略,一方为鹰策略,那么鹰策略获得价值为1的物品,在争夺的结果出来之前,没人知道对方是鸽子策略还是鹰策略,当选择鸽子策略的人的比例是某一个值时,选择鸽子策略和选择鹰策略的预期收益是相同的,那么该值是:

A. 0.2

B. 0.4

C. 0.5

D. 0.7

E. 0.8

F. 以上都不对

【知识点】

17、已知一个二叉树的前序遍历结果是(ACDEFHGB) ,中序遍历结果是(DECAHFBG),请问后续遍历结果是_____

A. HGFEDCBA

B. EDCHBGFA

C. BGFHEDCA

D. EDCBGHFA

E. BEGHDFCA

F. BGHFEDCA

【知识点】前序遍历、中序遍历、后序遍历,答案B

18、在一个单链表中,q 的前一个节点为 p,删除 q 所指向节点,则执行

A. Delete q

B. q->next=p->nerx;delete p;

C. p-next=q->next;delete p;

D. p->next=q->next;delete q;

E. delete p;

F. q->next=p->next;delete q

【知识点】单链表,答案D

19、下列 C 代码中,不属于未定义行为的有___

A. Int i=0;i=(i++);

B. Char *p=”hello”;p[1]=’E’;

C. Char *p=”hello”;char ch=*p++;

D. Int i=0;printf(“%d%d\n”,i++,i--);

E. 都是未定义行为

F. 都不是未定义行为

【知识点】未定义行为

20、int func(unsigned int i)

{

    unsigned int temp = i;
    temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >> 1);
    temp = (temp & 0x33333333) + ((temp & 0xccccccccc) >> 2);
    temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0 >> 4));
    temp = (temp & 0xff00ff) + ((temp & 0xff00fff00) >> 8);
    temp = (temp & 0xffff) + ((temp & 0xffff0000) >> 16);
    return temp;

}

请问 func(0x11530828)的返回值是:1032

【知识点】位运算

21、把校园中同一区域的两张不同比例尺的地图叠放在一起,并且使 其中较小尺寸的地图完全在较大尺寸的地图的覆盖之下。 每张地图上 都有经纬度坐标,显然,这两个坐标系并不相同。我们把恰好重叠在 一起的两个相同的坐标称之为重合点。 下面关于重合点的说法中正确 的是?

A. 可能不存在重合点

B. 必然有且只有一个重合点

C. 可能有无穷多个重合点

D. 重合点构成了一条直线

E. 重合点可能在小地图之外

F. 重合点是一小片连续的区域

【知识点】极限思想

如下图所示:假设蓝色的为大地图,黄色的为小地图,他们是成比例放大的。大地图中的黄色区域,必然也存在在小地图当中,我们假设为黄色区域。那么大地图的黄色区域,必然也存在于小地图中,我们假设为灰色区域。按照此思想,两地图重合的区域越来越小,最后会趋近于一个点。所以选B。

22、毕业典礼后,某宿舍三位同学把自己的毕业帽扔了,随后每个人随机地拾起帽子,三个人中没有人选到自己原来带的帽子的概率是

A. 1/2

B. 1/3

C. 1/4

D. 1/6

E. 1/8

F. 1/9

【知识点】简单的概率论

不考虑任何情况,捡到帽子的情况有3*2*1=6种

每个人都不能捡到自己的帽子,情况有两种,A-c, B-a, C-b或者A-b, B-c, C-b,其中A,B,C代表三位同学,a,b,c分别代表A,B,C的帽子。

23、一个合法的表达式由()包围,()可以嵌套和连接,如(())()也是合法 表达式;现在有 6 对(),它们可以组成的合法表达式的个数为____

A. 15

B. 30

C. 64

D. 132

E. 256

F. 360

【知识点】卡特兰数,看完此文,便可秒杀此题http://ilovers.sinaapp.com/article/catalan%E6%95%B0#problem_1

感谢这世界上有那么多大神存在。

24、某路由器接受的 IP 豹纹的目的地址不是路由器的接口 IP 地址, 并且未匹配的路由项,则采取的策略是

A. 丢掉该分组

B. 将该分组分片

C. 转发该分组

D. 将分组转发或分片

E. 将分组保留存储

F. 以上都有可能

【知识点】应该和网络有关,恶心没学过。当时不知道出了丢掉还能干什么。

25、有字符序列 {Q,H,C,Y,P,A,M,S,R,D,F,X} ,新序列{F,H,C,D,P.A.M,Q,R,S,Y,X},是下列____排序算法一趟扫描的结果。

A. 二路归并排序

B. 快速排序

C. 步长为 4 的希尔排序

D. 步长为 2 的希尔排序

E. 冒泡排序

F. 堆排序

【知识点】排序,答案B

26、MySQL 主从结构的主数据库中不可能出现以下哪种日志?

A. 错误日志

B. 事务日志

C. 中继日志

D. Redo log

【知识点】数据库日志,看完此文,便可秒杀此题。参考链接:http://aceruser.blog.51cto.com/2772529/658842

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值