一个人不应该依附在其他人身上,一个人应该首先自力更生。你应该自己能够独立,能够安顿你自己,那你就不会害怕了。你爱你自己的话,别人不能不爱你吧。

http://book.csdn.net/bookfiles/107/1001073092.shtml

上一篇 / 下一篇  2007-06-27 09:41:34 / 个人分类:招聘面试

面试例题1:如果鸟是可以飞的,那么鸵鸟是鸟么?鸵鸟如何继承鸟类?[美国某著名分析软件公司2005年面试题]

b}'`!b/qG,d0

解析:如果所有鸟都能飞,那鸵鸟就不是鸟!回答这种问题时,不要相信自己的直觉!将直觉和合适的继承联系起来还需要一段时间。51Testing软件测试网h;UF(rQe+X2K#M5n{7q

根据题干可以得知:鸟是可以飞的。也就是说,当鸟飞行时,它的高度是大于0的。鸵鸟是鸟类(生物学上)的一种。但它的飞行高度为0(鸵鸟不能飞)。

G$as(_3AZ z3| D0

不要把可替代性和子集相混淆。即使鸵鸟集是鸟集的一个子集(每个驼鸟集都在鸟集内),但并不意味着鸵鸟的行为能够代替鸟的行为。可替代性与行为有关,与子集没有关系。当评价一个潜在的继承关系时,重要的因素是可替代的行为,而不是子集。

~_9ERo`GV8|*Y0

答案:如果一定要让鸵鸟来继承鸟类,可以采取组合的办法,把鸟类中的可以被鸵鸟继承的函数挑选出来,这样鸵鸟就不是“a kind of”鸟了,而是“has some kind of”鸟的属性而已。代码如下:

g2Z8k J P0

#include<iostream>

hxf"m1qG~0

#include<string>51Testing软件测试网gi Oia-a`s|'PB

using namespace std;51Testing软件测试网:p{}7P`_

 51Testing软件测试网zv d u5L6Q?

class bird

6`c5_!a%x#|/?|Ax.c0

{51Testing软件测试网I;A7Q8T'd-k

public:51Testing软件测试网"k%^7Y%i:W[x+~c*p Eq

   void eat();51Testing软件测试网Q6u$R O}|9^1i1xg4f

   void sleep();51Testing软件测试网]%jA!E4l&g(s

   void fly();51Testing软件测试网0U@_1ZD-h

};51Testing软件测试网oF(wVkLLS[~:K

 51Testing软件测试网R*J8Q;uY7{

class ostrich51Testing软件测试网l,DQ,Q oC'z

{51Testing软件测试网F$@}}fs

public:51Testing软件测试网@e2eD-_@Xb

   bird eat(){cout<<"ostrich eat";};

8@&Su\}fk"H0

   bird sleep(){cout<<"ostrich sleep";};

*I+o;cn^6]*e{&p0

 

.R0d B Xc.Oe0

 };

Tk?w#e3Xd5^M0

 

&? D8@U%[6c0

int main()51Testing软件测试网1CO4Ek*B8Yv$m

{

rX's2{ N5N`6f0

   ostrich xiaoq;51Testing软件测试网M*p \F"@i+L:k

   xiaoq.eat();51Testing软件测试网vW0Xl)nL3r(}1_,p|

   xiaoq.sleep();

S F*g^:L0

   return 0;51Testing软件测试网aU/H C\9B

}   

W)iaLx2X.A*Uf0

面试例题2Find the defects in each of the following programs, and explain why it is incorrect.(找出下面程序的错误,并解释它为什么是错的。)[中国台湾某著名杀毒软件公司2005年面试题]

1~6BMQ z$v/n W&Xv0

    #include <iostream>

F,l sw:lz0

    using namespace std;51Testing软件测试网S J)}1^lW ]

 51Testing软件测试网8q,f{Q6yk

    class Base {

d'O8xO:KP g6ytp0

       public:

e5L5BX*K$P\'zu+r0

               int val;

a}+C4X8`E+T0

               Base() { val=1;};

Hb&lOx0P4jp0

    };51Testing软件测试网wr9VJe

 51Testing软件测试网 ZJGLkEM

    class Derive: Base {51Testing软件测试网+h!IXj ZY:J `/bN*fN

       public:

,f1JuCTEP/\0

               int val;51Testing软件测试网|WQTs-fhs,a

               Derive(int i) { val=Base::val+i; };

;L4J G rMA.}S!k%lpO0

    };

M Rqy,krrCox5D2g0

 

.dBiu/E]/i k]%O9F.T0

    int main(int, char**, char**) {51Testing软件测试网nB2`QO}

       Derive d(10);51Testing软件测试网8Q$gQ7g)U:Zo.[

               cout<<d.Base::val<<endl<<d.val<<endl;51Testing软件测试网u1O a7H9n"B3Hg

           return 0;51Testing软件测试网$b-zu,Hv2`P

    }

f![9r ?jf0

答案:把class Derive: Base改成class Derive:public Base51Testing软件测试网*aBNXt8Ct

解析:这是个类继承问题。如果不指定publicC++默认的是私有继承。私有继承是无法继承并使用父类函数中的公有变量的。

B9k0q5|h$AHnC O0

扩展知识(组合)这个比较有意思。

;foC wL0

若在逻辑上AB的“一部分”(a part of),则不允许BA派生,而是要用A其他东西组合出B51Testing软件测试网F,e{)o8n"u4Zf

例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类EyeNoseMouthEar组合而成,而不是派生而成。程序如下:51Testing软件测试网)^a([ Fs {~ [FX

class Eye

/Y8HY8B!]Q Zs0

{51Testing软件测试网3d9QTD6d*{q8?"i

public:

7AV"S!z;ts0

void Look(void);

pxi o'a&J0

};51Testing软件测试网0lhTGs

 

5aYkA7Zi{0

class Nose51Testing软件测试网0A4Ht}x9QA#I

{51Testing软件测试网 Kz^+|Znw

public:51Testing软件测试网|n,WV;Jo8W%k j)C

void Smell(void);

{%ek/Iuc0

};51Testing软件测试网EsKQ:T,H2I

 

-@0BVP?#YP0

class Mouth

CYwJ9` }9s0

{51Testing软件测试网 ['R}1g$h+p8O

public:51Testing软件测试网pUCL u0x

void Eat(void);

QK)J:g)M9G0

};51Testing软件测试网(d\j]9L&@}2a:Xn

 51Testing软件测试网m&\_h L ^\ cw

class Ear51Testing软件测试网e~U)t/]d a.z

{51Testing软件测试网'T)M;NSg`

public:51Testing软件测试网+@ x/Ln2X-X&hh6^h

void Listen(void);51Testing软件测试网'INU]q%^

};

j;Jvo+~l8x.]-r0

 

MKg]#ah!I3AtB0

class Head

4\s$M?R-A0

{

[hS?3l0

public:51Testing软件测试网@-Ay5y@

void Look(void) { m_eye.Look(); }

#~ t'L `1A0A:?Me(M0

void Smell(void) { m_nose.Smell(); }

#k U3O o }z0

void Eat(void) { m_mouth.Eat(); }51Testing软件测试网 ^{b;Y)C2~2f

void Listen(void) { m_ear.Listen(); }

^h n*SN'[][}1ey0

 51Testing软件测试网6j3{ t;{ ]9f8]

private:51Testing软件测试网s6r4a:K \-n

Eye m_eye;51Testing软件测试网"e_.EJRWA

Nose m_nose;51Testing软件测试网 }e*R)T ?d T

Mouth m_mouth;51Testing软件测试网|.rrs+H y

Ear m_ear;

0C@O0R#AP6b0

};51Testing软件测试网,X4v2DTWG jP

HeadEyeNoseMouthEar组合而成。如果允许HeadEyeNoseMouthEar派生而成,那么Head将自动具有LookSmellEatListen这些功能。程序十分简短并且运行正确,但是下面这种设计方法却是不对的。51Testing软件测试网Z^$tIk#G Z

class Head : public Eye, public Nose, public Mouth, public Ear

7h/~Dsg6y0

{51Testing软件测试网z7XWTlIUo

};

6hw'@0O's+BhqkH0

 51Testing软件测试网D Y#Y\`LZ_

面试例题3Find the defects in each of the following programs, and explain why it is incorrect.(找出下面程序的错误,并解释它为什么是错的。)[德国某著名软件咨询企业2005年面试题]51Testing软件测试网K-Fr"fc8M#n

class base{51Testing软件测试网4\(~)_xgt6}*q`PR

 private: int i;

`7z Xy&N0

 public:  base(int x){i=x;}

_:\*FNvTA0

};

9ZS;w3fe?/e#{\x7i0

class derived: public base{

'b]h$_SP;T0

 private: int i;

BC"^y8v&Qm.XC0

 public:  derived(int x, int y) {i=x;}51Testing软件测试网Wo*J/w5`g

          void printTotal() {int total = i+base::i;}

e4G5C kN`0

};

y,U-vj'K9J-HD0

解析:要在子类中设定初始成员变量,把derived(int x, int y)改成derived(int x, int y) : base(x)

#od {Y_ Z q?Q0

答案

2x)Z1]r/]{ W*d5U0

代码如下:51Testing软件测试网N~Sno&R

class base51Testing软件测试网h*@*^o:F*\YC

{

k*@ A#r#[ l0

protected: //这里的访问属性需要改变

\%x_{-Y6Awc8u }4Q0

int i;

4Ac)vn J'J9H0

public:  51Testing软件测试网 dP6[AuE ^

base(int x){i=x;}

)aAN b*X1DQ h'm0

};

2I,H}x3y+S-L0

 

F8l'sr^"Tp8nT&y5}0

class derived: public base

R-y zP,`0

{51Testing软件测试网.x,VM-bv\8kS t

 private: 51Testing软件测试网$EC&k\Yoe

  int i;51Testing软件测试网P!O7Q[l$BT Tj4d QK

 public:51Testing软件测试网D6} z[:DcGH

  derived(int x, int y) : base(x) //以前没有初始化基类的成员变量

c#rF ]}.G0

  {

'Z$k+c a0S1et0

            i=y;         

:s+k!VR4qE T(D0

  }

{v0WCNPCN1[0

  void printTotal()

0O,yHmAx0y0

  {51Testing软件测试网 uNvN$C

       int total = i+base::i;

0it$ds{w0

  }51Testing软件测试网j3G+Ng|f#V,XT:|

};

\a'N"PU!i9jZs0

 51Testing软件测试网#|\SFjre

 51Testing软件测试网C~6\+k_


TAG: 招聘面试

kakamissyou的测试小栈 引用 删除 kakamissyou   /   2008-04-14 15:33:52
呵呵,熟女知识面挺广啊!

不过我喜欢熟女,呵呵。
 

评分:0

我来说两句

Open Toolbar