软件构造考前复习-一些选择题

  1. Memory dump 属于软件三维度视图的_____
    A Build-time 和 code-level view
    B Run-time 和 period view
    C Run-time 和 moment view
    D Moment 和 component-level view

答案:D
知识点:软件构造的多维视图

MomentMomentPeriodPeriod
Code-levelComponent-levelCode-levelComponent-level
Build-timeSource code(源代码), AST(语法分析树), Interface-Class-Attribute-Method(Class Diagram类图)Package(包),Library(库),Source File(源文件),Static linking(静态链接), Test Case(测试用例)(Component Diagram模块图)Code Churn(代码变化)Configuration Item(配置文件),Version(版本)
Run-timeCode Snapshot(代码快照图),Memory dump(内存转储)Package,Library,Dynamic linking(动态连接),Configuration(配置),Database(数据库),Middleware(中间件),Network(网络),Hardware(硬件)(Deployment Diagram部署图)Execution trace(执行追踪),Procedure Call Graph(程序调用图), Message Graph(信息图)(Sequence Diagram时序图),Parallel and multi-threads/processes(并发和多线程/进程)Distributed processes(分布式进程)Event log(日志记录),Procedure Call Graph,Message Graph(Sequence Diagram),Parallel and multi-threads/processesDistributed processes

Memeory dump是内存转储,属于rum-time,moment和code-level view。

  1. 以下关于软件配置管理 SCM 和 Git 的说法,不正确的是____
    A 软件配置项 SCI 是软件演化过程中发生变化和 SCM 管理变化的基本单元,不需再细分
    B Git 中在本地机器上的.git 目录对应于 SCM 中的配置管理数据库 CMDB
    C Git 中的 SCI 是“文件”,它有三种形态:已修改(modified)、已暂存(staged)、已提交(committed)
    D Git 中两次相邻提交 v1 和 v2,若后者提交时间晚于前者,那么 Git 仓库中只记录 v2 中的文件相对于 v1 中的文件发生变化的代码行(增加和删除的代码行)。

答案:D
传统VCS存储版本之间的变化(行)。
Git存储发生变化的文件(而非代码行),不变化的文件不重复存储。

  1. 以下用“------”分割开的四个代码段在编译和执行时的结果分别是_______
int[] arr = new int[] {1,2};
arr[2] = 3;
-----------
int[] arr = new int[] {1,2};
arr[0] = "3";
-----------
String s = null;
System.out.println(s == null);
-----------
String s = null;
System.out.println(s.length);

A 编译错误 / 运行时错误 / 无错误 / 无错误
B 运行时错误 / 编译错误 / 无错误 / 运行时错误
C 编译错误 / 运行时错误 / 运行时错误 / 运行时错误
D 运行时错误 / 编译错误 / 编译错误 / 无错误

答案:B
知识点:类型检查

静态类型检查-编译错误举例
语法错误额外的标点和拼写错误
类名/函数名错误Math.sine(2)
参数数目错误Math.sin(30, 20)
参数类型错误Math.sin(“30”)
返回值类型错误在一个需要返回int类型的方法中return “30”
动态类型检查-运行时错误举例
非法的参数值例如,在整形表达式x/y中,当且仅当y的值为0时发生错误,否则不会出错。所以在这个表达式中,除0不是一个静态错误,而是一个动态错误
非法的返回值特定的返回值不能用要求的类型来表示
越界负下标或者下标过大
空指针调用null

第一段:越界,运行时错误
第二段:赋值类型错误,编译错误
第三段:无错误
第四段:空指针,运行时错误

4.函数 boolean hasSameCharset (String str1, String str2)用于判定两个字符串 str1 和 str2 是否包含了相同的字符集合。例如,“HIT” 和 “HITTIH” 都且仅包含H、I 、T 三个字符,但将"HIT"和"MIT"作为参数输入该函数则返回 false。以下给出了该函数的3 个不同 spec,其中 spec 强度最弱的是______

第1个
requires:str1 和 str2 的长度均>0
effects:若str1包含的字符集合与str2包含的字符集合相同,则返回true,否则返回false
第2个
requires:str1 和 str2 的长度均>0,且均不包含重复字符
effects:若str1包含的字符集合与str2包含的字符集合相同,则返回true,否则返回false
第3个
requires:
effects:若 str1 或 str2 为空,则抛出 NullParameterException;否则,若 str1 包含的字符集合与 str2 包含的字符集合相同,则返回 true,否则返回 false

A 第1个
B 第2个
C 第3个
D 无法判断
答案:B
知识点:spec强弱判断
spec变强:更放松的前置条件+更严格的后置条件

5.类 WordList 有以下四个方法,仅根据其方法定义来确定其类型,最有可能分别是________

public WordList(List<String> words)
public void unique()
public WordList getCaptitalized()
public Map<String, Integer> getFrequencies()

注:Creator ©, Mutator (M), Producer §, Observer (O)
A C / M / P / O
B C / O / M / O
C P / O / C / P
D C / M / O / O
答案:D

6.以下关于 ADT 的 RI 和 AF 的说法,不正确的是_______
A ADT 的 Abstract 空间(A)中的某个值,在其 Rep 空间®中可能有多个值与其对应
B 如果 ADT 的某个方法返回一个 mutable 的对象,并不一定表明该 ADT 产生了表示泄露
C 如果 ADT 的任意 constructor 所构造出的 object 都满足 RI、每个 mutator 方法执行结束后都保持 RI 为真,那么该 ADT 的 RI 就永远保持为真
D 一个 immutable 的 ADT,其 rep 可以是 mutable 的
答案:C
可能发生表示泄露,客户端在ADT外部的变化影响了ADT内部,使其不再符合RI。

7.类 Person 中 override 了 equals()方法,代码如下,那么该方法违反了____特性。注:name 是 String 类型,id 为 int 类型,二者均为 Person 的成员变量;Math.abs()用来计算绝对值,String.toLowerCase()将字符串中的所有字符变为小写。

public boolean equals(Object o) {
    if(o == null) return false;
    if(! (o instanceof Person) ) return false;
        Person p = (Person) o;
        if( p.name.toLowerCase().equals(this.name) && Math.abs(p.id - this.id) <= 5)
            return true;
    return false;
}

A 传递性
B 自反性、传递性
C 自反性、传递性、对称性
D 都未违反
答案:C
自反性:假设A是一个Person类对象,其中A.name = “A”,A.id = 0,那么有A.equals(A) == false,所以不满足对称性。
传递性:假设A,B,C是三个Person类对象,其中A.name = “a”,A.id = 0,B.name = “a”,B.id = 5,C.name = “a”,C.id = 10,那么有A.equals(B) == true,B.equals© == true,A.equals© == false,所以不满足传递性。
对称性:假设A,B是两个Person类对象,其中A.name = “A”,A.id = 0,B.name = “a”,B.id = 0,那么有A.equals(B) == true,B.equals(A) == false,所以不满足对称性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值