《软件设计师考试难题详解》由会员分享,可在线阅读,更多相关《软件设计师考试难题详解(4页珍藏版)》请在金锄头文库上搜索。
1、 高速缓存Cache与主存间采用全相联地址映像方式,高速缓存的容量为4MB,分为4块,每块1MB,主存容量为256MB。若主存读写时间为30ns,高速缓存的读写时间为3ns,平均读写时间为3.27ns,则该高速 缓存的命中率 (1) %。若地址变换表如下所示,则主存地址为8888888H时,高速缓存地址为 (2) H 解析:(1)D 这是一道命中率的计算题.公式:cache读写时间 * 命中率+主存读写时间 * (1-命中率)=平均读写时间。设命中率为x,根据题意可以得到3x+30(1-x)=3.27得出:x=0.99(2)D这道题一个是考查直接映像、全相联、组相联,以及在具体映射时候是如何实
2、现的。这里有个基本的计算,那就是1M=10 00 00H这样是不是就比较醒目了:内存地址范围 Cache地址范围3800000H-38FFFFFH 000000H-0FFFFFH8800000H-88FFFFFH 100000H-1FFFFFH5900000H-59FFFFFH 200000H-2FFFFFH6700000H-67FFFFFH 300000H-3FFFFFH=某指令流水线由5段组成,各段所需要的时间如下图所示。 连续输入10条指令时的吞吐率为_(6)_。(6)A10/70tB10/49tC10/35tD10/30t解析:(6)C。只要你会画时空图就知道怎么做了。表示正执行第一条
3、指令,表示正执行第二条指令每段时间轴 t3t3t t2t t第一条指令完成时间是8t。可以看出由于指令重叠,此后每3t 完成一条指令(即+号)。所以,后9条指令完成时间是9*3t。所以它完成10个任务所用的时间为:8t+9*3t=35t吞吐率=n/Tk,n为任务数,Tk是完成n个任务所用的时间。因些吞吐率为:10/35t。=与逆波兰式ab+-c*d-对应的中缀表达式是 (45) 。(45)A. a-b-c*dB. -(a+b)* c-dC. -a+b*c-dD. (a+b)* (-c-d)解析:B。逆波兰式不需要括号,将运算对象写在前面,而把运算符号写在后面。先看一个中缀表达式:1+(2*(4
4、-2)%5,它的逆波兰式(后缀表达式)为:1242-*5%。根椐这个规律,可以明白:-(a+b)*c-d正好与ab+-c*d-相配。PS:在网上查资料,发现自己在数据结构课堂上曾学习过与逆波兰式相关的知识。但当时老师似乎并没有提到逆波兰式这个称号,也有可能是自己没用心听吧。某软盘有40个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,则读取一个100块的文件需要(24)时间。 (24)A.17500msB.15000msC.5000msD.25000ms答案:A解析:读取一个块
5、的时间为:寻道延迟+旋转延迟+传送时间。所以传输100块文件需要的时间为:(10*5+100+25)*100=17500两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是_(35)_个。(35)A25B30C50D60 答案:C,即50。解析:设程序中原有故障总数是 B0测试组一发现的故障总数是 B1测试组二发现的故障总数是 B2其中两组发现的相同故障数目是BC则B0=(B1*B2)/BC即:=(25*30)/15=50 已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护
6、的方法F3;类P和类Q为类O的派生类,其继承方式如下所示:class P:protected O class Q:public O 在关于方法F1的描述中正确的是(1)在关干方法F2的描述中正确的是(2)。在关于方法F3的描述中正确的是(3)。 (1)A方法Fl无法被访问B只有在类O内才能访问方法F1C只有在类P内才能访问方法F1D只有在类Q内才能访问方法F1(2)A类O、P和Q的对象都可以访问方法F2B类P和Q的对象都可以访问方法F2C类O和Q的对象都可以访问方法F2D只有在类P内才能访问方法F2(3)A类O、P和Q的对象都可以访问方法F3B类O、P和Q的对象都不可以访问方法F3C类O的对象
7、可以访问方法F3,但类P的对象不能访问方法F3D类P的对象可以访问方法F3,但类Q的对象不能访问方法F3解析:类实际上就是由一组描述对象属性或状态的数据项和作用在这些数据项上的操作(或称为方法、成员函数等)构成的封装体。类的定义由关键字class打头,后跟类名,类名之后的括号内是类体,最后以“;”结束。类与C中的结构大致相似,其不同之处在于类中规定了哪些成员可以访问,哪些成员不可以访问。这些都通过访问指明赋予以说明。访问指明符有三种,分别是private、protected和public。private成员私有化,除了该类的成员函数以外,谁也不能访问它们。public成员公有化,程序中的所有函
8、数(不管是类内定义的还是类外定义的),都可以访问这些成员。protected成员受限保护,只有该类及该类的子类的成员函数才能够访问。在类的成员定义中,如果没有指明符,则系统默认为private。要注意的是,在C+中,一个类的友元是可以访问该类的所有成员的。继承的限定也有三种,分别是private(私有继承)、protected(保护继承)和public(公有继承)。在public继承时,派生类(子类)的public、private、protected型的成员函数可以访问基类中的public成员和protected成员,派生类的对象仅可访问基类中的public成员。在private继承时,派生类
9、的public、private、protected型的成员函数可以访问基类中的public成员和protected成员,但派生类的对象不可访问基类中的任何成员。在protected继承时,派生类的public、private、protected型的成员函数可以访问基类中的public成员和protected成员,但派生类的对象不可访问基类中的任何成员。使用class关键字定义类时,缺省的继承方式是private,也就是说,当继承方式为private继承时,可以省略private。在本题中,已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3;类P和类Q为类
10、O的派生类,且P是保护继承方式,Q是公有继承方式。因为F1是类O的私有方法,因此,只有在类O内才能访问方法F1。F2是类O的公有方法,所以类O和Q的对象都可以访问方法F2。F3是类O的受保护的方法,因此,类O、P和Q的对象都不能访问方法F3。因此,(1)-(3)的正确答案为B、C、B。 下图中的程序由A、B、C、D、E 5个模块组成,下表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块A、D和E都要引用一个专用数据区。那么A和E之间耦合关系是_(32)_。 编号参数返回值1数据项数据项2数据项数据项3功能码无4无列表 (32)A公共耦合B数据耦合C内容耦合D无耦合答案:A。解析:公
11、共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。对于下面的文法GS,_是其句子(从S出发开始推导)。GS:SM|(S,M)MP|MPPa|b|c|x|x|zA(a,O)B(fac,bb),g)C(abc)D(c,(da) 答案:(第44题)解析:通过First集就可以判断了