阿里巴巴笔经http://bbs.yingjiesheng.com/forum.php?mod=viewthread&tid=696098&extra=page%3D1%26filter%3Dtypeid%26typeid%3D6356%26typeid%3D6356
上次向阿里巴巴投了自己的简历,收到了阿里巴巴的笔试通知,今天下午坐了一个半小时的车,才到了阿里巴巴笔试的地方。人还真是不少,不过有点真让人郁闷, 看了下笔试的名单,求职C++程序员的只有17人,而JAVA程序员竟然有100多人,真是后悔当时为什么要学JAVA(貌似记得当时觉得C++太难 了)。反正也不知道他们水平怎么样,就硬着头皮考考。考试时间是1小时,后来因为题量有点大,就延长了20分钟。那题目还真的不是很难,可惜我不会做,只 能说那些题目很基础,看来平时还是要注意下基础的知识。
趁现在对题目还有印象,先贴上来给大家一个参考:
1~3 逻辑题(就是那些有点考验你智商的或者考验你逻辑能力的题目)
JAVA基础题
4、抽象类与接口有什么不同?
5、关于线程的题目,记不清了。
算法题
6、写出2乘以17效率最高的算法?
7、编程题(题目太长,略)。
好像还是关于JAVA的知识点
8、简述final、fianlly和finalize的区别?
9、简述ArrayLists和LinkedList的区别?
10、在try的括号里面有return一个值,那是否还执行finally里的代码。是在return前执行还是return后执行。
11、题目太长,略。
设计模式题
简述templates和××××(忘了)的区别?
数据库题
12、创建学生表S,课程表C,学生选课表SC。写出建表的SQL语句。
13、写出返回选了全部课程的学生的SQL语句。
14、写出返回至少选了5门课的学生的SQL语句。
javascript题
15、实现点击页面上的一个链接,然后隐藏这个链接的javascript代码。
测试知识题
16、简述什么是测试驱动开发(TDD)。
补充题
17、说说你希望从阿里巴巴得到什么。用3个名词概括。
题目大致就是这样,我是不太会做,希望给后来者一个参考,希望大家能够注重基础。
JAVA:1.Servlet中怎样控制页面在客户端的缓存策略;
2.执行存储过程;
3.JSP;
4.Thread.wait()可否设置超时
5.注释XML内容:CDATA;
6.IOC;
7.Open-Closed原则含义;
8.JUnit TestCase基类中的代码;
9.javax.servle.http.HttpServlet;
10.JDBC连接池&功能;
11.XML Schema:<xs:choic>&<xs:sequence>;
12.领域模型;
13.Servlet生命周期。
上次向阿里巴巴投了自己的简历,收到了阿里巴巴的笔试通知,今天下午坐了一个半小时的车,才到了阿里巴巴笔试的地方。人还真是不少,不过有点真让人郁闷, 看了下笔试的名单,求职C++程序员的只有17人,而JAVA程序员竟然有100多人,真是后悔当时为什么要学JAVA(貌似记得当时觉得C++太难 了)。反正也不知道他们水平怎么样,就硬着头皮考考。考试时间是1小时,后来因为题量有点大,就延长了20分钟。那题目还真的不是很难,可惜我不会做,只 能说那些题目很基础,看来平时还是要注意下基础的知识。
趁现在对题目还有印象,先贴上来给大家一个参考:
1~3 逻辑题(就是那些有点考验你智商的或者考验你逻辑能力的题目)
JAVA基础题
4、抽象类与接口有什么不同?
5、关于线程的题目,记不清了。
算法题
6、写出2乘以17效率最高的算法?
7、编程题(题目太长,略)。
好像还是关于JAVA的知识点
8、简述final、fianlly和finalize的区别?
9、简述ArrayLists和LinkedList的区别?
10、在try的括号里面有return一个值,那是否还执行finally里的代码。是在return前执行还是return后执行。
11、题目太长,略。
设计模式题
简述templates和××××(忘了)的区别?
数据库题
12、创建学生表S,课程表C,学生选课表SC。写出建表的SQL语句。
13、写出返回选了全部课程的学生的SQL语句。
14、写出返回至少选了5门课的学生的SQL语句。
javascript题
15、实现点击页面上的一个链接,然后隐藏这个链接的javascript代码。
测试知识题
16、简述什么是测试驱动开发(TDD)。
补充题
17、说说你希望从阿里巴巴得到什么。用3个名词概括。
题目大致就是这样,我是不太会做,希望给后来者一个参考,希望大家能够注重基础。
两道编程题:
1请用最少的额外空间将一个M*N的矩阵旋转90度,写出算法描述和类c语言程序;
2完成如下函数,给定分子和分母,输出其小数表示形式,循环节用[]表示,例如给出分子:13,分母19,输出为:0.[13]
参考解答:
只需要一个空间即可(下标变量i),考虑的是顺时针旋转
#include "iostream.h"
const int M=5;
const int N=3;
void main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int c[N][M]={0};
int i;//只需一个空间i。
for(i=0;i<M*N;i++)
c[i%N][M-1-i/N]=a[i/N][i%N];//就这句话
for(i=0;i<M*N;i++)
{
if(i%N == 0)
cout<<endl;
cout<<a[i/N][i%N]<< ;
}
cout<<endl;
for(i=0;i<M*N;i++)
{
if(i%M == 0)
cout<<endl;
cout<<c[i/M][i%M]<< ;
}
cout<<endl;
}
最省空间的矩阵转置
#include "stdafx.h"
#include <iostream> using namespace std; int main()
{
const int M = 5;
const int N = 3;
int a[M][N] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int* p = a[0];
//转90度后的矩阵设为b[N][M],则 b[j] = *(p + i + j*N)
for(int i = 0; i < N; i++)
{
for(int j =0; j < M; j++)
{
cout<< *(p + i + j*N) <<",";
}
cout<<endl;
}
system("pause");
return 0;
}
这是一个Matrix Transposition In place(M!=N) 问题。1972年 MIT的一个教授给出了到目前为止的最佳解法。不过好像没有楼上这些人说的那么简单,其中还包含了一个定理。大家可以去搜论文,嘿嘿.
Key word:Matrix Transposition In place
transposition, matrix operations, permutation,primitive roots, number theory