新足迹

 找回密码
 注册

精华好帖回顾

· 回国(上海)有感(PATRICKZHU) (2007-10-25) patrickzhu · Box Hill的银行 (2005-10-5) goldenapple
· 英语学习笔记 (2008-2-27) 何求心忧 · 扶老携幼7人黄金海岸8日度假游(坑已填) (2011-2-4) cece
Advertisement
Advertisement
查看: 1804|回复: 17

几个interview题,求解 [复制链接]

发表于 2012-3-7 22:31 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如题,直接看题目吧,我翻译了一下。
1.猜拳游戏。有3个class:Rock(拳头),Paper(巴掌)和 Scissor(剪刀)。这3个class有共同的super class GE.游戏中会调用这3个class来进行猜拳 object1.versus(object2).
问题1:要求写一个method返回猜拳的结果(object1.versus(object2)的结果) 问要写在这4个class中的哪一个部分(where),为什么。
问题2: 不用overloading,也不用条件判断,要求返回猜拳的结果,class的Structure应该是怎样构建。

2.怎样单元测试 MVVM

3.在没有继承特性的语言下如何实现继承

4. 一个关系图:

JobType负责生成job的object。AttributeType 负责生成动态的attribute。

要求每个相同的jobtype的job都有相同数目相同attributetype的attribute.用伪代码实现

求解~~~~~持分

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1积分 +3 收起 理由
无视 + 3 这是智力题还是技术题?

查看全部评分

Advertisement
Advertisement

发表于 2012-3-7 22:38 |显示全部楼层

面试,甚至是电话面试,前的筛选题吧?

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

发表于 2012-3-7 22:44 |显示全部楼层
此文章由 HISOKA 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 HISOKA 所有!转贴必须注明作者、出处和本声明,并保持内容完整
怎样单元测试 MVVM
从来不做Unit Test. 什么公司budget这么多, 项目还有空余时间可以拿来写Unit Test玩

[ 本帖最后由 HISOKA 于 2012-3-7 20:46 编辑 ]

发表于 2012-3-7 23:31 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 HISOKA 于 2012-3-7 22:44 发表
从来不做Unit Test. 什么公司budget这么多, 项目还有空余时间可以拿来写Unit Test玩


佩服你在budget少的公司混下去的决心

budget多的公司咱惹不起,还躲不起吗

发表于 2012-3-7 23:54 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 yuba 于 2012-3-7 22:38 发表

面试题,之前做过一次IKM的测试

发表于 2012-3-8 14:09 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 IsDonIsGood 于 2012-3-7 22:31 发表
如题,直接看题目吧,我翻译了一下。
1.猜拳游戏。有3个class:Rock(拳头),Paper(巴掌)和 Scissor(剪刀)。这3个class有共同的super class GE.游戏中会调用这3个class来进行猜拳 object1.versus(object2).
问题1:要求写一个method返回猜拳的结果(object1.versus(object2)的结果) 问要写在这4个class中的哪一个部分(where),为什么。
问题2: 不用overloading,也不用条件判断,要求返回猜拳的结果,class的Structure应该是怎样构建。

2.怎样单元测试 MVVM

3.在没有继承特性的语言下如何实现继承

4. 一个关系图:
  
JobType负责生成job的object。AttributeType 负责生成动态的attribute。

要求每个相同的jobtype的job都有相同数目相同attributetype的attribute.用伪代码实现

求解~~~~~持分


1. 我觉得两个问题可以一并回答,就是模仿java实现compareTo()的机制
2. 这个不会,主要没用过MVVM
3. 比如js就是一个没有继承特性的语言,有很多小的开源实现在js上模拟类和继承机制。类继承机制是靠维护class meta info来实现的,java也是一样
4. 看上去像个抽象工厂模式的应用

[ 本帖最后由 wil 于 2012-3-8 14:14 编辑 ]
回忆是红色的天空
Advertisement
Advertisement

2012年度奖章获得者 2011年度奖章获得者

发表于 2012-3-8 17:57 |显示全部楼层

回复 IsDonIsGood 1# 帖子

此文章由 交易人生 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 交易人生 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这些问题真烦,第一个我觉得要建个base class 比如叫Hand里面有个虚函数 ,比如叫win,然后3个class 继承下来,实现这个虚函数,类似abstract factory pattern那种。调用的时候,直接调用win就可以了, 比如 bool result = Rock.Win(Paper)
0  to 1

发表于 2012-3-8 18:18 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 交易人生 于 2012-3-8 17:57 发表
这些问题真烦,第一个我觉得要建个base class 比如叫Hand里面有个虚函数 ,比如叫win,然后3个class 继承下来,实现这个虚函数,类似abstract factory pattern那种。调用的时候,直接调用win就可以了, 比如 bool result = Rock.Win(Paper)


是策略模式不是抽象工厂模式
回忆是红色的天空

发表于 2012-3-9 12:27 |显示全部楼层

先来第一题(Java)

此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
1.猜拳游戏。有3个class:Rock(拳头),Paper(巴掌)和 Scissor(剪刀)。这3个class有共同的super class GE.游戏中会调用这3个class来进行猜拳 object1.versus(object2).
问题1:要求写一个method返回猜拳的结果(object1.versus(object2)的结果) 问要写在这4个class中的哪一个部分(where),为什么。
问题2: 不用overloading,也不用条件判断,要求返回猜拳的结果,class的Structure应该是怎样构建。

abstract class GE {
        protected String id;
        protected Map<GE, String> resultMap;
        
        public String versus(GE other)  {
                    return resultMap.get(other);
        }

         public boolean equals(Object o) { // this method is important to the resultMap
                    if(o == null) return false;
                    if(!o instanceof GE) return false;
                    GE other = (GE)o;
                    return id.equals(other.id);
          }

           public int hashCode() { // this method is important to the resultMap, too
                     return id.hashCode();
           }
}

class Rock extends GE {
           protected String id = "Rock";
           public Rock() {
                     resultMap = new HashMap<GE, String>();
                     resultMap.put(new Rock(), "TIE");
                     resultMap.put(new Paper(), "LOSE");
                     resultMap.put(new Scissor(), "WIN");
           }
}
...

以上是问题2的回答
问题1可以用类似的思路,在父类里不放resultMap,而是放
protected GE destroying;
public String versus(GE other) {
            if(other.equals(this)) return "TIE";
            if(other.equals(destroying)) return "WIN";
            return "LOSE";
}
子类Paper的destroying是Rock对象, 依此类推

评分

参与人数 2积分 +6 收起 理由
IsDonIsGood + 4 偶对你的景仰如滔滔江水
wil + 2 虽然还有更好的做法,但根据面试题给定的要求限制,也只能这样做了

查看全部评分

八个避孕套

发表于 2012-3-9 12:35 |显示全部楼层

再来回答第二题

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

不过类似于Java里的MVC
View部分都是一些button之类眼睛看得见的东西,不适合也不需要做单元测试
Controller(ViewModel)可以用Mock Object来单元测试
Model单元测试不需要什么特殊的支持。
八个避孕套

发表于 2012-3-9 12:42 |显示全部楼层

再来回答第三题

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

"3. 比如js就是一个没有继承特性的语言,有很多小的开源实现在js上模拟类和继承机制。类继承机制是靠维护class meta info来实现的,java也是一样"
八个避孕套
Advertisement
Advertisement

发表于 2012-3-9 14:34 |显示全部楼层

最后回答第四题

此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
"要求每个相同的jobtype的job都有相同数目相同attributetype的attribute."
不知所云
job和attribute之间的数量关系,图中已经标明是1对1..*

发表于 2012-3-9 14:52 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 fyang1024 于 2012-3-9 14:34 发表
"要求每个相同的jobtype的job都有相同数目相同attributetype的attribute."
不知所云
job和attribute之间的数量关系,图中已经标明是1对1..*


哈哈,说的是有点绕,意思应该是:
比如jobtype A下的job a1, a2, a3...,每个an都有相同的对应的attribute,数目也好,类型也好,反正都一致的attribute组合

我感觉是当job工厂创建某个type的job时,同时也调用某个对应的attribute工厂实现去为这个jobtype产生对应的一致的attribute组合,应该是一个抽象工厂应用场景
回忆是红色的天空

发表于 2012-3-9 14:54 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这种题任何有自尊心的developler都会拂袖而去。

折腾人

发表于 2012-3-9 14:55 |显示全部楼层
此文章由 红烧鸡翅 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 红烧鸡翅 所有!转贴必须注明作者、出处和本声明,并保持内容完整
mvvm没听说过,其他都挺简单

发表于 2012-3-9 15:19 |显示全部楼层

回复 wil 13# 帖子

此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
明白了。
class JobType {
     List<AttributeType> attributeTypes;
     public Job createJob() {
            Job job = new Job(this);
            for(AttributeType attributeType : attributeTypes){
                 job.addAttribute(attributeType.createAttribute());
            }
            return job;
     }
}

class AttributeType {
      List<JobType> jobTypes;
      public Attribute createAttribute() {
             Attribute attribute = new Attribute(this);
             return attribute;
      }
}

class Job {
      JobType jobType;
      List<Attribute> attributes;

      public Job(JobType type) {
            this.jobType = type;
      }

      public void addAttribute(Attribute attribute) {
               if(attributes == null) attributes = new List<Attribute>();
               attribute.setJob(this);
               attributes.add(attribute);
      }
}

class Attribute {
       AttributeType attributeType;
       Job job;
      
       public Attribute(AttributeType type) {
              this.attributeType = type;
       }
      
       public void setJob(Job job) {
               this.job = job;
       }
}
八个避孕套
Advertisement
Advertisement

发表于 2012-3-9 15:25 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JobType和AttributeType应该是俩工厂,可以创建不同type的job和attribute的

我觉得这几个面试题出的挺好的,说明这个公司比较务实,比较重视代码质量,尤其是MVVM那个问题,说明他们的app web页面不是简单MVC能适用的
回忆是红色的天空

发表于 2012-3-9 15:35 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 wil 于 2012-3-9 15:25 发表
JobType和AttributeType应该是俩工厂,可以创建不同type的job和attribute的

我觉得这几个面试题出的挺好的,说明这个公司比较务实,比较重视代码质量,尤其是MVVM那个问题,说明他们的app web页面不是简单MVC能适用的

他们用的是WPF,MVVM的测试应该是针对WPF(SilverLight)来的。

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部