【计算机类职业资格】(A)中级软件设计师下午试题-2及答案解析.doc
《【计算机类职业资格】(A)中级软件设计师下午试题-2及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】(A)中级软件设计师下午试题-2及答案解析.doc(15页珍藏版)》请在麦多课文档分享上搜索。
1、(A)中级软件设计师下午试题-2 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单时并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图 1 是顶层数据流图,图 2 是第 0 层数据流图,图 3 是第 1 层数据流图,其中(A)是加工 1 的子图,(B)是加工 2的子图。图
2、 1图 2(分数:15.00)(1).根据题意,图 2 中哪个文件可不必画出。(分数:5.00)_(2).根据题意,指出图 3(A)中缺失的数据流的名称,并指出该数据流的起点和终点。(分数:5.00)_(3).根据题意,指出图 3(B)中缺失的数据流的名称,并指出该数据流的起点和终点。(分数:5.00)_二、试题二(总题数:1,分数:15.00)说明某学校的教学系统描述如下:学生信息包括:学号(SNo)、姓名(Sname)、性别(Sex)、年龄(Age)、入学年份(Year)、主修专业(Major),其中学号是入学时唯一编定的。课程信息包括:课程号(CNo)、课程名称(CName)、学时(Pe
3、riod)、学分(Credit),其中课程号是唯一编定的。一个学生可选多门课,每个学生选每门课有一个成绩。图是经分析得到的 E-R 图。(分数:15.00)(1).设基本表:Student(SNo, SName, Sex, Age, Year, Major), Course(CNo, Cname, Period, Credit), Grade(SNo, CNo, Grade)通过如下 SQL 语句建立,请在 SQLN 句空缺处填入正确的内容。CREATE TABLE Student (SNo CHAR(6) NOT NULL,SName CHAR(20),Sex CHAR(1),Age INT
4、EGER,Year CHAR(4),Major CHAR(20),_;CREATE TABLE Course (CNo CHAR(6) NOT NULL,CName CHAR(20),Period INTEGER,Credit INTEGER,_;CREATE TABLE Grade (SNo CHAR(6) NOT NULL,CNo CHAR(6) NOT NULLGrade REAL,_,_,_;(分数:5.00)填空项 1:_(2).若另有表 Teach(CName, TName)存储教师任课情况,Tname 表示教师名。用 SQL 创建一个含有学号、姓名、课程名、成绩、任课教师名的“主
5、修专业为计算机 CS”的学生成绩视图,并要求进行修改、插入操作时保证该视图只有计算机系的学生。请在 SQL 语句空缺处填入正确的内容。CREATE VIEW SG _SELECT Student.SNo, SName, Grade, Course.CName, TNameFROM Student, Grade, Teach,WHERE _AND _AND Major = CS,_;(分数:5.00)填空项 1:_(3).如下的 SQL 语句是用于查询“每个学生的选修课程数、总成绩、平均成绩”的不完整语句,请在空缺处填入正确的内容。SELECT Student.SNo, _, SUM(Grade
6、), AVG(Grade)FROM Student, GradeWHERE Student.SNo = Grade.SNo,GROUP BY _;(分数:5.00)填空项 1:_三、试题三(总题数:1,分数:15.00)说明银行的自动柜员机(ATM)的功能描述如下:(1)金融卡与信用卡识别:包含伪卡识别以及密码验证;(2)主菜单项:这是一台 ATM 最主要的人机界面,提供各项功能给客户,具体有:提款、转帐、更改密码以及存款;(3)结束操作:客户执行完“菜单项”的功能后,可以选择“打印单据”或“不打印单据”,选好后就结束此次交易。注意,ATM 除了能处理本行的银行卡外,其他银行的银行卡也应该能处
7、理,通过“金融中心”与其他银行主机进行数据交换。另外,为了方便,ATM 还提供快捷提款,并提供代交费功能(代交费是以转帐的方式处理的)。该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML 类图表示。(分数:15.00)(1).图 1 是该系统的用例图,根据题意,用题中所述术语指出图 1 中参与者 A、B 分别是什么,用例 C、D分别是什么。*图 1(分数:7.50)_(2).ATM 机有如下状态:空闲、银行卡验证、业务选择等待、取款金额输入、密码修改、出钞、单据打印。ATM 机一般处于空闲状态,当有客户插入银行卡,则进行银行卡验证,若银行卡无效则结束服务,否则进入业务选择等待。业
8、务有取款、修改密码等,也可以选择退出结束服务,ATM 返回空闲状态。选择取款业务后,等待取款金额输入,确认后判断余额是否足够,若余额不足,则给出提示信息,并进入业务选择等待;若余额充足,则出钞,若客户需要打印单据则进入单据打印状态,否则返回业务选择等待。选择任意一个业务后,可以取消返回业务选择等待。图 2 描述了 ATM 状态的转变情况。*图 2请指出判定 A、转换 B 及状态 C 分别是什么。(分数:7.50)_四、试题四(总题数:1,分数:15.00)说明操作系统中,死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都
9、将无法再向前推进。面对死锁问题有两个解决方案:预防死锁和避免死锁。预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。银行家算法(Bankers algorithm)是 Dijkstra 于 1965 年提出的一个经典的避免死锁的算
10、法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令 Request(i)是进程 P(i)请求向量,如果Request(i)j=k 则进程 P(i)希望请求 j 类资源 k 个。具体算法步骤如下:(1)如果 Request(i)Need(i)则出错(请求量超过申报的最大量),否则转到(2);(2)如果 Request(i)Available 则 P(i)等待,否则转(3);(3)系统对 P(i)所请求的资源实施试探分配,并更改数据结构中的数值;(4) Available = Avail
11、able - Request(i):Allocation(i) = Allocation(i) + Request(i);Need(i) = Need(i) - Request(i);(5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程 P(i)继续等待。所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序 P1, P2, , Pn 就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。(分数:15.00)(1).简述产生死锁的四个必要条件。(分数:5.00)_(2).设系统中有三
12、种类型的资源(A, B, C)和五个进程(P0, P1, P2, P3, P4),某时刻的资源分配状态如表所示。给出该时刻存在的一个安全序列。Allocation Max AvailableA B C ABCP00 1 0 753P13 0 2 322 A B CP23 0 2 902 2 3 0p32 1 1 222P40 0 2 433(分数:5.00)_(3).若系统中有同类资源 16 个,有 4 个进程共享该资源。已知 P1、P2、P3、P4 所需总资源分别是8、5、9、6。各进程请求资源次序为(序号,进程,申请量):(1, P1, 6)、(2, P2, 4)、(3, P3, 5)、(
13、4, P4,1)、(5, P1, 1)、(6, P2, 1)。若用银行家算法为它们分配资源,分析每一步请求以后,各个进程还需的资源数以及系统所剩资源数,并指出系统是否安全。注,当某序号的申请导致系统不安全时,跳过该请求(拒绝该请求)继续往下判断,相当于将该进程阻塞。(分数:5.00)_五、试题五(总题数:1,分数:15.00)1.说明为网球比赛的选手安排比赛日程。设有 n(n=2m)位选手参加网球循环赛,循环赛共进行 n-1 天,每位选手要与其他 n-1 位选手赛一场,且每位选于每天赛一场,不轮空。设 n 位选手被顺序编号为 1, 2, , n,比赛的日程表是一个 n 行 n-1 列的表,第
14、i 行 j 列的内容是第 i号选手第 j 天的比赛对手。用分治法设计日程表,就是从其中一半选手(2 m-1位)的比赛日程导出全体 2m选手的比赛日程。从众所周知的只有两位选手的比赛日程出发,反复这个过程,直至为 n 位选手安排好比赛日程为止。如两位选手比赛日程表如下所示:11 22 1如四位选手比赛日程表如下所示: 1231234214334124321函数中使用的预定义符号如下:#define M 64int aM+1M;函数void main() int twom1, twom, i, j, m, k;printf(“指定 n(=2 的 k 次幂)位选手, 请输入 k: /n“);scan
15、f(“*d“, /*预设两位选手的比赛日程*/al 1 = 2;a2 1 = 1;m = 1;twoml = 1;while(_) m+;twoml += twoml;twom = twoml * 2;/*为 2m 位选手安排比赛日程*/*填日程表的左下角*/for(i = twoml + i; _; i+) for(j = i; j = twoml - i; j+) ai j = ai - twoml j + twoml;/*填日程表的右上角*/a1 twoml = _;/*填日程表右上角的第 1 列*/for(i = 2; i = twoml; i+) ai twoml = ai - 1
16、twoml + i;/*填日程表右上角的其他列,参照前一列填当前列+/for(j = twoml + 1; j twom; j+) for(i = i; i twoml; i+) ai j = _;atwoml j = al j - 1;/*填日程表的右下角*/for(j = twoml; j twom; j+) for(i = i; i = twoml; i+) a_ j = i;/*输出日程表*/for(i = i; i = twom; i+) for(j = i; j twom; j+) printf(“%4d“, ai j);printf(“/n“);printf(“/n“);(分数:
17、15.00)_六、试题六(总题数:1,分数:15.00)2.说明很多时候,希望某些类只有一个或有限的几个实例,典型解决方案是所谓单身(singleton)模式。但在多线程情况下,singleton 模式有可能出现问题,需要进行同步检查。如果对“检查 singleton 对象是否已经创建”进行同步,则存在严重的瓶颈,所有的线程都必须等待检查对象是否存在。解决方式是一种称为Double-Checked-Locking 模式,其意图是将非必须的锁定优化掉,同步检查最多只发生一次,因此不会成为瓶颈。以下是 C+语言实现,能够正确编译通过。C+代码class USTax_:USTax( ) ; /构造函
18、数public:static USTax* getInstance();private:static USTax* instance;_ = NULL;USTax* USTaxgetInstance() if (instance = NULL) /进行某种同步cout“实例暂时不存在“endl;if(_) cout“实例不存在,创建实例. “endl;instance = _;cout “实例创建成功 “endl;elsecout “实例已被创建了“endl;elsecout“实例已经存在“ endl;return _;(分数:15.00)_七、试题七(总题数:1,分数:15.00)3.说明很
19、多时候,希望某些类只有一个或有限的几个实例,典型解决方案是所谓单身(Singleton)模式。但在多线程情况下,singleton 模式有可能出现问题,需要进行同步检查。如果对“检查 Singleton 对象是否已经创建”进行同步,则存在严重的瓶颈,所有的线程都必须待检查对象是否存在。解决方式是一种称为Double-Checked-Locking 模式,其意图是将非必须的锁定优化掉,同步检查最多只发生一次,因此不会成为瓶颈。以下是 Java 语言实现,能够正确编译通过。Java 代码public class USTax private static USTax instance = null;
20、_ USTax() private _ static void doSync() if(instance = null) System.out.println (“实例不存在,创建实例.“);instance = _;System.out.print ln (“实例创建成功“);elseSystem.out.println (“实例已被创建了“);public static USTax getInstance() if(instance = null) System.out.println (“实例暂时不存在“);_; / /同步控制elseSystem.out.println (“实例已经存
21、在“);return _;.(分数:15.00)_(A)中级软件设计师下午试题-2 答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单时并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图 1 是顶层数据流图,图 2 是第 0 层数据流图,图 3 是第 1 层数据流图,其中(A
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 中级 软件 设计师 下午 试题 答案 解析 DOC
