2010 的笔试,没有去年的43页,也就21页,除去了不同语言(java、c/c++、C#)的题,真正要做的也就16页左右,时间是够的。
基本上当了炮灰,所以在这里列出来,和大家分享一下。其实有很多都不是很难得问题,但是多了起来就很难发挥好。
session 1(必做)
有点变态,因为无论你什么语言,都必须答——我常用java,很久没有其他的,都忘了那些语言的特性了。
1 一只蜗牛,在一根10feet的杆上,每天向上3feet,晚上休息,下降1feet,问第几天什么时候到杆顶?(应该是考虑最后一天的情况)
2 考了java,对于类的static synchronized ,问:能不能编译通过,能不能锁住对象?
3 考了c#,问一下代码输出的是什么?主要有个printer2,搞了个new virtual在搞搞阵。
1 IPrint{
2 void print();
3 }
4
5 class Printer1:IPrint {
6 public void print(){ Console.WriteLine("Printer1.")} }
7
8 class Printer2:Printer1
9 {
10 public new virtual void print() { Console.WriteLine("Printer2.")} }
11 }
12
13 class Printer3:Printer2
14 {
15 public override void print() { Console.WriteLine("Printer3.")} }
16 }
17
18 class Printer4:Printer3
19 {
20 public override void print() { Console.WriteLine("Printer4.")} }
21 }
22
23 IPrinter ip = new Printer4();
24 ip.print();
2 void print();
3 }
4
5 class Printer1:IPrint {
6 public void print(){ Console.WriteLine("Printer1.")} }
7
8 class Printer2:Printer1
9 {
10 public new virtual void print() { Console.WriteLine("Printer2.")} }
11 }
12
13 class Printer3:Printer2
14 {
15 public override void print() { Console.WriteLine("Printer3.")} }
16 }
17
18 class Printer4:Printer3
19 {
20 public override void print() { Console.WriteLine("Printer4.")} }
21 }
22
23 IPrinter ip = new Printer4();
24 ip.print();
4 考了java的一个分析wait/sleep/notifyAll 的题目,问有无死锁。
5 考了一个C++版的继承与派生的问题
1 class Base
2 {
3 int val;
4 public Base():val(5);
5 public virtual void print(){printf("%d",val);}
6 }
7
8 class Child
9 {
10 int _j;
11 public Child():_j(8);
12 public void print(){printf("%d",_j);}
13 }
14
15
2 {
3 int val;
4 public Base():val(5);
5 public virtual void print(){printf("%d",val);}
6 }
7
8 class Child
9 {
10 int _j;
11 public Child():_j(8);
12 public void print(){printf("%d",_j);}
13 }
14
15
问以下情况什么时候会输出88888
A
Child[5] c;
Base* p = (Base*)c;
for(int i=0;i<5;++i)
{
p->print();
++p;
}
B...
C
Base[5] c;
Child* p = (Child*)c;
for(int i=0;i<5;++i)
{
p->print();
++p;
}
D
Base[5] c;
Child* p = //用dynamicCast
for(int i=0;i<5;++i)
{
p->print();
++p;
}
Child[5] c;
Base* p = (Base*)c;
for(int i=0;i<5;++i)
{
p->print();
++p;
}
B...
C
Base[5] c;
Child* p = (Child*)c;
for(int i=0;i<5;++i)
{
p->print();
++p;
}
D
Base[5] c;
Child* p = //用dynamicCast
for(int i=0;i<5;++i)
{
p->print();
++p;
}