哈工大软件构造期末复习题集(2)

Java中的Primitive Type(int, char, boolean等)和Object Type(String, Boolean, Calendar等)的差异是____

A 前者在stack中分配内存,后者在heap中分配内存
B 使用前者的时空代价低,使用后者的时空代价高
C 前者是immutable的,后者是mutable的(Object Type可是immutable
D 前者和后者中的某些类型可通过auto-boxing进行自动转换,例如int和Integer

正确答案:ABD

以下__不是static type checking所能处理的编程错误

A 所调用函数的参数数目错误
B 调用一个指向null的对象的某个方法
C 函数的return语句返回的变量类型与函数声明中的返回值类型不匹配
D 赋值语句右侧的值类型与左侧的变量类型不匹配

正确答案:B

关于mutable和immutable的说法,不正确的是__

A 所有简单数据类型和所有相对应的封装类(Integer, Double, Boolean等)都是immutable的
B 所有数组都是mutable的
C 使用immutable类型可以降低程序蕴含bug的风险,但其时空性能相对较差
D 一个immutable的类,一旦其constructor方法执行结束并产生了类的实例,则该实例的任何成员变量都不能够再被做任何修改(Beneficent mutation,即immutable的属性是可变的,但是要保证用户角度是一样的

正确答案:D

针对final关键字,说法不正确的是___

A A final class declaration means it cannot be inherited.
B A final variable means it always contains the same value/reference but cannot be changed
C A final method means it cannot be overridden by subclasses
D The contents in a final Arraylist cannot be changed during its lifecycle.(内容可变,引用不变

正确答案:D

关于immutable和mutable data type的说法,正确的__

A 使用不可变类型,对其频繁修改会产生大量的临时拷贝
B 可变类型可直接修改其值而无需太多拷贝,从而提高效率
C 不可辩数据类型更“安全”,因为其值无法修改
D 使用可变类型做“全局变量”,可在不同模块之间高效率的进行共享数据读写

正确答案:ABCD

String a = "a";
String c = a;
a += "b";
c += "c";

StringBuilder b = new StringBuilder(a);
StringBuilder d = b;
b.append("b");
d.append("c");

假设执行之后未进行任何垃圾回收,此时内存里共有 [填空1] 个String对象和 [填空2] 个StringBuilder对象

此时c的取值是 [填空3] ,d的取值是 [填空4]

正确答案:
3;1;ac;abbc
(因为无回收,所以一开始的“a"也存在,有”a",“ab”,"ac"三个string,只new了一个StringBuilder,所以只有一个对象)

两个方法具有“行为等价性(behavior equivalence)”,以下说法正确的是_____

A 站在客户端的视角看,它们实现相同的功能
B 站在客户端的角度看,它们可能展现出不同的性能
C 它们具有相同的规约(spec)
D 它们具有相同的实现算法和异常处理策略
E 其实是针对同一个spec来说是等价的。若对这个spec进行更改,这两个方法也许就不等价了

正确答案:ABCE
(对于用户而言

以下说法正确的是___

A 除非在post-condition中明确声明过,否则方法内部代码不应该改变(mutate)输入参数
B 方法的spec描述里不能使用内部代码中的局部变量或该方法所在类的private属性
C 若在方法的post-condition中声明“client端不能修改该方法所返回的数量”,可以减少该方法的潜在bug(无法控制client)
D 若为某方法设计JUnit test case,在任何test case中对该方法的调用必须遵循其pre-condition

正确答案:ABD

以下关于ADT的RI和AF的说法,不正确的是___

A ADT的Abstract空间(A)中的某个值,在其Rep空间®中可能有多个值与其对应
B 若ADT的某个方法返回一个mutable的对象,并不一定表明该ADT产生了表示泄露(defensive copy)
C 若ADT的任意costructor所构造出的object都满足RI、每个mutator方法执行结束后都保持RI为真,那么该ADT的RI就始终为真(rep exposure)
D 一个immutable的ADT,其rep可以是mutable的(只要无rep exposure)

正确答案:C

关于Java interface的说法,正确的是__

A 不能有static方法
B 不能有constructor(构造器)
C 不能有final方法
D 不能有private方法
E 不能有fields(属性)(可以是public static final

正确答案:BCD

以下针对ADT等价性的说法,不正确的是____

A 如果对象a和b的R值被AF映射到相同的A值,则a和b等价
B 对对象a和b调用任何相同的方法,都会得到相同的返回值,则它们是等价的
C 对象a和b不等价,那么该ADT中不应存在任何方法op使得a.op()=b.op()
D 对象a和b是等价的,那么a和b的rep中每个field的值也一定是相等的

正确答案:CD

Java中有两种不同的操作来验证对象的等价性,分别为==和equals(),它们的“学名”是 [填空1] 等价性和 [填空2] 等价性。immutable

请填写中文

正确答案:
引用;对象

针对mutable的Java类,有两种等价性,分别为 [填空1] 等价性和 [填空2] 等价性。

请填写中文

正确答案:
观察;行为

1. 构件:是指语义完整,语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述通信接口和实现代码的复合体。2. 构件模型:是对构件本质特征的抽象描述。3. 构件组装:是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。4. 软件体系结构:Hayes Roth认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。5. 面向服务体系结构(SOA):本质上是服务的合,服务间彼此通信,这种通信可能是简单地数据传送,也可能是两个或更多的服务协调进行某些活动。6. 可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统特性的基本能力。7. 可修改性:是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性包括:可维护性、可扩展性、结构重组、可移植性。8. 敏感点:是一个或多个构件(和/或构件之间的关系)的特性。9. 权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。10. 软件产品线:就是在一个公共的软件资源合基础上建立起来的共享同一个特性合的系统合。11. 框架:是封装了特定应用族抽象设计的抽象类的合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值