软件构造复习-18年期末试卷选择题
虽然通过老师下发的答题卡发现今年没有选择题,但还是总结了一下选择题希望能巩固一下自己的知识点。因为往年的教学大纲和今年的教学大纲有点不同,所以有些超纲的题目我就不在这里总结了,并且我会总结那种我认为比较有意义的题目,答案和思路仅供参考,若有疏忽,请指正,谢谢。
第一题一般都是考软件的三维视图,
通过三维视图我们可以发现,Memory dump是处在Run-time,Moment,Code-level层面的,故选C。
首先第一个是只有在运行时才会发现数组越界。第二个是编译器编译的时候,原本只能传int,现在传了String,类型不匹配报错。第三个是没有问题的。第四个是空引用,是在运行时解析才发现是空引用。故选B。
先看第1个和第2个,前置:1<2,后置:1=2。故规约强度:1>2.然后看第1个和第3个,前置:3<1,后置:3>1,故规约强度3>1.故规约强度:3>1>2.选B。
首先看第一个方法,类是WordList,public WordList一看就是creator方法的格式。第二个是void方法,ADT里的方法就是单纯的内部改值,所以是mutator方法。第三个返回类型是跟creator类型一样的,所以应该是producer方法。第四个是返回了一个map,应该是observer方法。故选A。
C选项并没有提及表示暴露的情况,ADT内部都遵循RI,但是一旦表示暴露了,外部可以任意的改ADT的值,就有可能导致RI不满足,选C.
自反和对称性比较好看,应该是满足的。而传递性不满足在于Math.abs(p.od-this.id)<=5,假设A,B,C的id分别是5,9,13,AB满足,BC满足,但是AC不满足,差了8,所以不满足传递性,选A。
A是private方法改为public方法就对了,C的话子类抛出的异常不能比父类的还大,D参数列表不一样,就变成了重载而不是重写了,故选B。
A如果3错误应该跳到8而不是10。C的话应该得走13。D的话如果要引起IOException就不应该走7。故选B。
红色的两块如果一个获得a,一个获得c,就会死锁。
①如果线程b结束前没有被interrupt,则会打印ac。
②如果线程b在sleep的时候就被interrupt了,这时候就会打印bc。
而如果要打印ab的话就必然有c,即abc。不可能只有ab,故选C。
A左边不可以表示c,右边可以表示c,故不等价。B的话\w和[a-z]不等价。C的话d?就表示可有d也可没有d,然后右边的话c其实没什么用,前面括号里已经有c了,所以(c*|d)其实就是单纯的可有d可没有d,故是等价的。选C。