《软件安全》试卷 A (试卷共3页,答题时间120分钟。答案全部写在答题纸上) 一、选择题(每小题 1分,共 10分) 1、解决缓冲区溢出的方法,以下不正确的一项是()。 A、 积极检查边界 B、 程序指针检查 C、注重程序应用性能 D、不让攻击者执行缓冲区内的命令 2、以下说法正确的一项是_____。( ) A. 任何软件都是不安全的 B. 软件无响应一定是软件存在漏洞 C. 黑盒测试就是分步检测软件代码 D. 通过测试能够完全解决软件安全问题 3、下列说法哪个是不正确的。( ) A. 进程是线程的容器 B. 单个进程可以包含多个线程 C. 进程中不一定有线程 D. 进程中一定有线程 4、下列关于异常的描述中,错误的是( ) A.异常是一种经过修正后程序仍可执行的错误 B.异常是一种程序在运行中出现的不可恢复执行的错误 C.不仅Java语言有异常处理,C++语言也有异常处理 D.出现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行 5、下列关于抛出异常的描述中,错误的是_______. A.捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理 B.在说明要抛出异常的方法时应加关键字throw<异常列表> C.<异常列表>中可以有多个用逗号分隔的异常 D.抛出异常的方法中要使用下述抛出异常语句:throw<异常名>;其中,<异常名>是异常类的类名 6、以下哪一项不是软件生命周期中的阶段( ) A.设计阶段 B.分析阶段 C.维护阶段 D.销售阶段 7、下列哪一项不是导致线程停止的方法( ) A.wait() B.sleep() C. join() D。stop() 8、下列关于造成线程死锁条件的说法,错误的是( )。 A.产生线程死锁的四个条件是:互斥条件、请求与保持条件、不剥夺条件和循环等待条件 B.死锁的四个条件是充分条件 C.死锁的四个条件是必要条件 D.死锁一般会在两个以上线程执行时产生 9、下面对静态成员的描述中,错误的是( )。 A、静态成员的提出是为了解决数据共享问题 B、静态数据成员的初始化在类体外进行 本试卷共× 页 第 1 页 C、类的不同对象有不同的静态数据成员值 D、静态成员函数可以直接访问类中的静态数据成员 10、下列对封装性的描述中,错误的是( ). A.封装体包含了属性和行为 B.封装体中的属性和行为的访问权限是相同的 C.被封装的某些信息在封装体外是不可见的 D.封装使得抽象的数据类型提高了可重用性 二、填空题(每空 1 分,共 12分) 1、一般来说,软件的安全性隐患来源于以下4个方面: 、 、 、 。 2、进程在内存中运行时,被分为3个区域,分别是: 、 、 。 3、解决整数溢出的方案包括 、 。 4、假如多个线程出现死锁情况,排除死锁的方案为: 、 、 。 三、名词解释题(每题 4 分,共 20 分) 1、类 2、进程 3、堆栈缓冲区 4、线程的生命周期 5、异常抛出 四、简答题:(每题5分, 共25分) 1、在线程的生命周期中包括哪几种状态? 2、进程和线程有什么区别? 3、Java中,异常和错误的区别? 4、什么情况下会出现整数溢出? 5、怎样解决线程因抢占共享代码/资源而产生的结果错误? 五、程序设计题:(第一题14分,第二题19分,共33分) 1、回答问题,填写程序缺少部分,实现题目要求: (1)下面的程序在运行时会产生什么问题?(4分) (2)修改以下代码,解决出现的问题。(10分) public class P03 implements Runnable{ static Object S1 = new Object(),S2=new Object(); public void run(){ if(Thread.currentThread().getName().equals("th1")){ synchronized(S1){ System.out.println("线程1锁定S1"); synchronized(S2){ System.out.println("线程1锁定S2"); } } } else{ synchronized(S2){ System.out.println("线程2锁定S2"); synchronized(S1){ System.out.println("线程2锁定S1"); } } } } public static void main(String[] args){ Thread t1 = new Thread(new P03(),"th1"); Thread t2 = new Thread(new P03(),"th2"); t1.start(); t2.start(); } } 2、编写程序(20分) 异常处理是程序编写过程中的必要部分,一般在容易产生异常的代码段需要使用try-catch代码块捕获异常并处理。请编写一个程序,客户输入一个数字,打印其平方,但是如果输入出错,通过异常处理不断提示用户重新输入,直到输入正确为止。 本文来源:https://www.wddqw.com/doc/fd6dd4b20342a8956bec0975f46527d3240ca6dd.html