下面是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"以及指向他的箭头不应该存在是正确的。

软件构造18~19年选择题小结相关推荐

  1. 哈工大18年春软件构造课程讨论题

    这是哈工大18年春软件构造课程(徐汉川老师)的讨论题目,少部分答案摘录自课件PPT和网上的资源(链接在文中给出).如有错误还望指出,谢谢. 一.在软件测试过程中,"测试用例的数目" ...

  2. 2022哈工大软件构造lab1小结(知识点)

    哈工大软件构造lab1小结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 问题一 使用的库 异常处理机制 字符串内容检查 写入文件 问题二 problem 3:画一 ...

  3. 哈工大软件构造自我复习总结Part1

    本文结合2019,2018哈工大考试试卷的知识点对于课程中的知识点再次进行总结,方便进行自我复习. Part1 分析各个部分的成绩构成,100分试卷折算60分 选择题共15-16题每题2分,分值约为3 ...

  4. 软件构造期末复习错题和高频知识点

    前言: 根据四张考试卷涉及到的部分知识点的总结 对于大题的话,个人写了部分代码可以参考该链接 个人对考试大题的几个代码 今天是6月13号 15号软件构造 没有把握 19号马原 等18号再背 文章目录 ...

  5. HIT 软件构造 lab3实验报告

    2020年春季学期 计算机学院<软件构造>课程 Lab 3实验报告 姓名 赵旭东 学号 1180300223 班号 1803002 电子邮件 1264887178@qq.com 手机号码 ...

  6. 哈工大软件构造期末知识点总结

    哈工大软件构造试题构成: 1.30-45分的选择题,10-20题 2.55-70分的简答与设计题,5-6题 考试知识点(不全面): 1.git工具的知识点 2.Java设计模式(一共有23个,主要考察 ...

  7. HIT 2019春软件构造Lab1

    1 实验目标概述 1 2 实验环境配置 1 3 实验过程 1 3.1 Magic Squares 1 3.1.1 isLegalMagicSquare() 1 3.1.2 generateMagicS ...

  8. 软件构造LAB2心得

    目录   1 实验目标概述 2 实验环境配置 3 实验过程 3.1 Poetic Walks 3.1.1 Get the code and prepare Git repository 3.1.2 P ...

  9. 哈工大软件构造 复习

    哈工大软件构造试题构成: 1.30分的选择题 2.70分的简答题 2019考试知识点(重要的,但不涵盖全部考试范围): 1.git工具的知识点(没有考察命令行,考察的主要是git的演变及各部分的作用) ...

最新文章

  1. no.8 C控制语句:循环 01
  2. 一个FragmentActivity多个Fragment的生命周期事件记录
  3. idea 中 git 修改了文件却无法提交(No Changes detected)
  4. 沃尔玛正测试货架扫描机器人,并称不会取代人类员工
  5. html object标签与java,html之object标签的classid收集
  6. 互联网的上半场,建立平台获取流量
  7. Android 核心组件 Activity 之上
  8. 基于RV1126平台imx291分析 --- 先研究media再分析应用调用
  9. 异星工场服务器直连,Factorio 异星工厂 搭建服务器
  10. protel DXP 2004
  11. Fences 2.1 - 高效实用的桌面图标栅栏分类管理软件神器 (桌面图标再多也不会乱)
  12. 虚拟机Windows xp联网
  13. 树莓派_360wifi2_佳能MP236打印机
  14. Logistic 回归的决策边界
  15. 简单系统U盘制作 / 安装系统
  16. 【Eternallyc】函数PlaySound和sndPlaySound
  17. 怎样导入SDWebImage
  18. CSS遮罩父元素透明,子元素不透明
  19. 一个元素位于另一个元素之上,点击上面的元素引发下面元素事件操作
  20. bboss-elasticsearch--使用/教程/实例

热门文章

  1. tomcat启动失败问题
  2. 作为中国站长,你能做到20个…
  3. 第十周access课总结/第十周CoreIDRAW课总结
  4. REDIS三主三从集群搭建笔记(redis版本5.0.8)
  5. Redis百度网盘下载
  6. 布尔表达式和正则表达式_简化布尔表达式的实例
  7. 【商城应用】商城APP首页方案设计
  8. base-kernel-partion
  9. JPEG压缩原理(DCT)
  10. 修改Tomcat默认端口方法