其实只是面试前的一次笔试,30分钟时间。我那时比较紧张,因为这次的成绩对于能否进去是非常关键的。我初看一下感觉很简单,关于专业知识只有4道题目。第1道找错,错的太明显了以至于我怀疑是题目有问题。第2道是Vector和ArrayList的区别,仔细看过thinking in java中的集合框架的话很好回答的。第3道考了一道不超过15个字母的SQL语句-_-!。第4道是一道算法题,很郁闷~~这道估计浪费了我15-20分钟左右,而且还没做对。其他题目就诸如你爸贵姓?你妈贵姓?之类的无聊问题。
那道算法题是打印:
A
BB
CCC
DDDD
..
YYYYYY..
ZZZZZZZ.. 当时我是这样写的:
for(int x=0;x<26;x++)
{
for(int y=x;y<26;y++)
{
char ch=65;
System.out.print(""+(ch+x));
if(y>x){
continue;
}
}
System.out.println ("\n");
}
不知道为什么,如此糟糕的代码我还提前5分钟交卷了。回家路上辗转反侧,非常失落。
不过还是整理了下思路,想了2种算法,不过还是下面的效率比较高。
for(int x=0;x<26;x++)
{
for(int y=x;y<x+x+1;y++)
{
char ch=65;
System.out.print(""+(char)(ch+x));
}
System.out.println ("\n");
}
这让我不禁想起了很久以前老师给我做一道猜数字游戏,要求是把猜过的数字排除掉。首先我确定肯定是放在数组里,我就用ArrayList把它实现了。后来老师说能不能优化一下,为此我又翻阅了thinking in java集合那章。决定用链表LinkedList实现,链表在增加删除之类的操作时效率是最高的。本想在老师边上狂炫耀一番,不过当老师说出它的算法时,我才觉得“孙悟空”和“如来”的差距不是一点点。很遗憾代码在学校,我又懒得写。就详细说下步骤把:
1.如果是猜10以内的数字,那么申明一个10个int值的数组int[] num={1,2,3,4,5....10};
2.如果随机数是5,我猜的是3的话;我就将num[2]=num[9],然后int[] num就={1,2,10,4,5....10}了。
3.第i次猜的话,我们排除num数组最后i项元素,然后直到猜对跳出。
这次笔试我很不满意,估计考官已经把我CUT掉了5555555555。老实说我根本没想到要笔试,连笔还是旁边兄弟借的...我写下来,就是提醒大家面试的时候忧着点,别光顾着学习J2EE框架而忽略了基础中的基础。