今天(2013/9/22)去了阿里巴巴笔试,现在靠记忆复述考点大致如下:
选择题,注意做错要扣分,比如不定项选择全对得5分,少选得2分,不做0分,多选或选错扣2分,(这好像是从外企学过来的==)大概是为了给想碰运气的人心理压力,减少成绩的运气成分。选择的感觉就是好多数学题啊,组合数学,概率,如果高中有过数学竞赛经验的同学我想做起来应该会很轻松。考点如下:
1 堆排序的时间复杂度以及创建堆的复杂度
2 若只要选出最大的10个数,采用哪种排序?堆排序,直接选择,希尔排序……
3 二叉树n0=n2+1
4 二进制数除法
5 以下两种不同的循环方式:
int a[10000];
int b[100];
int i,j;
for(i=0;i<10000;i++)
for(j=0;j<100;j++)
b[j]++;
和
for(i=0;i<100;i++)
for(j=0;j<10000;j++)
a[j]++;
哪种速度更快?一样?难以判断?
6 某车5分钟一班,另一车10分钟一班,某人两种车都可以乘坐,问平均等待时间?
7 100个球中有10个红球,可重复地取球,取出后放回,问第n次取到第k个红球的概率?
8 哈夫曼序列
9 一棵二叉树通过一个FIFO队列p来输出,问输出序列?程序伪代码如下:
printTree(Node node)//传入根节点
{
p.push(node);
while(true){
node=p.pop();
print(node);
for(child of node)
p.push(child);
if(p.empty())
break;
}
}
10 求条件概率(简单,知道公式就行)
11 矩阵连乘最佳次数问题
12 下面哪些算法是用了贪心算法?单源点的Djstra算法,KMP算法……,总之要记得一些经典的图的算法的大致实现思想。
13 下列不会引起进程调度的是?
14 孤儿进程,僵尸进程等概念
15 ACID的含义
16 计算机内以什么形式存放数值?补码……
1 不用第三个变量,交换两个整数
1 指出一个C++程序的错误,主要就是考不覆盖自定义类的复制构造函数会造成的危害。
这里附上正确答案如下:
1:j i=0 n=0
2:构造块 i=1 n=1
3:t1 i=2 n=2
4:j i=3 n=3
5:构造块 i=4 n=4
6:t2 i=5 n=5
7:i i=6 n=6
8:静态块 i=7 n=99
9:j i=8 n=100
10:构造块 i=9 n=101
11:init i=10 n=102
选择题,注意做错要扣分,比如不定项选择全对得5分,少选得2分,不做0分,多选或选错扣2分,(这好像是从外企学过来的==)大概是为了给想碰运气的人心理压力,减少成绩的运气成分。选择的感觉就是好多数学题啊,组合数学,概率,如果高中有过数学竞赛经验的同学我想做起来应该会很轻松。考点如下:
1 堆排序的时间复杂度以及创建堆的复杂度
2 若只要选出最大的10个数,采用哪种排序?堆排序,直接选择,希尔排序……
3 二叉树n0=n2+1
4 二进制数除法
5 以下两种不同的循环方式:
int a[10000];
int b[100];
int i,j;
for(i=0;i<10000;i++)
for(j=0;j<100;j++)
b[j]++;
和
for(i=0;i<100;i++)
for(j=0;j<10000;j++)
a[j]++;
哪种速度更快?一样?难以判断?
6 某车5分钟一班,另一车10分钟一班,某人两种车都可以乘坐,问平均等待时间?
7 100个球中有10个红球,可重复地取球,取出后放回,问第n次取到第k个红球的概率?
8 哈夫曼序列
9 一棵二叉树通过一个FIFO队列p来输出,问输出序列?程序伪代码如下:
printTree(Node node)//传入根节点
{
p.push(node);
while(true){
node=p.pop();
print(node);
for(child of node)
p.push(child);
if(p.empty())
break;
}
}
10 求条件概率(简单,知道公式就行)
11 矩阵连乘最佳次数问题
12 下面哪些算法是用了贪心算法?单源点的Djstra算法,KMP算法……,总之要记得一些经典的图的算法的大致实现思想。
13 下列不会引起进程调度的是?
14 孤儿进程,僵尸进程等概念
15 ACID的含义
16 计算机内以什么形式存放数值?补码……
一共24题,有几题不记得了。
1 不用第三个变量,交换两个整数
2 只遍历一次,求一个数列的方差
1 指出一个C++程序的错误,主要就是考不覆盖自定义类的复制构造函数会造成的危害。
2 利用线程的随机性和sleep函数的低精确度,把一个数组以伪随机的方式输出。(不能用和随机相关的函数)
选做题
1 写出一个java程序的输出结果:
public class Test1 {
public static int k=0;
public static Test1 t1=new Test1("t1");
public static Test1 t2=new Test1("t2");
public static int i=print("i");
public static int n=99;
public int j=print("j");
{
print("构造块");
}
static {
print("静态块");
}
Test1(String str){
System.out.println((++k)+":"+str+" i="+i+" n="+n);
++n;
++i;
}
static int print(String str){
System.out.println((++k)+":"+str+" i="+i+" n="+n);
++n;
return ++i;
}
public static void main(String[] args){
Test1 t=new Test1("init");
}
}
这里附上正确答案如下:
1:j i=0 n=0
2:构造块 i=1 n=1
3:t1 i=2 n=2
4:j i=3 n=3
5:构造块 i=4 n=4
6:t2 i=5 n=5
7:i i=6 n=6
8:静态块 i=7 n=99
9:j i=8 n=100
10:构造块 i=9 n=101
11:init i=10 n=102
2 每个web应用服务器需要10个与oracle数据库的连接,oracle能承载的最多的连接是1000个,现有400个web应用服务器,并且以每年300个的速度增长,问有什么方法解决?并从原理上分析这种方法为什么有效?(和java相关)
Java输出那个大题写错了,有些空着,最后一题扯淡,前面选择也感觉错多对少,稳跪的节奏啊这次==。不过也没方法,现在实力水平也就这么点,还得再练习,准备才行。等着下次厚积薄发吧==……