软件构造选择题错题总结

2018年选择题
在这里插入图片描述
解析:D:记录变化代码行的是传统的版本控制系统,而git记录的是发生变化的文件,未发生变化的文件不重复存储。
在这里插入图片描述
解析:判断方法所属类型需要根据参数、方法名与返回值共同确定。
如第一个方法WordList与类重名,那么必定是构造方法,属于Creator;
返回值为void大多为mutator,因为producer需要返回一个与同类型的对象,observer需要返回对象的特定属性,只有mutator,在改变对象时可以没有返回值;
第三个方法返回同类型对象,要么是Creator,要么是producer,而前面已经确定有Creator,并且根据方法名,应该是根据wordlist的大小写情况产生新对象,是producer;
第四个方法返回的是不同类型,是observer。
在这里插入图片描述
解析:答案是B,来分析一下A,C,D的错误
A选项方法的可见性更弱了,由public改为private,不符合要求,应该是维持可见性不变或更强。
C选项抛出的异常异常类型更宽泛,为逆变,而根据LSP原则,抛出异常应满足协变。
D选项参数List<?>与ArrayList<?>并没有父类与子类的关系,涉及到泛型的子类型。
在这里插入图片描述
解析:
静态成员变量全部保存在堆中;
对象类型变量全部保存在堆中;
局部对象变量的引用保存在栈中,注意,仅仅是引用保存在栈中,对象本体仍然保存在堆中;
局部基本类型变量保存在栈中;
全局的基本类型变量即为成员变量,有静态和非静态之分,都保存在堆中,只不过静态的成员变量保存在堆的方法区。
在这里插入图片描述
在这里插入图片描述

2019年选择题
在这里插入图片描述
经过询问老师,B,C都是对的。
解析:
A选项,由于Date的值是可变的,当存在其他引用指向该对象时,可改变Date对象的值而保持引用不变。
B选项:由于state模式下要委托给state进行操作,根据处于的不同state来执行不同操作,因此state是会变化的,是mutable的。
C选项:由于括号里采用了new的方式,因此操作都没有办法绕开包装器,因此是无法变化的。
D选项:iterator存在remove的mutator
在这里插入图片描述
解析:
A选项,由输出信息无法判断异常是否被捕获
B选项,确实无法确定
C选项,可能A的异常类型是其他类型,如FileNotFoundException,然后B捕获后再抛出CarAlreadyParkingException,C中继续传递…
D选项,可能被捕获后又抛出异常
在这里插入图片描述
解析:
A选项,sleep函数并不会释放锁
B选项,正确,多个操作间仍然可能存在交错竞争,从而破坏threadsafe
C选项,如单例模式中,可能因为null的判断与new操作的交错破坏rep
D选项,一个方法的一条语句还可能被分为多个原子操作,不同操作间形成交错
在这里插入图片描述
在这里插入图片描述
解析:
A选项,final修饰代表引用不可变,因此s3指向椭圆的线应该是双线,但由于StringBuilder是可变类型,因此椭圆应保持单线
B选项,正确,因为set中已经保存了一个"b"字符串
C选项,确实需要指向新椭圆,但不是"cd",而应该是"c"
D选项,应该是set指向HashSet椭圆的线是双线。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值