新足迹

 找回密码
 注册

精华好帖回顾

· 爸爸菜谱- 糟鸭舌 (2007-12-16) patrickzhu · 【黄教授学木工】 我的木工房 (2011-6-21) ranger
· 榄菜四季豆+iceburg lettuce (2006-1-9) 上山下乡 · 快递3 (2009-10-2) nzwhappy
Advertisement
Advertisement
查看: 2808|回复: 39

面试题:关于Polymorphism [复制链接]

特殊贡献奖章

发表于 2011-4-13 20:35 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一道关于web development的面试题
Explain your understanding of Polymorphism and its importance in Web Applications

兄弟们来介绍介绍

评分

参与人数 2积分 +11 收起 理由
o2h2o + 3 谢谢奉献
bulaohu + 8 感谢分享

查看全部评分

Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-4-13 21:24 |显示全部楼层

坐等双胸

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
头像被屏蔽

禁止访问

发表于 2011-4-13 21:32 |显示全部楼层

这个挺有意思的

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整

评分

参与人数 2积分 +6 收起 理由
kr2000 + 3 感谢分享
乱码 + 3 感谢分享

查看全部评分

发表于 2011-4-13 21:34 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个题目很大, 不知道要说到多深才能令inteviewer满意。 举两个例子吧。

所有Control都有一个render方法, 这个方法在不同的control中被override, 包括Page。 其目的是render不同的html。 显示时根据具体的object instance调用相应的render方法, output不同的html.

另一个例子是在page life cycle中的|OnInit, OnLoad函数也可以override, 如果写自己的Page class derive from Web.Ui.Page, 可以重写这些method到达特殊的目的。

评分

参与人数 2积分 +6 收起 理由
kr2000 + 3 感谢分享
乱码 + 3 感谢分享

查看全部评分

发表于 2011-4-13 21:46 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个问题可以从不同的角度答,我个人觉得Polymorphism使得在高层/主干控制不被touch的情况下,使得不同的implementation成为可能,从而提供灵活的扩展方式。

btw:php也问这种OO的问题么?

[ 本帖最后由 乱码 于 2011-4-13 21:47 编辑 ]

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 感谢分享

查看全部评分

2008年度奖章获得者

发表于 2011-4-13 21:51 |显示全部楼层
此文章由 degra 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 degra 所有!转贴必须注明作者、出处和本声明,并保持内容完整
和大一 object oriented programming 考试试题一样
Advertisement
Advertisement

发表于 2011-4-13 21:56 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 gandu 于 2011-4-13 21:51 发表
和大一 object oriented programming 考试试题一样


我上大一那会儿还不教oop呢,只是pascal,到大三下自学的c++

评分

参与人数 1积分 +2 收起 理由
atransformer + 2 恭喜恭喜

查看全部评分

发表于 2011-4-13 21:57 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Polymorphism makes the method called is determined by runtime instance. For example, if you have class A and class B, B is derived from class A, both of them have their own implementation of a method called Foo().  And there is a piece of code look like this,

A a;
a = new B();
a.Foo().

Which Foo() is called in this case? It should be B.Foo() instead of A.Foo().

This model found basis for nearly all OO design pattern.

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 感谢分享

查看全部评分

2008年度奖章获得者

发表于 2011-4-13 21:58 |显示全部楼层
此文章由 degra 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 degra 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-4-13 21:56 发表


我上大一那会儿还不教oop呢,只是pascal,到大三下自学的c++


我大一也是 pascal 和 c/c++, 还没有java, java oop 是后来我看到的

发表于 2011-4-13 22:45 |显示全部楼层
此文章由 baobeima 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 baobeima 所有!转贴必须注明作者、出处和本声明,并保持内容完整
学习了

发表于 2011-4-13 22:53 |显示全部楼层
此文章由 萤火虫2788 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 萤火虫2788 所有!转贴必须注明作者、出处和本声明,并保持内容完整
打个比方,在厕所这个环境下,作为“人”这个对象会进行 “嘘嘘” 这个动作,你不知道进来的是“男人”还是“女人”, 但由于他们都是“人”,所有都有“嘘嘘”这个动作

好了,开始运行,进来一个人,你就调用一个这个对象的“嘘嘘”, 对象本省如果是“男人”, 他自然就会站着,如果是“女人”,就会蹲着

这应该就是多态的含义?

评分

参与人数 2积分 +6 收起 理由
winsome + 3
kr2000 + 3 你太有才了

查看全部评分

Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-4-13 23:49 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好像都没说道点上,override只是表象,是说如何来处理父类离得动作。跟Poly本身无关。
OO的本质是类,Poly由此而生。通过Poly可以确定那个类是你要用得,由此可以确定那个类得所有动作。
Poly不但是继承关系可以用,更多时是用在Interface上。

其实面试问人家Poly听弱智得,要我就问你所说何时用继承,何时用interface,何时要一起用,何时只能用其一,被面试者得水平一下子就可以看出。 也显得面试者比较有文化底蕴。

就像是A片,光问女优3维多少,最喜欢得体位是啥,不顶用,到头来还是得看女优得兴奋点感染力如何,叫得够不够淫荡。

评分

参与人数 2积分 +5 收起 理由
kr2000 + 3 你太有才了
atransformer + 2 谢谢奉献

查看全部评分

足迹 Reader is phenomenal. If you never used, you never lived 火速下载
头像被屏蔽

禁止访问

发表于 2011-4-13 23:57 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-4-13 23:49 发表
好像都没说道点上,override只是表象,是说如何来处理父类离得动作。跟Poly本身无关。
OO的本质是类,Poly由此而生。通过Poly可以确定那个类是你要用得,由此可以确定那个类得所有动作。
Poly不但是继承关系可以用,更多时是用 ...


何时用继承,何时用interface,何时要一起用,何时只能用其一??? 回答。

我只知道c下铺不支持inherit from multiple classes,但可以inherit from multiple interfaces. 其余的就不知道了。您给说说

2010年度奖章获得者

发表于 2011-4-14 00:03 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
多看A片你就会悟到了。 我现在大脑缺氧,懒得想这种问题了。
头像被屏蔽

禁止访问

发表于 2011-4-14 00:07 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-4-14 00:03 发表
多看A片你就会悟到了。 我现在大脑缺氧,懒得想这种问题了。


靠,右胸睡得也这么晚??不着急,啥时候脑氧富裕的时候再说。我等。。。。。。。。。。

2010年度奖章获得者

发表于 2011-4-14 00:16 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
面试时有太多无聊得问题,影象比较深得一次,有个人上来先牛b哄哄得吹嘘了一段他得光荣历史。
后来他问到一个关于extension method得问题,大致是问,如果你能access 到源代码 (就是说你有全线修改源代码),那你还会去用extension method吗?

我脑子那个晕哦,,,神马叫access 源代码? 更TMD ext method有个鸟关系? 不过我立即悟道了,说到。。。哦,你说得意思是 如果我可以吧method 加到那个class 里,那我还需要写 ext method 吗? 您TMD是这个意思吧?

他不好意思得淫笑了一下,说对地对地,我就是这个意思。

那我说 ext method 更这个完全是两马事, 接着我就给他点化了一把。他的脸刷的一下红了。。。真得事。。哈哈。 旁边还有一个人也做无奈摇头状, 搞得大家非常得尴尬, 后来他接到个短信,借故溜出去了好久。

我就更另外一个人聊了许久得WoW

评分

参与人数 2积分 +5 收起 理由
kr2000 + 3 你太有才了
atransformer + 2 靠,你真牛!

查看全部评分

足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-4-14 09:00 |显示全部楼层
此文章由 greed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 greed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我在澳洲第一次面试,这哥们求知欲极强。每次我提到一个缩写,丫就追问我全称是啥。从DOM、SAX开始,一路问到结束。边上美女HR看偶憋得抓耳挠腮的颇是同情。

[ 本帖最后由 greed 于 2011-4-14 09:02 编辑 ]

评分

参与人数 1积分 +3 收起 理由
+ 3 你太有才了

查看全部评分

发表于 2011-4-14 09:09 |显示全部楼层
此文章由 oceangod 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 oceangod 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个贴好,以前也做C++,看看大家怎么聊!
头像被屏蔽

禁止访问

发表于 2011-4-14 09:26 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-4-14 00:16 发表
面试时有太多无聊得问题,影象比较深得一次,有个人上来先牛b哄哄得吹嘘了一段他得光荣历史。
后来他问到一个关于extension method得问题,大致是问,如果你能access 到源代码 (就是说你有全线修改源代码),那你还会去用extensio ...


我和你一样,干事不留情面,坚持真理。不过这样容易树敌。所以,随着一天天变老,我也越来越世故了。

特殊贡献奖章

发表于 2011-4-14 09:46 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
php也可以oo啊
不过很多做php不是很注重oop
这个是个软件公司出的题,可能比较注重这个
我觉得挺好,能学一些对我来说比较高级的东西
就是题目太难,很多答不上来

还有问decorator pattern, tdd(test driven development)的东西
我是真的没用过

原帖由 乱码 于 2011-4-13 21:46 发表
这个问题可以从不同的角度答,我个人觉得Polymorphism使得在高层/主干控制不被touch的情况下,使得不同的implementation成为可能,从而提供灵活的扩展方式。

btw:php也问这种OO的问题么?

发表于 2011-4-14 09:48 |显示全部楼层
此文章由 righttang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 righttang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好熟悉的单词,怎么就想不起来什么意思了呢
Advertisement
Advertisement

发表于 2011-4-14 09:52 |显示全部楼层

回复 kr2000 20# 帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Decorator pattern 可以这么理解。
你有一个宝马车, 但想加上合金轮, 你把爱车送到dealer那边new一下, 出来后就是配上合金轮的宝马。
现实和这个比喻有一点不同的是现实的object是一个新的instance, 这个例子里车还是你的车。

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 谢谢奉献

查看全部评分

发表于 2011-4-14 10:10 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-4-14 09:46 发表
php也可以oo啊
不过很多做php不是很注重oop
这个是个软件公司出的题,可能比较注重这个
我觉得挺好,能学一些对我来说比较高级的东西
就是题目太难,很多答不上来

还有问decorator pattern, tdd(test driven development)的东西
我是真的没用过



decorator pattern不是经常被用到的pattern,don't worry,用到的时候看看uml就ok,interview问这个有点picky.

TDD还行,不过在悉尼也不是很多公司follow这个开发过程,据我个人所知(做过/听说)这种projects有4个,都是在.net这边,用到Nunit/ms test和rhino mocks,framework没什么,归根到底还是design方式的改变,它强迫你对interface programming而不是用concrete class。 这个领域也有很多practise,有些东西也很有争议。

TDD是一个很有趣的话题,就看management是否有这个素质,不过一旦成为你的习惯,就不愿意脱离这个模式了。

不知道php那边用什么来做TDD,也应该有相应的framework.

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 你太有才了

查看全部评分

特殊贡献奖章

发表于 2011-4-14 10:44 |显示全部楼层

回复 dalaohu 16# 帖子 乱码 23# 帖子

此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
双胸就是双胸啊
头像被屏蔽

禁止访问

发表于 2011-4-14 10:47 |显示全部楼层

这个例子貌似不错

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JavaScript (coffee making scenario)
// Class to be decorated
function Coffee() {
    this.cost = function() {
        return 1;
    };
}

// Decorator A
function Milk(coffee) {
    this.cost = function() {
        return coffee.cost() + 0.5;
    };   
}

// Decorator B
function Whip(coffee) {
    this.cost = function() {
        return coffee.cost() + 0.7;
    };
}

// Decorator C
function Sprinkles(coffee) {
    this.cost = function() {
        return coffee.cost() + 0.2;
    };
}

// Here's one way of using it
var coffee = new Milk(new Whip(new Sprinkles(new Coffee())));
alert( coffee.cost() );

// Here's another
var coffee = new Coffee();
coffee = new Sprinkles(coffee);
coffee = new Whip(coffee);
coffee = new Milk(coffee);
alert(coffee.cost());

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 感谢分享

查看全部评分

发表于 2011-4-14 17:28 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
呵呵乱码兄我现在才知道您的头像是会动的。。。

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 好眼力!!

查看全部评分

Advertisement
Advertisement

发表于 2011-4-14 17:31 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Polymorphism和design pattern口头解释我都不太行,但是运用上就是会abstract / interface / extends

有时候OOP反而会把问题复杂化,maintenance的时候头很大。。。

发表于 2011-4-14 18:35 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2011-4-14 17:28 发表
呵呵乱码兄我现在才知道您的头像是会动的。。。


啊,是阿,我自己看了一下,真会动,原来我也不知道

发表于 2011-4-14 19:03 |显示全部楼层
此文章由 jands 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jands 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-4-14 18:35 发表


啊,是阿,我自己看了一下,真会动,原来我也不知道


有動嗎? 我盯了幾分鐘都沒動啊? 就是左下角的燈會閃

发表于 2011-4-14 20:00 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 jands 于 2011-4-14 19:03 发表


有動嗎? 我盯了幾分鐘都沒動啊? 就是左下角的燈會閃


我就是说这个,应该算是动吧?

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部