一、单项选择题 12. 在Java语言中,下面接口以键一值对的方式存储对象的是______。
A.java.util.List B.java.util.Map C.java.util.Collection D.java.util.Set
A B C D
B
[解析] 对于选项A,List中保存了相同类型的多个元素,元素是按照存入的顺序存储的,元素可以重复。所以,选项A错误。
对于选项B,Map是以键一值对的方式来存储对象的,并且键不允许重复。所以,选项B正确。
对于选项C,java.util.Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法。而Set与List是它的两个具体的接口,由于Set与List都不是以键一值对的方式来存储对象的,因此,Collection接口也不是。所以,选项C错误。
对于选项D,Set中也保存了相同类型的多个元素,元素是不能重复的。所以,选项D错误。
下表是各接口的区别。
各接口的区别
类 型
是否有序
是否允许重复
是否线程同步
Collection
否
是
List
ArrayList
否
是
否
Vector
是
LinkedList
否
Set
HashSet
否
否
否
TreeSet
是
否
Map
HashMap
否
<key,value>, key不允许重复
否
TreeMaD
是
否
Hashtable
否
是
所以,本题的答案为B。
22. 有以下代码:
for (int i=4;i>0;1--){
int j=0;
do {
j++;
if(j=2){
break;
}
} while(j<=i);
System.out.print(j);
}
程序的运行结果是______
A.4 3 2 1 B.1 2 3 2 C.2 2 1 1 D.2 2 2 2
A B C D
D
[解析] do/while循环是while循环的变体。在检查条件是否为真之前,该循环首先会执行一次代码块,然后检查条件是否为真,如果条件为真,就会重复这个循环。 for循环语句的基本结构如下: for(表达式1;表达式2;表达式3) { 循环体 } 它的执行过程如下: 1)执行初始化语句:表达式1(只会被执行一次)。 2)执行表达式2,如果表达式2的结果为false,则结束循环,否则,执行循环体,然后执行表达式3。 3)循环步骤2),直到表达式2的结果为false时退出循环,或者循环体内有退出循环的语句(return或break)。 对于本题而言,第一次进入for循环体时,i=4;然后进入do/while循环体,此时j=0,然后这个循环一直执行j++,直到j=2或j>i的时候退出循环体,显然会先满足j=2的条件退出循环体,此时j的值为2,因此,输出2。下一次for循环的时候,i=3,同理输出结果仍然为2。下一次for循环的时候,i=2,同理输出结果为2。下一次for循环的时候,i=1,同理也会输出2,此时执行for循环的i--操作,i的值变为0,不满足i>0的条件,因此,for循环结束,所以,输出结果为2 2 2 2,选项D正确。
二、论述题 1. 什么是视图?
视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表。在数据库中,存放的只是视图的定义,而不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。 视图的作用主要有以下几点:首先,可以简化数据查询语句;其次,可以使用户能从多角度看待同一数据;然后,通过引入视图可以提高数据的安全性;最后,视图提供了一定程度的逻辑独立性等。 通过引入视图机制,用户可以将注意力集中在其关心的数据上(而非全部数据),这样就大大提高了用户效率与用户满意度,而且如果这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较烦琐,此时定义视图就可以使数据的查询语句变得简单可行。定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,故增加了数据的安全性,但不能提高查询的效率。
2. 用一条SQL语句查询出每门课都大于75分的学生姓名,表名为score,表格式见下表。
score表 name course mark 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90
select distinct name from score a where not exists(select*from score b where b.name=a.nameand b.mark<=75)。
3. List、set和Map是否继承自Collection接口?
List和set继承自Collection接口,Map不是。
4. 实时操作系统的基本特性是什么?
实时操作系统(Real-Time Operating System,RTOS)是指当外界事件或数据产生时,能够接受并以足够快地速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。 通过上述定义可知,实时操作系统具有以下基本特性:响应及时,处理事务的能力较强、速度较快,可靠性高。
5. Web开发中如何指定字符串的编码?
在Java语言中,常用的字符编码方式有ISO-8859-1、GB2312、GBK、UTF-8/UTF-16/UTF-32等。其中,ISO-8859-1用来编码拉丁文,它由单字节(0~255)组成。GB2312、GBK用来编码简体中文,由单字节和双字节混合组成,最高位为1的字节和下一个字节构成一个汉字,最高位为0的字节是ASCII码。UTF-8/UTF-16/UTF-32是国际标准UNI-CODE的编码方式,UTF的全称为Unicode Translation Format,即把Unicode转作某种格式的意思。其中,使用最多的编码方式是UTF-8,因为该方式在对拉丁文编码时节约空间,它的特点是对不同范围的字符使用不同长度的编码。 String序列化成byte数组或反序列化时需要选择正确的编码方式,如果编码方式使用不正确,就会得到乱码。所以,在Web应用开发中,经常会遇到需要指定字符串的编码格式的情况,为了防止出现乱码,最好的方法就是指定编码格式。下面的例子可以把字符串以ISO-8859-1的编码格式输出: public String translate(String str){ String result=""; try{ result=new String(str.getBytes("ISO-8859-1"), "GBK"); result=result.trim(); } catch(Exception e){ System.err.println(e.getMessage()); } return result; } 需要注意的是,在Web开发时也可以通过response.setContentType()方法来指定JSP页面显示的编码格式。 常见笔试题: 为了让浏览器以UTF-8编码显示JSP页面,请问,下列JSP代码中,正确的是______。 A.<%page contentType= B.<meta http-equiv= C.把所有输出内容重新编码:new String(content.getBytes()) D.response.setContentType() 答案:D。选项A设置的是服务器端编码,选项B设置的是客户端编码,选项C设置的是某个字符串的编码。只有选项D满足题意。