1.在软件开发过程中,我们可以采用不同的过程模型,下列有关 增量模型描述正确的是()
A 是一种线性开发模型,具有不可回溯性
B 把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件
C 适用于已有产品或产品原型(样品),只需客户化的工程项目
D 软件开发过程每迭代一次,软件开发又前进一个层次
解析:增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
2.下面有关值类型和引用类型描述正确的是()?
A 值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址。
B 值类型数据是在栈上分配内存空间,它的变量直接包含变量的实例,使用效率相对较高。而引用类型数据是分配在堆上,引用类型的变量通常包含一个指向实例的指针,变量通过指针来引用实例。
C 引用类型一般都具有继承性,但是值类型一般都是封装的,因此值类型不能作为其他任何类型的基类。
D 值类型变量的作用域主要是在栈上分配内存空间内,而引用类型变量作用域主要在分配的堆上。
解析:
3.如何在多线程中避免发生死锁?
A 允许进程同时访问某些资源。
B 允许进程强行从占有者那里夺取某些资源。
C 进程在运行前一次性地向系统申请它所需要的全部资源。
D 把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。
解析:死锁:在多道程序设计环境下,多个进程可能竞争一定数量的资源,。一个进程申请资源,如果资源不可用,那么进程进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待的进程有可能无法改变状态,这种情况下称之为死锁。
死锁的四个条件:
互斥:至少有一个资源必须处在非共享模式,即一次只能有一个进程使用,如果另一进程申请该资源,那么申请进程必须延迟直到该资源释放为止。
占有并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
非抢占:资源不能被抢占
循环等待:有一组进程{P0,P1,...Pn},P0等待的资源被P1占有,P1等待的资源被P2占有,Pn-1等待的资源被Pn占有,Pn等待的资源被P0占有。
int s = 0; for(int i = 1 ;i<=1000;i+=2){ s = s+ i; } System.out.println(s);
5.关于递归法的说法不正确的是( )
A 程序结构更简洁
B 占用CPU的处理时间更多
C 要消耗大量的内存空间,程序执行慢,甚至无法执行
D 递归法比递推法的执行效率更高
解析:递归就是一层一层的调用函数进栈,会大量存储重复的数据,占用大量内存,且会有栈溢出的可能。而递推就是不用存储重复的数据,从底层获得了数据直接递给上一层即可。
6.字符串”ABCD”和字符串”DCBA”进行比较,如果让比较的结果为真,应选用关系运算符()
A >
B <
C =
D >=
解析:比较的时候比的是ASCII码,从第一位开始比,如果第一位能比较出谁大谁小则直接返回,若相等,比较下一个字符,因此选B
7.下面是一段关于计算变量s的算法: ①变量s的初值是0 ②变量i从1起循环到n,此时变量s的值由下面的式子表达式计算 ③s=s+(-1)*i ④输出变量s的值 这个计算s值的算法中,s的代数式表示是( )。
A 1-2+3-4+„+(-1)n*(n-1)
B 1-2+3-4+„+(-1)n-1*n
C 1+2+3+4+...+(n-1)+n
D -1-2-3-4-...-n
解析:对于s=s+(-1)*i,(-1)乘i(0到n)永远为负,说明计算式一直在减,可以排除abc
8.以下运算符中运算优先级最高的是( )
A +
B OR
C >
D /
解析:数字越小表示优先级越高。
9.采用哪种遍历方法可唯一确定一棵二叉树?( )
A 给定一棵二叉树的先序和后序遍历序列
B 给定一棵二叉树的后序和中序遍历序列
C 给定先序、中序和后序遍历序列中的任意一个即可
D 给定一棵二叉树的先序和中序遍历序列
解析:给出中序遍历之后再给一个其他的遍历就能够确定了,前序和后续不能确定。
例如:先序abdecf,中序dbeafc。
分析思路.
1、先序就是根左右,中序就是左根右。所以在先序中a在前即为根。在中序中找到a,则dbe为其左子树,fc为其右子树。
2、dbe左子树在先序中b在前说明b为根,则中序中d为b左子树,e为b右子树。
3、同理fc在先序中c在前说明c为根,中序中f在c前,说明f为c的左子树。
即得如下图:
a
/
b c
/ /
d e f