软件构造18~19年选择题小结

下面是18~19年中部分选择题的小结,有一定的分析过程,因为没有正确答案,可能存在一定的错误,请辩证地看待这些分析!

18年选择题小结

在这里插入图片描述
这里重点是比较spec2和spec3的强弱(spec1比spec2前置更弱,后置相同,因此spec1强度更强),不看异常处理,spec2与spec3后置条件剩余部分相同,而spec3抛出NullParameterException异常处理str1或str2为空的情况,对应于spec2中的str1和str2长度大于0,由于spec2不抛出对应异常,可以相当于加强了spec2的后置条件,因此spec2后置条件更强,而spec2前置条件比spec3多出不包含重复字符,spec2前置条件又更强,因此spec2和spec3的强弱无法比较,因此应该是D选项。

在这里插入图片描述
AF是满射,但可能不是单射,因此也可能不是双射;
例如返回由该类fields生成的可变的List对象,不一定会有表示泄露;
C没有考虑到observer方法,observer也可能修改fields,需要检查RI;
参考计算时可以有分子分母可以有公约数的例子。

在这里插入图片描述
在红线的if中,只是进行了p.name的小写化,但是this.name并没有小写化,那么Abu和Abu应该是等价的,但是对应的以abu和Abu判断不等价,不符合,不满足自反性;
对称性同理不满足;
传递性由于id采取的是abs比较,对于1和4,4和8来说分别满足,但是1和8应该是不满足的,由等价的传递性1和8又是满足的,矛盾。

在这里插入图片描述
在Java重写时候,访问权限不能比原方法更低,函数的返回值类型、异常类型可以协变(仍然属于重写);函数参数类型不支持协变、逆变,当做重载处理。

在这里插入图片描述
对于A的表达式,第一个不能表示c,第二个可以;
对于B的表达式,\w表示数字、字母等,第一个不能表示数字;
对于C的表达式,后面的c可以转换到前面的(a|b|c)*中,等价。
对于D的表达式,第一个能表示dx,但是第二个不能。
在这里插入图片描述

19年选择题小结

在这里插入图片描述
SCI是配置项,显然是build-time,stack trace栈的轨迹,显然是变化的过程,period-view;
Code Snapshot是代码快照(那个画双线椭圆什么的),显然要跑起来,为run-time,Test Case是测试用例,不会跑着跑着变化,是时刻下的,moment-view;
Static linking library是静态库,属于build-time(动态库是run-time),Memory Dump是内存转储,轨迹是period,但是这个是moment-view;
AST为语法分析树,显然是静态编译下的,为build-time,Code Churn为代码变化,显然是一段时期的,为period-view。
在这里插入图片描述

在这里插入图片描述
Junit test在实验中经常用,显然要运行,而EclEmma是Eclipse的(本人实验中用的是IDEA,有点不太了解),是看测试覆盖率的,显然也要运行;
Checkstyle从字面(实际上也是)看是检查代码风格的,无需运行,而git commit在实验中经常用,不用运行(集成工具git使用的时候也只是提示warning和error没有运行);
Eclipse Memory Analyzer(MAT)与内存有关,显然要运行起来才与内存相关(好像是内存分析工具),jmap是一个多功能命令,可以查看heap对象信息,因此也需要运行;
SpotBugs是静态分析工具,不需要运行,VisualVM可以分析内存、CPU占用、线程等情况,显然需要运行。

在这里插入图片描述
经过18年的选择题,这个小题选出来问题不大,这里验证泛型对重写的影响,将C中的参数Number n删去,发现不符合重写,包括参数类型与通配符?搭配都无法符合重写。
在这里插入图片描述

在这里插入图片描述
在实际使用中,会关闭断言assert,所以不会实际影响代码性能;
unchecked异常可以捕获,只是捕获后无法处理,所以就不捕获了;
unchecked异常通常不捕获,也不做处理,更简洁,而checked要捕获并进行处理,有一定的健壮性;
assert false会直接退出,其他的还会抛出异常。

在这里插入图片描述
final是表示引用不变,s3是可变类型,应该是s3指出的箭头为双线,StringBuilder是可变类型,为单线椭圆;
set没有更新s3的内容,因此不应该有String"cd",应该是有String"c"(验证见下图);
set是final修饰,因此应该是set指出的箭头为双线,而不是HashSet的指出的箭头为双线。
在这里插入图片描述
经过上述分析,String"b"以及指向他的箭头不应该存在是正确的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海质粒ABCC9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值