阿里巴巴实习生招聘笔试题
1.给定fun函数如下,那么fun(10)的输出结果是()
int fun(int_)
{
return(_==1)? 1 : (_ + fun(_-1));
}
A.0 B.10 C.55 D.
2.在C++程序中,如果一个整型变量频繁使用,最好将它定义为()
A.auto B.e_tern C.static D.register
3.长度为n的字符串匹配子串长度为m的字符串,求算法的复杂度最小为_
A.O(n) B.O(n+m) C.O(n+logm) D.O(m+logn)
4.下列排序算法中最坏复杂度不是n(n-1)/2的是_
A.快速排序 B.冒泡排序 C.直接插入排序 D.堆排序
5.判断一包含n个整数a[]中是否存在i、j、k满足a[i] + a[j] = a[k]的时间复杂度最小值是()
A.O(n^2) B. O(n^2_ogn) C. O(n^3) D. O(nlogn)
6.射击3次打靶成功的概率是0.95,打靶一次成功的概率是多少?
C.0.63 D.0.86
阿里巴巴实习生招聘笔试题(精选篇2)
1.下面不能用作linu_的进程间通信的是_
A.共享内存 B.管道名 C.信号量 D.临界区
2.CPU和I/0一次只能处理一个程序,现有
P1:计算60ms I/o80ms 计算20ms
P2: 计算120ms I/o40ms 计算40ms
p3:计算40ms I/o80ms 计算40ms
C.160 D.200
3.两个进程同时执行一个函数,初始a=0:
2.一个函数为
foo()
{
if(a<=0)
a++;
else
a--;
printf(%d,a);
}
其中a是全局变量;架设++,--,printf都是原子操作。如果有两个并发线程都运行函数foo()那么下面哪个结果不会出现?A
A、01 B、10 C、12 D、22
阿里巴巴实习生招聘笔试题(精选篇3)
1:
有整形数组A有n个数;那A逆序:例如A={1,2,3,4}经过代码处理后变为A={4,3,2,1};要求代码简介(<20行)不使用库函数。使用加减乘除赋值和逻辑控制语言实现。
写出代码。
void revense(int _a,int n) {
for(int i=0; i
{
a[i]=a[i]+a[n-i-1];
a[n-i-1]=a[i]-a[n-i-1];
a[i]=a[i]-a[n-i-1];
}
}
2:
计算期望:某个工程师忘记设闹铃的概率为0.2,上班堵车概率为0.5。他的迟到概率:
忘设闹铃并堵车 1.0 忘设闹铃不堵车 0.9 设闹铃堵车 0.8 设闹铃不堵车 0
求他60天的迟到天数的期望。
0.51
3:
周转时间
4:
有n个战士其中n>4他们手中都有不同的情报,假设每个人通过交流能过得双方所有的情报。设计一个算法使得用最少的交流次数使得
所有的战士都获得全部的情报,给出算法并给出最小交流次数?
等各位补充答案
5:
有个聚会有N人参加,其中N-1个是群众。1个是明星。其中所有群众都认识明星,明星不认识任何群众,群众之前是否认识不知道。
假设有个机器人能问问题A是否认识B?时间复杂度为O(1),那么设计一个算法用最小的复杂度找出明星。(不写代码,不计算复杂度不得分)
遍历这n个人;
首先取出 1号 和 2号,
如果 1 认识 2, 那么把 1 去掉;
如果1不认识2,就可以把2去掉了。
每次比较都去掉一个,如此循环;n-1次之后只有一个人了
时间复杂度: O(n)