技术笔试面试题(上)

前言
当天社会,随着程序设计、软件开发等工作岗位的增加,java程序开发已经占据程序员求职市场的半壁江山,java程序员求职者们迫切需要自己的笔试面试题集。该书的目的就是帮助更多的有面试需求的java程序员顺利的通过笔试、面试。
本书涵盖了java面试中出现的各个知识点,包括java语言基础、数据库、web编程、框架等。其中每个部分都按小知识点进行笔试面试题整理,每道题都取材于各大公司的实际招聘面试题,并在题后紧跟详细的分析步骤和解答。

目录
前言 2
第一部分:JAVA基础 4
1.1 JAVA语言基础 4
1.2 JAVA面向对象 25
1.3 JAVA核心API-STRING、正则表达式、OBJECT、包装类、日期操作等 63
1.4 JAVA核心API-集合操作 81
1.5 JAVA核心API-IO操作 99
1.6 JAVA核心API-异常处理 100
1.7 JAVA核心API-多线程 104
1.8 JAVA核心API-网络通信 121
1.9 JAVA核心API-XML 129
1.10 SWING编程 129
1.10 设计模式 130
第二部分:数据库、JDBC、PLSQL 133
2.1 数据库 133
2.2 PLSQL 198
2.3 JDBC 216
第三部分 JACA WEB------------------------------------------------------------------------------------------ 223
3.1 WEB基础------------------------------------------------------------------ 223
3.2 SERVLET与JSP------------------------------------------------------------- 229
3.3 AJAX与JQUERY------------------------------------------------------------ 252
3.4 WEB应用------------------------------------------------------------------ 252
第四部分 流行框架
4.1 STRUTS2------------------------------------------------------------------ 261
4.2 HIBERNATE---------------------------------------------------------------- 268
4.3 MYBATIS------------------------------------------------------------------ 275
4.4 SPRING------------------------------------------------------------------- 279
4.5 框架整合----------------------------------------------------------------- 295
4.6 其他框架---------------------------------------------------------------- 303
第一部分:JAVA基础
1.1 JAVA语言基础
【题目编号】 jsd-01-101-1001
【知 识 点】 JAVA基础-JAVA语言基础-运算符-三目运算符
【难易程度】 50
【题目描述】
编译运行以下程序后,关于输出结果的说明正确的是 ( ):
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
【选项】
A. 输出结果为:value is 99.99
B. 输出结果为:value is 9
C. 输出结果为:value is 9.0
D. 编译错误
【正确答案】 C
【解释】
三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9 是 double 类型而9是 int 类型,double 容量高。

【题目编号】 jsd-01-101-1002
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-转义字符
【难易程度】 80
【题目描述】
在字符串前面加上( )符号,则字符串中的转义字符将不被处理。
【选项】
A. @ B. \ C.# D.%
【正确答案】 B
【解释】

【题目编号】 jsd-01-101-1003
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 50
【题目描述】
下列代码哪行会出错:

  1. public void modify() {
  2. int I, j, k;
  3. I = 100;
  4. while ( I > 0 ) {
  5.  j = I * 2;
    
  6.  System.out.println (" The value of j is " + j );
    
  7.  k = k + 1;
    
  8.  I--;
    
  9. }
  10. }
    【选项】
    A. 4
    B. 6
    C. 7
    D. 8
    【正确答案】 C
    【解释】
    k 没有初始化就使用了

【题目编号】 jsd-01-101-1004
【知 识 点】 JAVA基础-JAVA语言基础-排序-插入排序
【难易程度】 70
【题目描述】
对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟排序后的结果为:
【选项】
A. {314,298,508,123,145,486}
B. {298,314,508,123,486,145}
C. {298,123,314,508,486,145}
D. 123、298,314,508,486,145}
【正确答案】 B
【解释】
插入排序算法:

public static void injectionSort(int[] number) {
     
// 第一个元素作为一部分,对后面的部分进行循环
	for (int j = 1; j < number.length; j++) {
     
		int tmp = number[j];
		int i = j - 1;
		while (tmp < number[i]) {
      number[i + 1] = number[i]; i--;
			if (i == -1)
			break;
		}
		number[i + 1] = tmp;
    }
}

【题目编号】 jsd-01-101-1005
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
What is the numerical range of a char?
【选项】
A. 0 … 32767
B. 0 … 65535
C. –256 … 255
D. –32768 … 32767
E. Range is platform dependent.
【正确答案】 B
【解释】
在 Java 中,char 是一个无符号 16 位类型,取值范围为 0 到 65535。

【题目编号】 jsd-01-101-1006
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 50
【题目描述】
Given:
public class Test {
public static void main(String[] args) {
String str = NULL; System.out.println(str);
}
}
What is the result? A. NULL
【选项】
B. Compilation fails.
C. The code runs with no output.
D. An exception is thrown at runtime.
【正确答案】 B
【解释】
null 应该小写

【题目编号】 jsd-01-101-1007
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 40
【题目描述】
Given:
public class Test {
public static void main (String[]args) {
String foo = args[1];
String bar = args[2];
String baz = args[3];
System.out.println(“baz = ” + baz);
}
}
And the output: Baz = 2
Which command line invocation will produce the output?
【选项】
A. java Test 2222
B. java Test 1 2 3 4
C. java Test 4 2 4 2
D. java Test 4 3 2 1
【正确答案】 C
【解释】
数组下标从 0 开始

【题目编号】 jsd-01-101-1008
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 50
【题目描述】
Exhibit:
public class SwitchTest {
public static void main (String []args) {
System.out.println (“value =” +switchIt(4));
}
public static int switchIt(int x) {
int j = 1;
switch (x) {
case 1: j++;
case 2: j++; case 3: j++; case 4: j++; case 5: j++; default:j++;
}
return j + x;
}
}
What is the output from line 3?
【选项】
A. Value =3
B. Value =4
C. Value =5
D. Value =6
E. Value =7
F. Value =8
【正确答案】 F
【解释】
由于 case 块没有 break 语句,那么从 case 4:向下的代码都会执行。

【题目编号】 jsd-01-101-1009
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 40
【题目描述】
下面关于 import, class 和 package 的声明顺序哪个正确?( )
【选项】
A. package, import, class
B. class, import, package
C. import, package, class
D. package, class, import
【正确答案】 A
【解释】

【题目编号】 jsd-01-101-1010
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 60
【题目描述】
题目:

  1. public class test (
  2. public static void main (String args[]) {
  3. int i = 0xFFFFFFF1;
  4. int j = ~i;
  5. }
  6. )
    程序运行到第 5 行时,j 的值为多少?( )
    【选项】
    A. –15
    B. 0
    C. 1
    D. 14
    E. 在第三行的错误导致编译失败
    【正确答案】 D
    【解释】
    int i = 0xFFFFFFF1;相当于 int i=-15 然后对 i 进行取反即取绝对值再减一

【题目编号】 jsd-01-101-1011
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 40
【题目描述】
选择下面代码的运行结果:()。
public class Test{
public void method(){
for(int i = 0; i < 3; i++){
System.out.print(i);
}
System.out.print(i);
}
}
【选项】
A.0122 B.0123
C.编译错误 D.没有任何输出
【正确答案】 C
【解释】
i 变量的作用范围是整个 for 循环。

【题目编号】 jsd-01-101-1012
【知 识 点】 JAVA基础-JAVA语言基础-普通数组
【难易程度】 30
【题目描述】
已知表达式 int m [ ] = {0,1,2,3,4,5,6}; 下面哪个表达式的值与数组下标量总数相等?( )
【选项】
A .m.length() B.m.length C.m.length()+1 D.m.length+1
【正确答案】 B
【解释】
数组下标是从零开始的,但是数据下标的总量和数据长度相同。

【题目编号】 jsd-01-101-1013
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-移位运算符
【难易程度】 30
【题目描述】
关于运算符>>和>>>描述正确的是()
【选项】
A.>>执行移动 B.>>执行翻转
C.>>执行有符号左移,>>>执行无符号左移
D.>>执行无符号左移,>>>执行有符号左移
【正确答案】 C
【解释】

【题目编号】 jsd-01-101-1014
【知 识 点】 JAVA基础-JAVA语言基础-进制
【难易程度】 50
【题目描述】
存储一个24X24点阵的汉字(每个点1bit),需要多少字节( )
【选项】
A. 24 B. 48 C. 72 D. 144
【正确答案】 C
【解释】
解释:2424/8=72。解释下意思:2424的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。

【题目编号】 jsd-01-101-2001
【知 识 点】 JAVA基础-JAVA语言基础-关键字
【难易程度】 30
【题目描述】
如下哪些不是 java 的关键字?( )
【选项】
A.const B.NULL C.false D.this E.native
【正确答案】 BC
【解释】
虽然 null false 还有 true 不是 java 的关键字,但是都有特殊用途,不建议作为标识符。

【题目编号】 jsd-01-101-2002
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-while
【难易程度】 40
【题目描述】
69.已知如下代码:( )
public class Test{
public static void main(String arg[] ){
int i = 5;
do{ System.out.print(i);
}while(–i>5)
System.out.print(“finished”);
}
}
执行后的输出是什么?
【选项】
A. 5 B. 4 C. 6 D. finished
【正确答案】 AD
【解释】
输出 5finished,do?while 循环中循环体一定会执行一次

【题目编号】 jsd-01-101-2003
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
下面的哪些声明是合法的?( )
A. long 1 = 4990 B. int i = 4L C. float f =1.1 D. double d = 34.4
【选项】
【正确答案】AD
【解释】
B.4L 应该是 long 类型的写法,C.1.1 是 double 类型 ,float f=1.1f 是正确写法

【题目编号】 jsd-01-101-2004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 10
【题目描述】
选择 Java 语言中的基本数据类型( )
【选项】
A.byte B.Integer C.String D.char E.long
【正确答案】 ADE
【解释】
基本数据类型总共有 8 个:byte,short,int,long,char,boolean,float,double

【题目编号】 jsd-01-101-2005
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式
【难易程度】 20
【题目描述】
从下列选项中选择正确的 Java 表达式
【选项】
A.int k=new String(“aa”) B.String str=String(“bb”)
C.char c=74; D.long j=8888;
【正确答案】 BCD
【解释】

【题目编号】 jsd-01-101-2006
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 20
【题目描述】
下列描述中,哪些符合 Java 语言的特征
【选项】
A. 支持跨平台(Windows,Linux,Unix等)
B. GC(自动垃圾回收),提高了代码安全性
C. 支持类 C 的指针运算操作
D. 不支持与其它语言书写的程序进行通讯
【正确答案】 AB
【解释】

【题目编号】 jsd-01-101-4001
【知 识 点】 JAVA基础-JAVA语言基础-递归方法-递归方法
【难易程度】 80
【题目描述】
简单说明什么是递归?什么情况会使用?并使用 java 实现一个简单的递归程序。
【正确答案】
1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调 用自身而产生的重入现象。
2)递归算法一般用于解决三类问题:
a.数据的定义是按递归定义的。(Fibonacci(斐波那契)函数)
b.问题解法按递归算法实现。(回溯)
c.数据的结构形式是按递归定义的。(树的遍历,图的搜索)
3)这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如: 你给出的参数是"abc" 则程序会输出:abc acb bac bca cab cba
a.算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
b.算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素, 然后low+1开始减少排列元素,如此下去,直到low=high
public class Foo {
public static void main(String[] args) {
permute(“abc”);
}
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = “”;
for (i = 0; i <= high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i <= high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low]; list[low] = list[i]; list[i] = temp;
}
}
}
}
【解释】无

【题目编号】 jsd-01-101-4002
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 包.
【正确答案】
JDK 常用的 package
java.lang: 这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package。
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
【解释】无

【题目编号】 jsd-01-101-4003
【知 识 点】 JAVA基础-JAVA语言基础-Java开发环境
【难易程度】 30
【题目描述】
列出自己常用的 jdk 中的数据结构
【正确答案】
线性表,链表,哈希表是常用的数据结构。
【解释】无

【题目编号】 jsd-01-101-4004
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 40
【题目描述】
char 类型能否存储一个中文字符?为什么
【正确答案】
可以。一个 char 是两个字节,而一个中文也是两个字节。
【解释】无

【题目编号】 jsd-01-101-4005
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-switch
【难易程度】 30
【题目描述】
Switch 选择语句能否作用在 String【字符串】上,也就是能否这么写:Switch(一个字符串变量)?
【正确答案】
不可以,只能处理 int,byte,short,char,(其实是只能处理 int,其它三种是可以 promotion 到 int 型)不能处理 Sring 。
【解释】无

【题目编号】 jsd-01-101-4006
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 20
【题目描述】
在 java 语言中 int 和 Integer 有什么区别
【正确答案】
int 是基本数据类型,Integer 是 int 的包装类,属于引用类型
【解释】无

【题目编号】 jsd-01-101-4007
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-关系运算
【难易程度】 20
【题目描述】
计算下列结果:
25&3 =
25|3=
【正确答案】
25 的二进制是11001,3的二进制是00011,按位与的结果是:00001,按位或的结果是:11010,因此转成10进制分别为:1和27。
【解释】无

【题目编号】 jsd-01-101-4008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 20
【题目描述】
JDK1.5 中支持的 for 循环的语法
【正确答案】
for(type element : array) {
System.out.println(element)
}
type 集合(不仅仅指 Collection,也包含普通的数组)中元素的数据类型element 遍历到的元素;array集合对象本身(当然不只是 Collection)
【解释】无

【题目编号】 jsd-01-101-4009
【知 识 点】 JAVA基础-JAVA语言基础-Java基本类型
【难易程度】 30
【题目描述】
Bit 和 Byte 是什么意思?它们之间有什么关系?
【正确答案】
bit 中文名称是位,是用以描述电脑数据量的最小单位。
byte(字节)是计算机信息技术用于计量存储容量和传输容量的一种计量单位 1byte=8bit
【解释】无

【题目编号】 jsd-01-101-4010
【知 识 点】 JAVA基础-JAVA语言基础
【难易程度】 40
【题目描述】
你认为 java 与其他(你所了解的)语言相比,有什么优点和缺点?
【正确答案】
1). Java 没有预处理指令。(如 C 中的#define , #include , #ifdef 等)。C 中的常量定义在Java 中用 static final 来取代。
2). Java 中没有 C 中的全局变量。
3). Java 中的主类型的 size 是确定的,而 C 中主类型的 size 跟平台相关。
4). Java 中没有了指针,它使用了类似的句柄来取代指针,但是 Java 中不允许对句柄进行加减, 没有取地址操作符之类的东东。
5). Java 有垃圾收集机制,不需要自己释放空间。
6). Java 没有 goto 语句。Java 在 C 提供的控制语句基础上增加了异常处理和标签 break 和continue 语句。这些可以替代 goto 的作用。
7). C 要求一个方法或块中使用的所有局部变量的定义在该方法或块的最开始处定义,而 Java允许这些定义在方法或块的任意地方出现。
8). Java 不要求在调用一个函数以前已经定义了该函数,可以在调用点后面定义。而 C 有这个要 求。
9). Java 不支持 C 中的 strut 和 union 类型。Java 支持方法重载。
10). Java 不支持 C 中的 enum 关键字。
11). Java 不支持 C 中的 bitfields 能力。
12). Java 不支持 C 的 typedef。
13). Java 不支持 C 的方法指针。
14). Java 不支持 C 的可变参数表。
java 和.net 的都不适合做桌面程序,这两个比较适合写 WEB 的程序;
c++比较适合写桌面程序 c++/java 都是强类型的静态预编译型语言。优点是结构性强,程序可读性好, 开发效率高,适合开发大型应用。就本人的经验而言,java 的开发效率优于 c++,实际上 java 大行其道的首要因素就是它够简单。java 尤其不适合开发桌面程序,GUI 的 API 一直都是 java 的弱点;
perl/python 是动态解释型语言。perl 是弱类型的而 python 是强类型的,后者的变量一旦赋值, 就拥有了类型,不能再赋其他类型的值。不象 javascript/perl 可以随便定义。perl 是 unix 下的王牌工具,在缺乏 IDE 的字符界面下,很好地弥补了unix;
shell/utility 的不足,并且部分继承了面向对象语言的灵活性。适合用来搭建大程序。
【解释】无

【题目编号】 jsd-01-101-4011
【知 识 点】 JAVA基础-JAVA语言基础-排序
【难易程度】 50
【题目描述】
排序都有哪几种方法?用伪代码实现一个快速排序
【正确答案】
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码:使用快速排序方法对 a[ 0 :n- 1 ]排序从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点;把余下的元素分割为两段left和 right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点;递归地使用快速排序方法对left进行排序;递归地使用快速排序方法对 right 进行排序;所得结果 为 left + middle + right。
【解释】无

【题目编号】 jsd-01-101-4012
【知 识 点】 JAVA基础-JAVA语言基础-运算符和表达式-逻辑运算符
【难易程度】 50
【题目描述】
String a=null; if (a!=null && a.length()>10) {…}
上面面的代码,如果你用“&”替换“&&”将发生什么错误?
【正确答案】
会抛出空指针异常;&&会短路,只要遇到 boolean 值为 false 就不会再往后执行了;而&则是会 把两边的运算都执行完。
【解释】无

【题目编号】 jsd-01-101-5001
【知 识 点】 JAVA基础-JAVA语言基础-方法-递归方法
【难易程度】 50
【题目描述】
用递归方法实现正序显示数组元素。例如 String[] s = {“a”,”b”,”c”,”d”};
方法声明如下:
void print(String[] s,int i){ }
【正确答案】
参数 i 是指打印 string 数组的起始位置,原理是正序打印 s 从第 0 个开始的所有字符串,等价于先打印第 0 个,在打印 s 中从第一个开始的所有字符串,如此递归
void print(String[] s, int i) {
if ((i >= 0) && (i < s.length)) {
System.out.print(s[i]);
i++;
print(s, i);
}
}
【解释】无

【题目编号】 jsd-01-101-5002
【知 识 点】 JAVA基础-JAVA语言基础-分支结构-if else
【难易程度】 60
【题目描述】
请写出求 n!的算法。
【正确答案】
public class Factorial {
public static void main(String[] args) {
long n = 6;
System.out.println(doFactorial(n));
}
public static long doFactorial(long n) {
if (n < 1) {
System.out.println(“ERROR”);
return 0;
} else if (n == 1 || n == 2) {
return n;
} else {
return n * doFactorial(n - 1);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5003
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 60
【题目描述】
编写一个字符界面的 Java Application 程序,接受用户输入的 10 个整数,并输出这 10 个整数的最大值和最小值。
【正确答案】
采用了冒泡进行排序
import java.util.Scanner;
import java.util.Scanner;
public class MaxAndMin {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int next = scanner.nextInt();
arr[i] = next;
}
int[] after=Arrays.sort(arr);
System.out.println(“最小值:”+after[0]+",最大值:"+after[arr.length-1]);
}
}
【解释】无

【题目编号】 jsd-01-101-5004
【知 识 点】 JAVA基础-JAVA语言基础-排序-选择排序
【难易程度】 50
【题目描述】
写一个排序算法 1-100 随机数字,进行排序,要求效率。
【正确答案】
public class Sort {
// 选择排序方法
public static void selectionSort(int[] number) {
for (int i = 0; i < number.length - 1; i++) {
int m = i;
for (int j = i + 1; j < number.length; j++) {
if (number[j] < number[m])
m = j;
}
if (i != m)
swap(number, i, m);
}
}
// 用于交换数组中的索引为 i、j 的元素
private static void swap(int[] number, int i, int j) {
int t;
t = number[i]; number[i] = number[j]; number[j] = t;
}
public static void main(String[] args) {
// 定义一个数组
int[] num = new int[100];
for(int i=0;i num[i]=(int)(Math.random()*100)+1;
}
// 排序
selectionSort(num);
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5005
【知 识 点】 JAVA基础-JAVA语言基础-排序-冒泡排序
【难易程度】 50
【题目描述】
冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是 所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后 放,相当于气泡往上升,所以称作冒泡排序。请用 JAVA 语言编写一个完成冒泡排序算法的程序。
【正确答案】
解答:
int[] bubbleSort(int before[]) {
int t;
for (int i = 0; i < before.length; i++) {
for (int j = 0; j < before.length - i - 1; j++) {
if (before[j] > before[j + 1]) {
t = before[j];
before[j] = before[j + 1];
before[j + 1] = t;
}
}
}
return before;
}
【解释】无

【题目编号】 jsd-01-101-5006
【知 识 点】 JAVA基础-JAVA语言基础-分支结构、循环结构
【难易程度】 70
【题目描述】
下面是一个由*号组成的 4 行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值 3-21 之 间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。




【正确答案】
import java.util.Scanner;
public class Lines {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int lines = scanner.nextInt();
if (lines > 3 && lines < 21) {
for (int i = lines-1; i >= 0; i–) {
for (int z = 0; z <= i * 2; z++) {
System.out.print("*");
}
System.out.print("\n");
}
}else{
System.out.println(“非法行数!”);
}
}
}
【解释】无

【题目编号】 jsd-01-101-5007
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 50
【题目描述】
编写一个程序,用来计算 1 到 100 间所有整数的和是多少?
【正确答案】
public static void GetSum(){
int sum = 0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.println(“和为:”+sum);
}
【解释】无

【题目编号】 jsd-01-101-5008
【知 识 点】 JAVA基础-JAVA语言基础-循环结构-for
【难易程度】 80
【题目描述】
打印出杨辉三角形(编程题)
【正确答案】
public class printYang {
public static void main(String[] args) {
int[][] a = new int[10][10];
for(int i=0; i<10; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for(int i=2; i<10; i++) {
for(int j=1; j a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i=0; i<10; i++) {
for(int k=0; k<2*(10-i)-1; k++) {
System.out.print(" ");
}
for(int j=0; j<=i; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
【解释】无

【题目编号】 jsd-01-101-5009
【知 识 点】 JAVA基础-JAVA语言基础-循环结构
【难易程度】 60
【题目描述】
下列代码的输出结果是什么?
public class MyFor {
public static void main (String argv[]){
int i; int j;
outer:for(i=1;i<3;i++)
inner:for(j=1;j<3;j++){
if (j==2) continue outer;
System.out .println(“Value for i=”+i+" Value for j=" +j);
}
}
}
【正确答案】
Value for i=1 Value for j=1
Value for i=2 Value for j=1
【解释】无

【题目编号】 jsd-01-101-5010
【知 识 点】 JAVA基础-JAVA面向对象-普通数组、进制
【难易程度】 80
【题目描述】
现有一个 32 位的整型变量 value 和一个有 32 个元素的数组 a[32],
要求:1、对 value 随机赋值;2、让数组 a[n]的值等于 value“位 n”的值,0<=n<=31。举例:如果 value 的“位 0”(Bit0)=0,那么 a[0]=0;如果 value 的“位 10”(Bit10)=1,那么 a[10]=1。
【正确答案】
public class Foo {
public static void main(String[] args) {
//产生随机数
int random = (int) (Math.random() * Integer.MAX_VALUE + 1);
//转成二进制字符串
String str=Integer.toBinaryString(random);
//转成二进制时最前面的零被省略,补上省略的 0
if(str.length()<32){
for(int j=0;j<=32-str.length();j++){
str=“0”+str;
}
}
//给数组赋值
int[] a=new int[32];
for(int i=0;i a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));
System.out.println(“a[”+i+"]="+a[i]);
}
}
}
【解释】无
1.2 JAVA面向对象
【题目编号】 jsd-01-102-1001
【知 识 点】 JAVA基础-JAVA面向对象-static、抽象类-抽象方法
【难易程度】 30
【题目描述】
Abstract method cannot be static. True or False ?
【选项】
A. True
B. False
【正确答案】 A
【解释】
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract 是矛盾的,所以abstract 是不能被修饰为 static,否则就失去了abstract的意义了。

【题目编号】 jsd-01-102-1002
【知 识 点】 JAVA基础-JAVA面向对象-重写、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base
{
void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() { System.out.println(“Child.test()”);}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base)anObj;
baseObj.test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Base.test() Child.test()
C. Base.test()
D. Child.test()
【正确答案】 D
【解释】
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类 的 test 方法,因此调用子类的 test 方法。

【题目编号】 jsd-01-102-1003
【知 识 点】 JAVA基础-JAVA面向对象-static、、父子类
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program.
class Base{
static void test() { System.out.println(“Base.test()”); }
}

public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
Select most appropriate answer.
【选项】
A. Child.test() Base.test()
B. Child.test() Child.test()
C. Compilation error. Cannot override a static method by an instance method
D. Runtime error. Cannot override a static method by an instance method
【正确答案】 C
【解释】
静态方法不能在子类中被重写。

【题目编号】 jsd-01-102-1004
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 30
【题目描述】
执行完以下代码 int [ ] x = new int[25];后,以下哪项说明是正确的( ):
【选项】
A. x[24]为 0
B. x[24]未定义
C. x[25]为 0
D. x[0]为空
【正确答案】 A
【解释】
x 属于引用类型,该引用类型的每一个成员是 int 类型,默认值为:0

【题目编号】 jsd-01-102-1005
【知 识 点】 JAVA基础-JAVA面向对象-static-static块
【难易程度】 60
【题目描述】
关于以下 application 的说明,正确的是( ):
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
【选项】
A. 4 行与 9 行不能通过编译,因为缺少方法名和返回类型
B. 9 行不能通过编译,因为只能有一个静态初始化器
C. 编译通过,执行结果为:x=5
D. 编译通过,执行结果为:x=3
【正确答案】 C
【解释】
自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执行。

【题目编号】 jsd-01-102-1006
【知 识 点】 JAVA基础-JAVA面向对象-static
【难易程度】 60
【题目描述】
关于以下程序代码的说明正确的是( ):
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x–;
11. System.out.println(“x=”+x);
12. }
13.}
【选项】
A. 5 行不能通过编译,因为引用了私有静态变量
B. 10 行不能通过编译,因为 x 是私有静态变量
C. 程序通过编译,输出结果为:x=103
D. 程序通过编译,输出结果为:x=102
【正确答案】 D
【解释】
静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量 x, 静态变量可以通过类名调用。

【题目编号】 jsd-01-102-1007
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
下列说法正确的有()
【选项】
A. class 中的 constructor 不可省略
B. constructor 必须与 class 同名,但方法不能与 class 同名
C. constructor 在一个对象被 new 时执行
D.一个 class 只能定义一个 constructor
【正确答案】 C
【解释】
构造方法的作用是在实例化对象的时候给数据成员进行初始化 A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法 B.构造方法与类同名,类中可以有和类名相同的方法 D.构造方法可以重载

【题目编号】 jsd-01-102-1008
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 40
【题目描述】
下列哪种说法是正确的()
【选项】
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
【正确答案】 D
【解释】
A. 实例方法不可直接调用超类的私有实例方法
B. 实例方法不可直接调用超类的私有的类方法
C.要看访问权限

【题目编号】 jsd-01-102-1009
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法
【难易程度】 60
【题目描述】
下列哪一种叙述是正确的( )
【选项】
A. abstract 修饰符可修饰字段、方法和类
B. 抽象方法的 body 部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
【正确答案】 D
【解释】
abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}

【题目编号】 jsd-01-102-1010
【知 识 点】 JAVA基础-JAVA面向对象-面向对象概念
【难易程度】 30
【题目描述】
以下关于面向对象概念的描述中,不正确的一项是()。
【选项】
A.在现实生活中,对象是指客观世界的实体
B.程序中的对象就是现实生活中的对象
C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)
D.在程序中,对象是一组变量和相关方法的集合
【正确答案】 B
【解释】

【题目编号】 jsd-01-102-1011
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-堆栈
【难易程度】 30
【题目描述】
栈是一种( )
【选项】
A. 存取受限的线性结构
B. 存取不受限的线性结构
C. 存取受限的非线性结构
D. 存取不受限的非线性结构
【正确答案】 A
【解释】
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。

【题目编号】 jsd-01-102-1012
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-垃圾回收
【难易程度】 30
【题目描述】
下列哪些语句关于内存回收的说明是正确的。
【选项】
A. 程序员必须创建一个线程来释放内存
B. 内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定的时间释放内存对象
【正确答案】 B
【解释】
垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用 System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

【题目编号】 jsd-01-102-1013
【知 识 点】 JAVA基础-JAVA面向对象-接口、抽象类-抽象方法
【难易程度】 40
【题目描述】
Which method must be defined by a class implementing the java.lang.Runnable interface?
【选项】
A. void run()
B. public void run()
C. public void start()
D. void run(int priority)
E. public void run(int priority)
F. public void start(int priority)
【正确答案】 B
【解释】
实现 Runnable 接口,接口中有一个抽象方法 run,实现类中实现该方法。

【题目编号】 jsd-01-102-1014
【知 识 点】 JAVA基础-JAVA面向对象-内部类-匿名内部类
【难易程度】 60
【题目描述】
Given:
public static void main(String[] args) {
Object obj = new Object() {
public int hashCode() {
return 42;
}
}; System.out.println(obj.hashCode());
}
What is the result?
【选项】
A. 42
B. An exception is thrown at runtime.
C. Compilation fails because of an error on line 12.
D. Compilation fails because of an error on line 16.
E. Compilation fails because of an error on line 17.
【正确答案】 A
【解释】
匿名内部类覆盖 hashCode 方法。

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-访问控制
【难易程度】 70
【题目描述】
Exhibit:
1.package foo;
2.import java.util.Vector;
3.private class MyVector extends Vector {
4. int i = 1;
5. public MyVector() {
6. i = 2;
7. }
8.}
9.public class MyNewVector extends MyVector {
10. public MyNewVector () {
11. i = 4;
12. }
13. public static void main (String args []) {
14. MyVector v = new MyNewVector();
15. }
16.}
The file MyNewVector.java is shown in the exhibit. What is the result?
【选项】
A. Compilation will succeed.
B. Compilation will fail at line 3.
C. Compilation will fail at line 6.
D. Compilation will fail at line 9. E. Compilation will fail at line 14.
【正确答案】 B
【解释】
类 MyVector 不能是私有的

【题目编号】 jsd-01-102-1016
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
在下面程序的第 6 行补充上下列哪个方法,会导致在编译过程中发生错误?

  1. class Super{
  2.  public float getNum(){
    
  3.  	return 3.0f;
    
  4.  }
    
  5. }
  6. pubhc class Sub extends Super{
  7. }
    【选项】
    A,public float getNum(){retun 4.0f;}
    B.public void getNum(){}
    C.public void getNum(double d){}
    D.public double getNum(float d){ retun 4.0f ;}
    【正确答案】 B
    【解释】
    方法重写的问题。子类中有和父类的方法名相同,但是参数不同,不会出编译错误,认为是子类 的特有的方法,但是如果子类中方法和父类的方法名,参数,访问权限,异常都相同,只有返回值类型不同会编译不通过。

【题目编号】 jsd-01-102-1017
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-实例方法
【难易程度】 50
【题目描述】
关于实例方法和类方法,以下描述正确的是:( )
【选项】
A. 实例方法只能访问实例变量
B. 类方法既可以访问类变量,也可以访问实例变量
C. 类方法只能通过类名来调用
D. 实例方法只能通过对象来调用
【正确答案】 D
【解释】
A 实例方法可以访问类变量;B 类方法只能访问类变量;C 类方法可以通过对象调用

【题目编号】 jsd-01-102-1018
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 20
【题目描述】
接口是 Java 面向对象的实现机制之一,以下说法正确的是:( )
【选项】
A. Java 支持多重继承,一个类可以实现多个接口;
B. Java 只支持单重继承,一个类可以实现多个接口;
C. Java 只支持单重继承,一个类只可以实现一个接口;
D. Java 支持多重继承,但一个类只可以实现一个接口。
【正确答案】 B
【解释】
Java 支持单重继承,一个类只能继承自另外的一个类,但是一个类可以实现多个接口。

【题目编号】 jsd-01-102-1019
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 40
【题目描述】
下列关于 interface 的说法正确的是:( )
【选项】
A. interface 中可以有 private 方法
B. interface 中可以有 final 方法
C. interface 中可以有 function 实现
D. interface 可以继承其他 interface
【正确答案】 D
【解释】
A. 接口中不可以有 private 的方法
B.接口中不可以有 final 的方法 接口中的方法默认是 public abstract 的
C.接口中的方法不可以有实现

【题目编号】 jsd-01-102-1020
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 50
【题目描述】
已知 A 类被打包在 packageA, B 类被打包在 packageB,且B类被声明为 public,且有一个成员变量 x 被声明为, protected 控制方式 。C 类也位于 packageA 包,且继承了 B 类。则以下说话正确的是( )
【选项】
A. A 类的实例不能访问到 B 类的实例
B. A 类的实例能够访问到 B 类一个实例的 x 成员
C. C 类的实例可以访问到 B 类一个实例的 x 成员
D. C 类的实例不能访问到 B 类的实例
【正确答案】 C
【解释】
不同包子类的关系, 可以访问到父类 B 的 protected 成员

【题目编号】 jsd-01-102-1021
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类
【难易程度】 70
【题目描述】
以下程序正确的输出是( )
package test;
public class FatherClass {
public FatherClass() {
System.out.println(“FatherClass Create”);
}
}
package test;
import test.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println(“ChildClass Create”);
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
【选项】
A. FatherClass Create
FatherClass Create
ChildClass Create
B. FatherClass Create
ChildClass Create
FatherClass Create
C. ChildClass Create
ChildClass Create
FatherClass Create
D. ChildClass Create
FatherClass Create
FatherClass Create
【正确答案】 A
【解释】
在子类构造方法的开始默认情况下有一句 super();来调用父类的构造方法

【题目编号】 jsd-01-102-1022
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
给定如下代码,下面哪个可以作为该类的构造函数 ( )
public class Test {
?
}
【选项】
A. public void Test() {?}
B. public Test() {?}
C. public static Test() {?}
D. public static void Test() {?}
【正确答案】 B
【解释】
构造方法:与类同名没有返回类型

【题目编号】 jsd-01-102-1023
【知 识 点】 JAVA基础-JAVA面向对象-抽象类-抽象方法、访问控制-访问修饰符
【难易程度】 60
【题目描述】
从下面四段(A,B,C,D)代码中选择出正确的代码段()
【选项】
A.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
B.public class Something {
void doSomething () {
private String s = “”; int l = s.length();
}
}
C.public class Something {
public static void main(String[] args) {
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
D.public class Something { public int addOne(final int x) { return ++x; }
}
【正确答案】 C
【解释】
A. 抽象方法不能有方法体
B.方法中定义的是局部变量,不能用类成员变量修饰符 private
D.final 修饰为常量,常量的值不能被改变

【题目编号】 jsd-01-102-1024
【知 识 点】 JAVA基础-JAVA面向对象-继承-重载和重写
【难易程度】 30
【题目描述】
下面那几个函数是 public void method(){…}的重载函数?()
【选项】
A.public void method( int m){…}
B.public int method(){…}
C.public void method2(){…}
D.public int method(int m,float f ){…}
【正确答案】 A
【解释】
重载:方法名相同,参数列表不同

【题目编号】 jsd-01-102-1025
【知 识 点】 JAVA基础-JAVA面向对象-继承-instanceof
【难易程度】 70
【题目描述】
类 Teacher 和 Student 是类 Person 的子类; Teacher t;
Student s;
// t and s are all non-null.
if (t instanceof Person ){ s=(Student)t; }
最后一条语句的结果是:
【选项】
A.将构造一个 Student 对象; B.表达式是合法的;
C.表达式是错误的; D.编译时正确, 但运行时错误。
【正确答案】 D
【解释】
instanceof 是 Java 的一个二元操作符,它的作用是测试它左边的对象是否是它右边的类的实例,返 回 boolean 类型的数据。Teahcer 和 Student 之间没有继承关系不能做强制类型转换。

【题目编号】 jsd-01-102-1026
【知 识 点】 JAVA基础-JAVA面向对象-抽象类、static、final
【难易程度】 50
【题目描述】
下列关于修饰符混用的说法,错误的是( ):
【选项】
A. abstract 不能与 final 并列修饰同一个类
B. abstract 类中可以有 private 的成员
C. abstract 方法必须在 abstract 类中
D. static 方法中能处理非 static 的属性
【正确答案】 D
【解释】
静态方法中不能引用非静态的成员

【题目编号】 jsd-01-102-1027
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 40
【题目描述】
给出如下代码:( )
class Test{
private int m;
public static void fun() {
//some code?
}
}
如何使成员变量 m 被函数 fun()直接访问?()
【选项】
A.将 private int m 改为 protected int m
B.将 private int m 改为 public int m
C.将 private int m 改为 static int m
D.将 private int m 改为 int m
【正确答案】 C
【解释】
静态的方法中可以直接调用静态数据成员

【题目编号】 jsd-01-102-1028
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 40
【题目描述】
MAX_LENGTH 是 int 型 public 成员变量,变量值保持为常量 100,用简短语句定义这个变量。
【选项】
A .public int MAX_LENGTH=100; B. final int MAX_LENGTH=100;
C. final public int MAX_LENGTH=100; D. public final int MAX_LENGTH=100.
【正确答案】 D
【解释】
通过题的描述就是定义常量,在 java 中常量命名规范是所有字母都大写用下划线分割每个单词。

【题目编号】 jsd-01-102-1029
【知 识 点】 JAVA基础-JAVA面向对象-继承-重写
【难易程度】 60
【题目描述】
下述代码的执行结果是
class Super {
public int getLength() {return 4;}
}
public class Sub extends Super {
public long getLength() {return 5;}
public static void main (String[]args) {
Super sooper = new Super ();
Super sub = new Sub();
System.out.printIn(sooper.getLength()+ “,” + sub.getLength() };
}
}
【选项】
A. 4, 4
B. 4, 5
C. 5, 4
D. 5, 5
E. 代码不能被编译
【正确答案】 E
【解释】
方法重写返回值类型与父类的一致

【题目编号】 jsd-01-102-1030
【知 识 点】 JAVA基础-JAVA面向对象-接口
【难易程度】 70
【题目描述】
Which two demonstrate a “has a” relationship(Choose two)?
【选项】
A. public interface Person { }
public class Employee extends Person{ }
B. public interface Shape { }
public interface Rectandle extends Shape { }
C. public interface Colorable { }
public class Shape implements Colorable{ }
D. public class Species{ }
public class Animal{private Species species;} E. interface Component{ }
class Container implements Component{
private Component[] children;
}
【正确答案】 D
【解释】
“has a”是关联关系,关联分双向关联和单向关联,双向关联是 A,B 类分别持有对方的引用(有是对方 的属性).单向关联是一方持另一方的引用.

【题目编号】 jsd-01-102-1031
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类
【难易程度】 60
【题目描述】
Given the folowing classes which of the following will compile without error?
interface IFace{}
class CFace implements IFace{}
class Base{}
public class ObRef extends Base{
public static void main(String argv[]){
ObRef ob = new ObRef(); Base b = new Base();
Object o1 = new Object(); IFace o2 = new CFace();
}
}
【选项】
A.o1=o2; B. b=ob; C. ob=b; D. o1=b;
【正确答案】 B
【解释】
b 和 ob 对应的类之间没有任何关系,要想 b=ob 成立要么是父子关系,要么是接口实现类的关系

【题目编号】 jsd-01-102-1032
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 50
【题目描述】
下面哪个是正确的?( )
【选项】
A. String temp [] = new String {“a” “b” “c”};
B. String temp [] = {“a” “b” “c”}
C. String temp = {“a”, “b”, “c”}
D. String temp [] = {“a”, “b”, “c”}
【正确答案】 D
【解释】

【题目编号】 jsd-01-102-1033
【知 识 点】 JAVA基础-JAVA核心API-final
【难易程度】 40
【题目描述】
关于 java.lang.String 类,以下描述正确的一项是( )
【选项】
A. String 类是 final 类故不可以继承;
B. String 类是 final 类故可以继承;
C. String 类不是 final 类故不可以继承;
D. String 类不是 final 类故可以继承;
【正确答案】 A
【解释】
String 类是 final 的,在 java 中 final 修饰类的不能被继承

【题目编号】 jsd-01-102-2001
【知 识 点】 JAVA基础-JAVA面向对象-继承-父子类、重写
【难易程度】 40
【题目描述】
下面中哪两个可以在 A 的子类中使用:( )
class A {
protected int method1 (int a, int b) {
return 0;
}
}
【选项】
A. public int method 1 (int a, int b) { return 0; }
B. private int method1 (int a, int b) { return 0; }
C. private int method1 (int a, long b) { return 0; }
D. public short method1 (int a, int b) { return 0; }
【正确答案】 AC
【解释】
主要考查子类重写父类的方法的原则; B,子类重写父类的方法,访问权限不能降低; C,属于重载;D,子类重写父类的方法返回值类型要相同或是父类方法返回值类型的子类。

【题目编号】 jsd-01-102-2002
【知 识 点】 JAVA基础-JAVA面向对象-内部类、static
【难易程度】 50
【题目描述】
Given:
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line2. Which two inner class declarations are valid? (Choose Two)
【选项】
A. static class InnerOne { public double methoda() {return d1;} }
B. static class InnerOne { static double methoda() {return d1;} }
C. private class InnerOne { public double methoda() {return d1;} }
D. protected class InnerOne { static double methoda() {return d1;} }
E. public abstract class InnerOne { public abstract double methoda(); }
【正确答案】 CE
【解释】
AB.内部类可以声明为 static 的,但此时就不能再使用外层封装类的非 static 的成员变量; D.非 static 的内部类中的成员不能声明为 static 的,只有在顶层类或 static 的内部类中 才可声明 static 成员

【题目编号】 jsd-01-102-2003
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 40
【题目描述】
Which two declarations prevent the overriding of a method? (Choose Two)
【选项】
A. final void methoda() {}
B. void final methoda() {} C. static void methoda() {}
D. static final void methoda() {}
E. final abstract void methoda() {}
【正确答案】 AD
【解释】
final 修饰方法,在子类中不能被重写。

【题目编号】 jsd-01-102-2004
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 40
【题目描述】
下列说法错误的有()
【选项】
A. 在类方法中可用 this 来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
【正确答案】 ACD
【解释】
A.在类方法中不能使用 this 关键字 C.在类方法中可以调用其它类中的类方法 D.在类方法中可以通过实例化对象调用实例方法

【题目编号】 jsd-01-102-2005
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 70
【题目描述】
给出下面的代码段:( )
public class Base{
int w, x, y, z;
public Base(int a, int b)
{x=a; y=b;}
public Base(int a, int b, int c, int d){
//assignment x=a, y=b w=d;z=c;
}}
在代码说明//assignment x=a, y=b 处写下如下哪几个代码是正确的?()
【选项】
A.Base(a, b); B.x=a, y=b; C.x=a; y=b; D.this(a,b);
【正确答案】 CD
【解释】
C 是直接给 x,y 赋值;D 是使用 this 调用本类中其它的构造方法。

【题目编号】 jsd-01-102-2006
【知 识 点】 JAVA基础-JAVA面向对象-static
【难易程度】
【题目描述】
下面关于变量及其范围的陈述哪些是不正确的( ):
【选项】
A. 实例变量是类的成员变量
B. 实例变量用关键字 static 声明
C. 在方法中定义的局部变量在该方法被执行时创建
D. 局部变量在使用前必须被初始化
【正确答案】 BC
由 static 修饰的变量称为类变量或是静态变量,法加载的时候创建局部变量。

【题目编号】 jsd-01-102-2007
【知 识 点】 JAVA基础-JAVA面向对象-访问控制
【难易程度】 30
【题目描述】
属性的可见性有( )
【选项】
A. 公有的 B. 私有的 C. 私有保护的 D. 保护的
【正确答案】 ABD
【解释】
属性的可见性有四种:公有的(public) 保护的(protected) 默认的 私有的(private)

【题目编号】 jsd-01-102-2008
【知 识 点】 JAVA基础-JAVA面向对象-访问控制-访问修饰符
【难易程度】 60
【题目描述】
Given:

  1. public interface Foo{
  2. int k = 4;
  3. }
    Which three are equivalent to line 2? (Choose Three)
    【选项】
    A. final int k = 4;
    B. Public int k = 4;
    C. static int k = 4;
    D. Private int k = 4;
    E. Abstract int k = 4;
    F. Volatile int k = 4;
    G. Transient int k = 4;
    H. protected int k = 4;
    【正确答案】 BDE
    【解释】
    static:修饰的静态变量;final 修饰的是常量;abstract 不能修饰变量;
    Volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。 而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻, 两个不同的线程总是看到某个成员变量的同一个值。
    Transient:对不需序列化的类的域使用 transient 关键字,以减少序列化的数据量。
    int k=4 相当于 public static final int k=4; 在接口中可以不写 static final

【题目编号】 jsd-01-102-2009
【知 识 点】 JAVA基础-JAVA面向对象-访问控制、接口
【难易程度】 30
【题目描述】
能用来修饰 interface 的有()
【选项】
A.private B.public C.protected D.static
【正确答案】 ACD
【解释】
修饰接口可以是 public 和默认

【题目编号】 jsd-01-102-2010
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 50
【题目描述】
执行下列代码后,哪个结论是正确的 String[] s=new String[10];
【选项】
A. s[9] 为 null; B. s[10] 为 “”; C. s[0] 为 未定义 D. s.length 为 10
【正确答案】 AD
【解释】
s 是引用类型,s 中的每一个成员都是引用类型,即 String 类型,String 类型默认的值为 null s 数组的长度为 10。

【题目编号】 jsd-01-102-2011
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 70
【题目描述】
Which two create an instance of an array? (Choose Two)
【选项】
A. int[] ia = new int [15];
B. float fa = new float [20];
C. char[] ca = “Some String”;
D. Object oa = new float[20];
E. Int ia [][] = (4, 5, 6) (1, 2, 3)
【正确答案】 AD
【解释】
任何类的父类都是 Object,数组也数据引用类型,Object oa = new float[20];这种写法相当于父类的用指向之类的实例。

【题目编号】 jsd-01-102-4001
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类加载
【难易程度】 40
【题目描述】
谈谈对 ClassLoader 的理解?
【正确答案】
ClassLoader 加载类用的是全盘负责委托机制。所谓全盘负责,即是当一个 classloader 加载 一个 Class 的时候,这个 Class 所依赖的和引用的所有 Class 也由这个 classloader 负责载入,除非 是显式的使用另外一个 classloader 载入;委托机制则是先让 parent(父)类加载器 (而不是 super, 它与 parent classloader 类不是继承关系)寻找,只有在 parent 找不到的时候才从自己的类路径中 去寻找。此外类加载还采用了 cache 机制,也就是如果 cache 中保存了这个 Class 就直接返回它,如 果没有才从文件中读取和转换成 Class,并存入 cache,这就是为什么我们修改了 Class 但是必须重 新启动 JVM 才能生效的原因。
【解释】无

【题目编号】 jsd-01-102-4002
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 40
【题目描述】
构造器 Constructor 是否可以被继承?是否可以被 Override?
【正确答案】
构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重载 Overloading。
【解释】无

【题目编号】 jsd-01-102-4003
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-面向对象
【难易程度】 50
【题目描述】
面向对象的特征有哪些方面?
【正确答案】
面向对象的特征主要有以下几个方面:
1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继 承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
【解释】无

【题目编号】 jsd-01-102-4004
【知 识 点】 JAVA基础-JAVA面向对象-接口、抽象类
【难易程度】 40
【题目描述】
接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?
【正确答案】
接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中的方法;抽象类可以继承实体类。
【解释】无

【题目编号】 jsd-01-102-4005
【知 识 点】 JAVA基础-JAVA面向对象-内部类-匿名内部类
【难易程度】 40
【题目描述】
nonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口)?
【正确答案】
匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为:
JButton button = new JButton();
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){//some mothod…}
});
这样的用法在 swing 编程中是经常使用的,就是因为它需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是最方便的。
【解释】无

【题目编号】 jsd-01-102-4006
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-构造方法
【难易程度】 60
【题目描述】
一个 subclass 怎样调用 superclass 中的方法(myMethod)和构造函数?
【正确答案】
用 super 关键字,子类去调用父类的方法,如:super.myMethod();子类去调用父类的构造函数, 如:super();。
【解释】无

【题目编号】 jsd-01-102-4007
【知 识 点】 JAVA基础-JAVA面向对象-抽象类、接口
【难易程度】 40
【题目描述】
abstract class 和 interface 有什么区别?
【正确答案】
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现 某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是 public static final 的。一个类可以实现多个接口,当类实现接口时,必须实现接口的所有方法。抽象类在 Java 语言中表示的是一种单继承的关系,对于 interface 来说则不然,并不要求 interface 的实现者和 interface 定义在概念本质上是一致的,仅仅是实现了 interface 定义的契约而已。;抽象类中可以定义自己的成员变量,也可以包含非抽象的方法,而在接 口中只能有静态的常量,所有方法必须是抽象的;实现抽象类时可以只实现其中的部分方法,而要是 实现一个接口的话就必须实现这个接口中的所有抽象方法。
【解释】无

【题目编号】 jsd-01-102-4008
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 20
【题目描述】
类有哪三个基本特性?各特性的优点?
【正确答案】
类具有封装性、继承性和多态性。 封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私 有变量和类中方法的实现细节。 继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有 被继承类(父类)的全部可继承的成员。 多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
【解释】无

【题目编号】 jsd-01-102-4009
【知 识 点】 JAVA基础-JAVA面向对象-访问控制、重载和重写
【难易程度】 40
【题目描述】
java 语言中 public、private、protected 三个关键字的用法,重写和重载的区别。
【正确答案】
作用域
public
×
×
×
重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,访问权限不能 更封闭,抛出异常不能宽泛; 重载:发生在同一个类中,方法名相同,但是参数不同(类型不同或个数不同或参数的顺序不同), 返回值可以不相同。
【解释】

【题目编号】 jsd-01-102-4010
【知 识 点】 JAVA基础-JAVA面向对象-反射
【难易程度】 60
【题目描述】
Java 反射机制的作用? Java 反射机制的作用是:
【正确答案】
1)在运行时判断任意一个对象所属的类。
2)在运行时构造任意一个类的对象。
3)在运行时判断任意一个类所具有的成员变量和方法。
4)在运行时调用任意一个对象的方法
【解释】无

【题目编号】 jsd-01-102-4011
【知 识 点】 JAVA基础-JAVA面向对象-static、final
【难易程度】 30
【题目描述】
关键字 final 分别修饰一个类,一个方法,一个变量,各起什么作用
【正确答案】
final 修饰类是不能被继承
fianl 修饰方法不能在子类中被覆盖。
final 修饰变量,称为常量,初始化以后不能改变值。
【解释】无

【题目编号】 jsd-01-102-4012
【知 识 点】 JAVA基础-JAVA面向对象-对象内存管理-垃圾回收
【难易程度】 20
【题目描述】
什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序有足够的可用内存吗?
【正确答案】
【解释】无
垃圾回收(GC)是 Java 语言的一个重要特性,作用是释放不再被使用的内存。垃圾回收由系统 进行管理。在系统认为需要的时候自动启动一个线程进行处理。 尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。 垃圾回收机制无法保证有足够的内存。

【题目编号】 jsd-01-103-4013
【知 识 点】 JAVA基础-JAVA面向对象-final
【难易程度】 20
【题目描述】
是否可以继承 String 类
【正确答案】
不可以。因为 String 类有 final 修饰。
【解释】无

【题目编号】 jsd-01-102-5001
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-方法调用
【难易程度】 40
【题目描述】
编写代码实现同一平面内两圆是否碰撞,其中: 第一个圆圆心坐标为(x1,y1),半径是 r1,第二个圆圆心坐标为(x2,y2),半径是 r2。
方法声明如下:
boolean collisWith(int x1,int y1,int r1,int x2,int y2,int r2){}
【正确答案】
boolean collisWith(int x1, int y1, int r1, int x2, int y2, int r2) {
boolean flag=false;
int num1=(x1-x2)(x1-x2);
int num2=(y1-y2)
(y1-y2);
int num3=num1+num2;
double distance=Math.sqrt(num3);
if(distance<=(r1+r2)){
flag=true;
}
return flag;
}
【解释】无

【题目编号】 jsd-01-102-5002
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 50
【题目描述】
创建类 Person,其中存储的成员数据为:age(int),sex(boolean),weight(int),至少有一个构造函数可以初始化这三个属性值,同时提供获取这三个属性值的 public 方法
【正确答案】
public class Person {
private int age;
private boolean sex;
private int weight;
public Person() {}
public Person(int age, boolean sex, int weight) {
this.age = age; this.sex = sex; this.weight = weight;
}
public int getAge() {
return age;
}
public boolean isSex() {
return sex;
}
public int getWeight() {
return weight;
}
}
【解释】无

【题目编号】 jsd-01-102-5003
【知 识 点】 JAVA基础-JAVA面向对象-引用类型数组
【难易程度】 80
【题目描述】
类DynArray实现了一个动态数组。当数组的空间不够时动态分配空间。
【正确答案】
Class DynArray{
private int size;
private int[] array;
private final int DEFAULT_LENGTH = 10;
public DynArray() {
size = 0;
array = new int[DEFAULT_LENGTH];
}
public void add(int element) {
ensureCapacity();
this.array[this.size++] = element;
}
private void ensureCapacity() {
if (size == array.length) {
int[] longerArray = new int[size * 2];
System.arraycopy(array, 0, longerArray, 0, size);
this.array = longerArray;
}
}
}
【解释】无

【题目编号】 jsd-01-102-5004
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类的编写
【难易程度】 60
【题目描述】
定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性. 属性(成员变量)需要私有并提供get, set方法, 可以通过构造函数进行初始化。
【正确答案】
public class StudentDemo {
private String name;
private int age;
private int score;
public StudentDemo(String name, int age, int score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
【解释】无

【题目编号】 jsd-01-102-5005
【知 识 点】 JAVA基础-JAVA面向对象-对象和类-类的编写
【难易程度】 90
【题目描述】
编写BankAccount类,要求如下:
A. 该类由此款人姓名(String name ),存款余额(double balance),存期(int year)及年利
  率(double rate)四个数据成员,其中年利率的默认值为0.03.
B. 该类有两个重载的构造方法.其中一个构造方法不含参数,设置默认的存款为10元,存期一年;另一个构造函数包含二个用于创建对象时设置存款额与存期的参数。
C. 该类有三个方法:存款(save),取款(fetch)及计算存期满后的总金额(calcTotal).
D. 创建一个账号fans,创建时即(利用构造函数)存入1000元,存期3年,后又存入2000元(利用save方法),计算存期满后的总金额(利用calcTotal方法)
【正确答案】
public class BankAccount {
private String name;//姓名(账号)
private double balance;//存款余额
private int year;//存期
private double rate=0.03;//年利率
//构造方法
public BankAccount(String name){
this(name,10.0,1);//默认存款10元,存期1年
}
//构造方法
public BankAccount(String name,double deposit,int year){
this.name=name;
this.balance=deposit;
this.year=year;

}
//存款
public void save(double deposit){
	this.balance+=deposit;
}
//取款
public double fetch(double reduce) throws Exception{
	if(this.balance>=reduce){
		this.balance-=reduce;//余额
		return reduce;
	}
	else{
		throw new Exception("不能透支!");			
	}		
}
//存期满后的总金额
public double calcTotal(){
	
	double total=balance;
	for(int i=1;i<=year;i++){
		total=total*(1+rate);
	}
	return total;
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	//测试用
	BankAccount fans=new BankAccount("fans",1000,1);
	fans.save(2000);
	double totalMoney=fans.calcTotal();
	System.out.println("totalMoney==>"+totalMoney);
	
} 

【解释】无

【题目编号】 jsd-01-102-5006
【知 识 点】 JAVA基础-JAVA面向对象-反射、普通数组
【难易程度】 90
【题目描述】
用反射机制声明长度为 10 的 int 型数组的表达式
【正确答案】
import java.lang.reflect.Array;
public class IntArrayDemo {
public static void main(String[] args) {
Class c = int.class;
Object objArr = Array.newInstance(c, 10);
for(int i = 0; i < 10; i++) {
Array.set(objArr, i, i);
}
int[] arr=(int[])objArr;
for(int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
}
【解释】无

【题目编号】 jsd-01-102-5007
【知 识 点】 JAVA基础-JAVA面向对象-内部类、static-static块
【难易程度】 70
【题目描述】
请阅读如下代码,请问答以下三条打印语句输出的结果是什么?
public class Main {
public static String staticProperty = “1”;
public String property = “a”;
static {
staticProperty = “2”;
}
public Main () {
this.property = “b”;
staticProperty = “3”;
}
{
this.property = “c”;
staticProperty = “4”;
}
public static void main(String[] args){
System.out.println(Main.staticProperty);
System.out.println(new Main().property);
System.out.println(Main.staticProperty);
}
}
【正确答案】
2
b
3
【解释】无

【题目编号】 jsd-01-102-5008
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
有 2 个类 Cat 及 WhiteCat,代码如下:
public class Cat {
protected static String color = “random”;
public Cat() {
}
public void showCatColor() {
System.out.println(“Cat:” + color);
}
public static void showColor() {
System.out.println(“Cat:” + color);
}
}
public class WhiteCat extends Cat {
protected static String color = “white”;
public WhiteCat() {
super();
}
public void showCatColor() {
System.out.println(“WhiteCat:” + color);
}
public static void showColor() {
System.out.println(“WhiteCat:” + color);
}
}
请分析下面各段程序的运行结果
A. WhiteCat whiteCat = new WhiteCat();
Cat cat = whiteCat;
cat.showColor(); cat.showCatColor();
A. Cat cat = new Cat();
WhiteCat whiteCat = (WhiteCat) cat;
cat.showColor();
cat.showCatColor();
B. Cat cat = new WhiteCat();
WhiteCat whiteCat = (WhiteCat) cat;
cat.showColor();
cat.showCatColor();
【正确答案】
A 段执行的结果是: Cat:random WhiteCat:white
B 段执行的结果是:会抛出 java.lang.ClassCastException 异常
C 段执行的结果是: Cat:random WhiteCat:white
【解释】无

【题目编号】 jsd-01-102-5009
【知 识 点】 JAVA基础-JAVA面向对象-final、普通数组
【难易程度】 40
【题目描述】
判断下列语句是否正确,如果有错误,请指出错误所在?
void foo(final int []arg){
if (arg.length > 1)
arg[0] = 5;
}
【正确答案】
正确
【解释】无

【题目编号】 jsd-01-102-5010
【知 识 点】 JAVA基础-JAVA面向对象-对象和类
【难易程度】 40
【题目描述】
判断下列语句是否正确,如果有错误,请指出错误所在?
interface A{
int add(final A a);
}
class B implements A{
long add(final A a){
return this.hashCode() + a.hashCode();
}
}
【正确答案】
错,返回值不是 long 类型
【解释】无

【题目编号】 jsd-01-102-5011
【知 识 点】 JAVA基础-JAVA面向对象-继承、static-static块
【难易程度】 50
【题目描述】
指出下面程序的运行结果:
class A{
static{
System.out.print(“a”);
}
public A (){
System.out.print(“x”);
}
}
class B extends A{
static{System.out.print(“b”);}
public B (){
System.out.print(“y”);
}
}
public class Test{
public static void main(String[] args){
A ab = new B ();
ab = new B ();
}
}
【正确答案】
abxyxy
【解释】无

【题目编号】 jsd-01-102-5012
【知 识 点】 JAVA基础-JAVA面向对象-内部类
【难易程度】 80
【题目描述】
下列程序运行的结果是
class A {
class Dog {
private String name; private int age; private int step;
Dog(String s, int a) {
name = s; age = a; step = 0;
}
public void run(Dog fast) {
fast.step++;
}
}
public static void main(String args[]) {
A a = new A();
Dog d = a.new Dog(“Tom”, 3);
d.step = 25; d.run(d);
System.out.println(d.step);
}
}
【正确答案】
26
【解释】无

【题目编号】 jsd-01-102-5013
【知 识 点】 JAVA基础-JAVA面向对象-继承
【难易程度】 60
【题目描述】
请看下列程序,运行结果是
class Super{
int i=10;
Super(){ print(); i=20;}
void print(){ System.out.print(i);}
}
public class Sub extends Super{
int j=30;
Sub(){ print(); j=40;}
void print(){ System.out.print(j);}
public static void main(String[] args){ System.out.print(new Sub().j);}
}
【正确答案】
03040
【解释】无
1.3 JAVA核心API-String、正则表达式、Object、包装类、日期操作等
【题目编号】 jsd-01-103-1001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
Given:
public class foo {
static String s;
public static void main (String[]args) {
System.out.println (“s=” + s);
}
}
What is the result?
【选项】
A. The code compiles and “s=” is printed.
B. The code compiles and “s=null” is printed.
C. The code does not compile because string s is not initialized.
D. The code does not compile because string s cannot be referenced.
E. The code compiles, but a NullPointerException is thrown when toString is called.
【正确答案】 B
【解释】
String 为引用数据类型,引用类型数据成员的默认值为 null

【题目编号】 jsd-01-103-1002
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
What will be the output when you compile and execute the following program. The symbol ’? ’ means space.
1:public class Base{
2:
3: private void test() {
4:
5: String aStr = “? One? “;
6: String bStr = aStr;
7: aStr.toUpperCase();
8: aStr.trim();
9: System.out.println(”[” + aStr + “,” + bStr + “]”);
10: }
11:
12: static public void main(String[] a) {
13: new Base().test();
14: }
15: }
Select most appropriate answer.
【选项】
A. [ONE,? One? ]
B. [? One? ,One]
C. [ONE,One]
D.[ONE,ONE]
E. [? One? ,? One? ]
【正确答案】 E
【解释】
通过 String bStr = aStr;这句代码使 bStr 和 aStr 指向同一个地址空间,所以最后 aStr 和 bStr 的结 果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的字符串。

【题目编号】 jsd-01-103-1003
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
Java 语言中,String 类的 IndexOf()方法返回的类型是?
【选项】
A. Int16
B. Int32
C. int
D. long
【正确答案】 C
【解释】
indexOf 方法的声明为:public int indexOf(int ch)
在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。

【题目编号】 jsd-01-103-1004
【知 识 点】 JAVA基础-JAVA核心API-包装类
【难易程度】 30
【题目描述】
Given:
public class Test {
private static float[] f = new float[2];
public static void main(String args[]) {
System.out.println(“f[0] = “ + f[0]);
}
}
What is the result?
【选项】
A. f[0] = 0
B. f[0] = 0.0
C. Compilation fails.
D. An exception is thrown at runtime.
【正确答案】 B
【解释】

【题目编号】 jsd-01-103-1005
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 70
【题目描述】
Given:
public class Test {
public static void main (String [] args) {
String foo = “blue”;
String bar = foo; foo = “green”; System.out.println(bar);
}
}
What is the result?
【选项】
A. An exception is thrown.
B. The code will not compile.
C. The program prints “null”
D. The program prints “blue”
E. The program prints “green”
【正确答案】 D
【解释】
采用 String foo = “blue”定义方式定义的字符串放在字符串池中,通过 String bar = foo;
他们指向了同一地址空间,就是同一个池子,当执行 foo = “green”; foo 指向新的地址空间。

【题目编号】 jsd-01-103-1006
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
指出下列程序运行的结果
public class Example{
String str=new String(“good”);
char[]ch={‘a’,‘b’,‘c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=“test ok”;
ch[0]=‘g’;
}
}
【选项】
A. good and abc B. good and gbc
C. test ok and abc D. test ok and gbc
【正确答案】 B
【解释】
数组和字符串都是引用类型。

【题目编号】 jsd-01-103-1007
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 30
【题目描述】
给出如下声明:
String s = “Example”; 合法的代码由哪些?
【选项】
A. s>>>=3 B. s[3]= “X” C. int i = s.iength() D. s = s +10
【正确答案】 D
【解释】
A. 移位运算,要是整数类型。;B.s 不是数组;C.String 类取长度的方法为:length() D. 字符串相加

【题目编号】 jsd-01-103-1008
【知 识 点】 JAVA基础-JAVA核心API -字符串操作
【难易程度】 50
【题目描述】
What will be the output when you compile and execute the following program.
public class Base{
private void test() {
System.out.println(6 + 6 + “(Result)”);
}
static public void main(String[] a) {
new Base().test();
}
}
Select most appropriate answer.
【选项】
A. 66(Result)
B. 12(Result)
C. Runtime Error.Incompatible type for +. Can’t convert an int to a string.
D. Compilation Error.Incompatible type for +. Can’t add a string to an int.
【正确答案】 B
【解释】
字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如上边例子要是 System.out.println("(Result)"+6 + 6 );那么结果就是(Result)66,如果第一个和第二个……第 n 个都是基本数据第 n+1 是字符串类型,那么前 n 个都按加法计算出结果在与字符串连接

【题目编号】 jsd-01-103-1009
【知 识 点】 JAVA基础-JAVA核心API –正则表达式
【难易程度】 20
【题目描述】
正则表达式”\d+.?\d*”在匹配下列字符串时结果是失败的是?
【选项】
A. 12.5 B. 1.25 C. 以上都成功 D. 以上都失败
【正确答案】 B
【解释】
\d+ 表示可以出现 1 次或是 n 次数字
. .? 表示可以“.”可以出现一次,也可以不出现
\d* 表示可以出现 0 次或是 n 次数字

【题目编号】 jsd-01-103-2001
【知 识 点】 JAVA基础-JAVA核心API- Math方法
【难易程度】 40
【题目描述】
Which code determines the int value foo closest to a double value bar?
【选项】
A. int foo = (int) Math.max(bar);
B. int foo = (int) Math.min(bar);
C. int foo = (int) Math.abs(bar);
D. int foo = (int) Math.ceil(bar);
E. int foo = (int) Math.floor(bar); F. int foo = (int) Math.round(bar);
【正确答案】 DEF
【解释】
A B 两个选项方法是用错误,都是两个参数。
abs 方法是取 bar 的绝对值,ceil 方法返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。floor方法返回最大的(最接近正无穷大)double值,该值小于等于参数,并等于某个整数。round方法返回最接近参数的 long。

【题目编号】 jsd-01-103-2002
【知 识 点】 JAVA基础-JAVA核心API-Object-equals方法
【难易程度】 50
【题目描述】
String s=new String(“hello”); String t =new String(“hello”);
char c [ ] ={‘h’,’e’,’l’,’l’,’o’};
下列哪些表达式返回 true ?
【选项】
A.s.equals(t); B.t.equals©; C.s= =t ;
D.t.equals (new String(“hello”)); E.t= = c;
【正确答案】 AD
【解释】
String 类的 equals 方法已经覆盖了Object 类的 equals 方法,比较的是两个字符串的内容是否相等,双等号比较的是两个对象的内存地址是否相等

【题目编号】 jsd-01-103-4001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 30
【题目描述】
String,StringBuffer,StringBuilder 的区别。
【正确答案】
String 的长度是不可变的;
StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时, 那么使用 StringBuffer,如果最后需要 String,那么使用 StringBuffer 的 toString()方法;线程安全;
StringBuilder 是从 JDK 5 开始,为 StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
【解释】无

【题目编号】 jsd-01-103-4002
【知 识 点】 JAVA基础-JAVA核心API-日期操作
【难易程度】 50
【题目描述】
如何格式化日期
【正确答案】
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String formatNow=sdf.format(now);
变量 formatNow 就是格式化好的日期。
【解释】无

【题目编号】 jsd-01-103-4003
【知 识 点】 JAVA基础-JAVA核心API-包装类
【难易程度】 30
【题目描述】
将字符“12345”转换成 long 型
【正确答案】
String s=“12345”;
long num=Long.valueOf(s).longValue();
【解释】无

【题目编号】 jsd-01-103-4004
【知 识 点】 JAVA基础-JAVA核心API-Object-equals方法
【难易程度】 30
【题目描述】
数组有没有 length()这个方法?String 有没有 length()这个方法?
【正确答案】
数组没有 length()方法它有length 属性String 有 length()方法。
【解释】无

【题目编号】 jsd-01-103-4005
【知 识 点】 JAVA基础-JAVA核心API-正则表达式
【难易程度】 40
【题目描述】
请写出如下正则表达式的含义;
com︱cn︱net
^http://www.d-heaven.com/$
^http://www.sina.com.cn/new/newid=\d+
【正确答案】
com︱cn︱net 表示匹配 com 或是 cn 或是 net 中一个
^http://www.d-heaven.com/$ 表示匹配:http://www.d-heaven.com/
^http://www.sina.com.cn/new/newid=\d+ 表示匹配 错误!超链接引用无效。多个数字

【题目编号】 jsd-01-103-5001
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
在 web 应用开发过程中经常遇到输出某种编码的字符,如从 GBK 到 iso8859-1 等,如何输出一个 某种编码的字符串?
【正确答案】
public static String translate(String str) {
String tempStr = “”;
try {
tempStr = new String(str.getBytes(“ISO-8859-1”), “GBK”);
tempStr = tempStr.trim();
} catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}
【解释】无

【题目编号】 jsd-01-103-5002
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 60
【题目描述】
请写出一个公用方法,输入 String 返回该串是否含有非空字符,并写出 junit 的测试用例。
【正确答案】
public class TestString {
public static boolean hasBlank(String str) {
if (str.endsWith("") || str.startsWith("")) {
return false;
} else {
String[] strs = str.split("");
if (strs.length == 1) {
return false;
}
}
return true;
}
@Test
public void testFun() {
System.out.println(TestString.hasBlank(“test”));
}
}
【解释】无

【题目编号】 jsd-01-103-5003
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是 要保证汉字不被截半个,如"我 ABC"4,应该截为"我 AB",输入"我 ABC 汉 DEF",6,应该输出为"我 ABC"而不是"我 ABC+汉的半个"。
【正确答案】
package com.tarena;
public class SplitString {
String SplitStr;
int SplitByte;
public SplitString(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
System.out.println(“The String is:” + SplitStr + “;SplitBytes=”+ SplitByte);
}
public void SplitIt(){
int loopCount;
loopCount=(SplitStr.length()%SplitByte0)?(SplitStr.length()/SplitByte):
(SplitStr.leng th()/SplitByte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ ){
if (i
loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)SplitByte,(iSplitByte)));
}
}
}
public static void main(String[] args) {
SplitString ss = new SplitString(
“test 中 dd 文 dsaf 中男大 3443n 中国 43 中国人 0ewldfls=103”, 4);
ss.SplitIt();
}
}
【解释】无

【题目编号】 jsd-01-103-5004
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
假定屏幕的像素宽度为 screenWidth,写一个函数计算一个字符串需要分成几行显示。 要求:
1)、每行应尽可能多地显示字符,但不能有字符部分或完全显示在屏幕外。超过部分的字符换下一行 显示。
2)、每个字符的像素宽度不一样,每个字符的像素宽度不一样。用 int GetCharWidth(char c)获得每个字符的像素宽度
【正确答案】
/**

  • 计算一个字符串可以分多少行进行显示
  • @param s原始字符串
  • @param screenWidth屏幕宽度
  • @return 行数
    */
    public int calcLineNum(String s, int screenWidth) {
    int length = 0;
    // 行数
    int n = 0;
    // 统计长度
    for (int i = 0; i < s.length(); i++) {
    // 当前字符的宽度
    int charLen = GetCharWidth(s.charAt(i));
    // 总长度增加
    length += charLen;
    // 如果达到屏幕宽度
    if (length > screenWidth) {
    n++; // 行数+1
    length = charLen; // 重新计算长度
    }
    }
    // 最后一行处理
    if (length > 0) {
    n++;
    }
    return n;
    }
    【解释】无

【题目编号】 jsd-01-101-5005
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 70
【题目描述】
写一个函数去掉一个字符串中单词间多余的空格,使得相邻两个单词间有且只有一个空格。例如当输入字符串是“Hello!_ Game_programming _world!”时,调用该函数后字符串变为“Hello!_Game_programming_world!”。
【正确答案】
/**

  • 去除字符串中多余的空格
  • @param s需要处理的字符串
  • @return 处理后的字符串
    */
    public String trimSpace(String before) {
    String temp= “” + before.charAt(0);
    for (int i = 1; i < before.length(); i++) {
    char c = before.charAt(i);
    // 如果当前字符是空格
    if (c == ’ ') {
    // 判断前一个不是是空格则添加,否则不添加
    if (before.charAt(i - 1) != ’ ') {
    temp += c;
    }
    } else {
    temp += c;
    }
    }
    return temp;
    }
    【解释】无

【题目编号】 jsd-01-103-5006
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
找出两个字符串中最大子字符串,如"abractyeyt",“dgdsaeactyey"的最大子串为"actyet”。
【正确答案】
public class MaxSameString {
public static void main(String[] args) {
MaxSameString mss = new MaxSameString();
System.out.println(mss.getMaxSubString(“找到相同字符后”,
“再循环判断之后的字符知否相同”));
}
public static String getMaxSubString(String str1, String str2) {
int maxLen = 0;
String result = “”;
for (int flag1 = 0; flag1 < str1.length(); flag1++) {
for (int flag2 = 0; flag2 < str2.length(); flag2++) {
int len = 0;
String str = “”;
// 找到相同字符后,再循环判断之后的字符知否相同,
记录相同的字符长度,判断是否为最大子串
if (str1.charAt(flag1) == str2.charAt(flag2)) {
int i = flag1;
int j = flag2;
while (i < str1.length() && j < str2.length()
&& str1.charAt(i++) == str2.charAt(j++)) {
len++;
str = str + str2.charAt(j - 1);
}
if (len > maxLen) {
maxLen = len;
result = str;
}
}
}
}
return result;
}
}
【解释】无

【题目编号】 jsd-01-103-5007
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 80
【题目描述】
Java实现字符串压缩算法。
【正确答案】
public class StringCompression {
private StringBuffer sb = new StringBuffer();
/**

  • aaabcdda—>3a1b1c2d1a
  • @param sourceStr
  • @return
    */
    public String compression(String sourceStr) {
    if (sourceStr == null || “”.equals(sourceStr)) {
    ;
    } else {
    //字符串长度
    int strLen = sourceStr.length();
    //字符串中第一个字符
    char firstChar = sourceStr.charAt(0);
    int count=1;
    //用于截串,字符串的起始位置
    int index = 0;
    if (strLen > 1) {
    for (int i = 1; i < strLen; i++) {
    char c = sourceStr.charAt(i);
    if (!String.valueOf(firstChar).equals(String.valueOf©)) {
    index = i;
    break;
    }else{
    //统计相同字符的个数
    ++count;
    }
    }
    //相同字符的字符串,在sb中追加字符串长度和首字符
    if (index == 0) {
    return sb.append(strLen).append(firstChar)
    .toString();
    }
    sb.append(count).append(firstChar);
    } else if (strLen == 1) { //字符串长度为1时
    return sb.append(“1”).append(firstChar).toString();
    }
    //起始索引必须小于等于结束索引,否则会报越界错误
    if (index <= strLen)
    compression(sourceStr.substring(index, strLen));
    }
    return sb.toString();
    }
    public static void main(String[] args) {
    StringCompression sc = new StringCompression();
    String sourceStr = “aaabcdda”;
    String resultStr = sc.compression(sourceStr);
    System.out.println(resultStr);
    }
    }
    【解释】无

【题目编号】 jsd-01-103-5008
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 90
【题目描述】
编写一个加密类Ecryption,在其中实现对字符串的加密和解密方法。加密原理是:
加密后的字符串的第一个字符是原字符串的最后一个字符,其余的每个字符是对应的原字符串中的前一个字符的值加上3。比如:“welcome“,末尾的字符为’e’;“welcom“依次加上3后成为“zhofrp“,故加密后的结果为“ezhofrp“
【正确答案】
class Ecryption{
//加密方法:输入明文,返回密文
 public String encrypt(String source){
//加密代码
}
//解密方法:输入密文,返回明文
 public String decrypt(String dest){
//解密代码
}
}

public class EncryptDecrypt {
public static void main(String[] args) {
String source=“Apple12大连”;
String dest=encrypt(source);
System.out.println(source+" 加密==>"+dest);
String resultSource=decrypt(dest);
System.out.println(dest+" 解密==>"+resultSource);
}
// 加密函数
static public String encrypt(String str){
StringBuilder result=new StringBuilder(str.substring(str.length()-1));//取最后一个字符放到结果字符串的开头
for(int i=0;i char c=(char)(str.charAt(i)+3);//取出第i个字符;
result.append©;
}
return result.toString();
}
//解密函数
static public String decrypt(String str){
StringBuilder result=new StringBuilder();//取最后一个字符放到结果字符串的开头
for(int i=1;i char c=(char)(str.charAt(i)-3);//取出第i个字符;
result.append©;
}
result.append(str.charAt(0));//原来第一个字符到现在最后一个字符
return result.toString();
}
}
【解释】无

【题目编号】 jsd-01-103-5009
【知 识 点】 JAVA基础-JAVA核心API-包装类
【难易程度】 60
【题目描述】
编写一个函数将一个十六进制数的字符串参数转换成整数返回。
【正确答案】
String str = “13abf”;
int len = str.length;
int sum = 0;
for(int i=0;i char c = str.charAt(len-1-i);
int n = Character.digit(c,16);
sum += n * (1<<(4*i));
}
【解释】无

【题目编号】 jsd-01-103-5010
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
以下代码,请问答以下的打印语句的输出结果是什么?
public static void main(String[] args){
String classPath=“java.lang.String”;
System.out.println(classPath.replaceAll(".","/"));
}
【正确答案】

【解释】无

【题目编号】 jsd-01-103-5011
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 40
【题目描述】
查看下面的代码,写出可以使程序正常执行的修改方法
1.public class MyClass {
2.static String s1;
3. String s2;
4. public static void main(String args[]) {
5. String s3;
6. System.out.println(“s1 =” + s1);
7. System.out.println(“s2 =” + s2);
8. System.out.println(“s3 =” + s3);
9. }
10.}
【正确答案】
删除第 8 行或者将第 6 行改为 String s3 = “”;
【解释】无

【题目编号】 jsd-01-103-5012
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 50
【题目描述】
为了显示 myStr = 23 这样的结果,写出在控制台输入的命令
public class MyClass {
public static void main(String args[]) {
String s1 = args[0];
String s2 = args[1];
String myStr = args[2];
System.out.printin(“myStr =” + s2 + myStr);
}
}
【正确答案】
java MyClass 1 2 3 4
【解释】无

【题目编号】 jsd-01-103-5013
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 50
【题目描述】
写出下面代码的执行结果
public class MyClass {
static void aMethod(StringBuffer sf1, StringBuffer sf2) {
sf1.append(sf2);
sf2 = sf1;
}
public static void main(String[] args){
StringBuffer sf1 = new StringBuffer(“A”);
StringBuffer sf2 = new StringBuffer(“B”);
aMethod(sf1,sf2);
System.out .println(sf1+ “:”+sf2);
}
}
【正确答案】
AB:B
【解释】无

【题目编号】 jsd-01-103-5014
【知 识 点】 JAVA基础-JAVA核心API-字符串操作
【难易程度】 50
【题目描述】
第 3 行中生成的 object 在第几行执行后成为 garbage collection 的对象?
1.public class MyClass {
2. public StringBuffer aMethod() {
3. StringBuffer sf = new StringBuffer(“Hello”);
4. StringBuffer[] sf_arr = new StringBuffer[1];
5. sf_arr[0] = sf;
6. sf = null;
7. sf_arr[0] = null;
8. return sf;
9. }
10.}
【正确答案】
第 7 行
【解释】无

【题目编号】 jsd-01-103-5015
【知 识 点】 JAVA基础-JAVA核心API-正则表达式
【难易程度】 20
【题目描述】
请用正则表达式匹配出 QQ 号(假设 QQ 号码为 5—10 位);
【正确答案】
^ \d{5,10}$
【解释】
1.4 JAVA核心API-集合操作
【题目编号】 jsd-01-104-1001
【知 识 点】 JAVA基础-JAVA核心API-集合操作、包装类
【难易程度】 70
【题目描述】
下面代码的执行结果是?
import java.util.*;
public class ShortSet{
public static void main(String args[]){
Set s=new HashSet();
for(Short i=0;i<100;i++)
{
s.add(i);
s.remove(i-1);
} System.out.println(s.size());
}
}
【选项】
A. 1
B. 100
C. Throws Exception
D. None of the Above
【正确答案】 B
【解释】
i 是 Short 类型 i-1 是 int 类型,其包装类为 Integer,所以 s.remove(i-1);不能移除 Set 集合中 Short类型对象。

【题目编号】 jsd-01-104-1002
【知 识 点】 JAVA基础-JAVA核心API-集合操作-ArrayList
【难易程度】 50
【题目描述】
欲构造 ArrayList 类得一个实例,此类继承了 List 接口,下列哪个方法是正确的:
【选项】
A. ArrayList myList = new Object();
B. List myList = new ArrayList();
C. ArraylList myList = new List();
D. List myList = new List();
【正确答案】 B
【解释】无

【题目编号】 jsd-01-104-1003
【知 识 点】 JAVA基础-JAVA核心API-集合操作-HashSet
【难易程度】
【题目描述】
请选出下列正确的答案。( )

  1. import java.util.*;
  2. public class WrappedString {
  3. private String s;
  4. public WrappedString(String s) { this.s = s; }
  5. public static void main(String[] args) {
  6.  HashSet hs = new HashSet();
      
       
  7.  WrappedString ws1 = new WrappedString("aardvark");
    
  8.  WrappedString ws2 = new WrappedString("aardvark");
    
  9.  String s1 = new String("aardvark");
    
  10. 	String s2 = new String("aardvark");
    
  11. 	hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
    
  12. 	System.out.println(hs.size()); } }
    
  13. 【选项】
    A. 1
    B. 4
    C. 2
    D. 3
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-01-104-1004
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 50
    【题目描述】
    下面哪个是链式存储并快速顺序(不需要随机访问)访问的集合类型?( )
    【选项】
    A. java.util.LinkedList
    B. java.util.Queue
    C. java.util.ArrayList
    D. java.util.LinearList
    【正确答案】 B
    【解释】无

    【题目编号】 jsd-01-104-1005
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-ArrayList
    【难易程度】 60
    【题目描述】
    关于以下代码正确的描述正确的有( )
    public class Cats{
    public static void main(String args[]){
    List cats = new ArrayList();
    cats.add(new Cat());
    Animal b = new Animal();
    Cat a = null;
    if(b instanceof Animal) a = (Cat)b;
    if(a != null) cats.add(a);
    System.out.println(cats.size() +“cats”);
    }
    }
    calss Animal {}
    class Cat extends Animal{}
    【选项】
    A. 编译失败
    B. 输出1 cats
    C. 输出2 cats
    D. 运行时抛出异常
    【正确答案】 D
    【解释】

    【题目编号】 jsd-01-104-1006
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 60
    【题目描述】
    如果要保证元素唯一,且按照存放顺序读取,可以选用( )
    【选项】
    A. Map B. Set C. LinkedList D. LinkedHashSet
    E. SortedMap F. Collection
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-01-104-1007
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-二叉树
    【难易程度】 80
    【题目描述】
    若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的借点访问顺序是( )
    【选项】
    A. bdgcefha B. gdbecfha C. bdfaechf D.gdbehfca
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-01-104-1008
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-ArrayList
    【难易程度】 50
    【题目描述】
    要构造ArrayList类的一个实例(此类继承了List接口,下列哪个方法是正确的)( )
    【选项】
    A. ArrayList myList = new Object();
    B. List myList = new ArrayList();
    C. ArrayList myList = new List();
    D. List myList = new List();
    【正确答案】 B
    【解释】

    【题目编号】 jsd-01-104-1009
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 40
    【题目描述】
    关于集合类以下说法错误的是:( )
    【选项】
    A. Vector是线程安全的 B. ArrayList是线程安全的
    C. HashMap中可以存放null值作为key D. Set中存放的对象是唯一的
    【正确答案】 B
    【解释】

    【题目编号】 jsd-01-104-1010
    【知 识 点】 JAVA基础-JAVA核心API-Collection接口
    【难易程度】 80
    【题目描述】
    Java的集合框架中重要的接口java.util.Collection定义了许多方法。选项中哪个方法不是Collection接口所定义的?( )
    【选项】
    A. int size() B. boolean containsAll(Collection c)
    C. compareTo(Object obj) D. boolean remove(Object obj)
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-01-104-2001
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-链表
    【难易程度】 70
    【题目描述】
    链表具有的特点是:
    【选项】
    A. 不必事先估计存储空间
    B. 可随机访问任一元素
    C. 插入删除不需要移动元素
    D. 所需空间与线性表长度成正比
    【正确答案】 ACD
    【解释】
    A. 采用动态存储分配,不会造成内存浪费和溢出。
    B. 不能随机访问,查找时要从头指针开始遍历
    C. 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素
    D. 需要用额外空间存储线性表的关系,存储密度小

    【题目编号】 jsd-01-104-2002
    【知 识 点】 JAVA基础-JAVA核心API-集合操作、垃圾回收、switch
    【难易程度】 50
    【题目描述】
    关于 Java 语言,下列描述正确的是( )
    【选项】
    A. switch 不能够作用在 String 类型上
    B. List, Set, Map 都继承自 Collection 接口
    C. Java 语言支持 goto 语句
    D. GC 是垃圾收集器,程序员不用担心内存管理
    【正确答案】 AD
    【解释】
    B.Map 没有继承 Collection 接口;C.java 不支持 goto 语句。

    【题目编号】 jsd-01-104-2003
    【知 识 点】 JAVA基础-JAVA核心API-Object-hashcode
    【难易程度】 70
    【题目描述】
    Which two statements are true regarding the return values of property written hashCodeand equals methods from two instances of the same class? (Choose two)
    【选项】
    A. If the hashCode values are different, the objects might be equal.
    B. If the hashCode values are the same, the object must be equal.
    C. If the hashCode values are the same, the objects might be equal.
    D. If the hashCode values are different, the objects must be unequal.
    【正确答案】 CD
    【解释】
    先通过 hashcode 来判断某个对象是否存放某个桶里,但这个桶里可能有很多对象,那么我们就需要再 通过 equals 来在这个桶里找到我们要的对象。

    【题目编号】 jsd-01-104-4001
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 40
    【题目描述】
    Collection 和 Collections 的区别?
    【正确答案】
    Collection 是 java.util 下的接口,它是各种集合的父接口,继承于它的接口主要有 Set 和 List;Collections 是个 java.util 下的类,是针对集合的帮助类,提供一系列静态方法实现对各种 集合的搜索、排序、线程安全化等操作。
    【解释】无

    【题目编号】 jsd-01-104-4002
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 50
    【题目描述】
    HashMap 与 TreeMap 的区别?
    【正确答案】
    HashMap 通过 hashcode 对其内容进行快速查找,而 TreeMap 中所有的元素都保持着某种固定的 顺序,如果你需要得到一个有序的结果你就应该使用 TreeMap(HashMap 中元素的排列顺序是不固定 的)。
    【解释】无

    【题目编号】 jsd-01-104-4003
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 50
    【题目描述】
    ArrayList 和 Vector 的区别?
    【正确答案】
    同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程不安全的,不是同步的;数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半。
    【解释】无

    【题目编号】 jsd-01-104-4004
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 50
    【题目描述】
    HashMap 和 Hashtable 的区别?
    【正确答案】
    HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都实现了 Map 接口,主要区别在于 HashMap 允许空(null)键值(key),由于非线程安全,效率上高于 Hashtable。HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。最大的不同是, Hastable 的方法是 synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为 它的方法实现同步,而 HashMap 就必须为之提供同步。
    【解释】无

    【题目编号】 jsd-01-104-4005
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 50
    【题目描述】
    请说出 ArrayList,Vector, LinkedList 的存储性能和特性
    【正确答案】
    ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加 和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以 索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但 是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
    【解释】无

    【题目编号】 jsd-01-104-4006
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合区别
    【难易程度】 40
    【题目描述】
    List、Map、Set 三个接口存储元素时各有什么特点?
    【正确答案】
    1)List 是有序的 Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,这类似于 Java 的数组。
    2)Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有 e1.equals(e2)=false,Set最多有一个null元素。
    3)Map接口:请注意,Map没有继承Collection接口,Map提供key到value的映射。
    【解释】无

    【题目编号】 jsd-01-104-4007
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 40
    【题目描述】
    在 java 中,List 是个接口,那实现 List 接口的类有哪些,有什么区别?
    【正确答案】
    ArrayList 是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素, 它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而 插入数据慢,LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需 要记录本项的前后项即可,所以插入速度较快。
    【解释】无

    【题目编号】 jsd-01-104-4008
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-泛型
    【难易程度】
    【题目描述】
    判断下列语句是否正确,如果有错误,请指出错误所在?
    List a = new ArrayList();
    a.add(5);
    【正确答案】
    错误,默认封装 int 类型。
    【解释】无

    【题目编号】 jsd-01-104-4009
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-Vector
    【难易程度】 60
    【题目描述】
    写出执行下面的代码后的结果
    public class MyClass {
    public static void main(String args[]) {
    java.util.Vector v1 = new java.util.Vector();
    v1.addElement(“Hello”);
    v1.addElement(new Float(3.14f));
    v1.addElement(10);
    System.out.println(v1.elementAt(0) + “:” + v1.elementAt(1) + “:”+
    v1.elementAt(2));
    }
    }
    【正确答案】
    Hello : 3.14 : 10
    【解释】无

    【题目编号】 jsd-01-104-4010
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-泛型
    【难易程度】 30
    【题目描述】
    你是怎么理解 java 的泛型的?
    【正确答案】
    在 Java SE 1.5 之前,没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意 化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型 可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
    泛型是 Java SE 1.5 的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定 为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用 率。
    【解释】无

    【题目编号】 jsd-01-104-5001
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 60
    【题目描述】
    判断一个 int 数组中的元素是否存在重复,方法声明如下:
    boolean isRepeat(int[] m){ }
    【正确答案】
    public boolean isRepeat2(int[] m){
    Set h =new HashSet(m.length);
    for (int i = 0; i < m.length; i++) {
    h.add(new Integer(m[i]));
    }
    if (h.size()==m.length ){
    return false;
    }else {
    return true;
    }
    }
    【解释】无

    【题目编号】 jsd-01-104-5002
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 60
    【题目描述】
    编写函数 insert(String str),将字符串“a,123;b,456;c,789”置入 HashMap 中。
    【正确答案】
    import java.util.HashMap;
    public class HashMapDemo {
    HashMap map=new HashMap();
    public void insert(String str){
    map.put(“a”, str);
    }
    public static void main(String[] args) {
    HashMapDemo demo=new HashMapDemo();
    demo.insert(“a,123;b,456;c,789”);
    }
    }
    【解释】无

    【题目编号】 jsd-01-104-5003
    【知 识 点】 JAVA基础-JAVA核心API-字符串操作、引用类型数组
    【难易程度】 50
    【题目描述】
    实现函数 public String[ ] array(List list),其中参数 list 中元素类型为字符串。
    【正确答案】
    public String[] array(List list) {
    String[] elementData = new String[list.size()];
    for(int i=0;i elementData[i]=(String)list.get(i);
    }
    return elementData ;
    }
    【解释】无

    【题目编号】 jsd-01-104-5004
    【知 识 点】 JAVA基础-JAVA核心API-字符串操作
    【难易程度】 60
    【题目描述】
    编写程序将由数字及字符组成的字符串中的数字截取出来并按顺序输出,例如: “ABC137GMNQQ2049PN5FFF”输出结果应该为 01234579。
    【正确答案】
    package com.tarena;
    import java.util.Arrays;
    public class NumberSplitChar {
    public static void main(String[] args) {
    String str=“ABC137GMNQQ2049PN5FFF”;
    char[] beforechars=str.toCharArray();
    char[] afterchars=new char[beforechars.length];
    int j=0;
    for(int i=0;i if(beforechars[i]>=‘0’ && beforechars[i]<=‘9’){
    afterchars[j++]=beforechars[i];
    }
    }
    Arrays.sort(afterchars);
    for(int i=(afterchars.length-j);i System.out.print(afterchars[i]);
    }
    }
    }
    【解释】无

    【题目编号】 jsd-01-104-5005
    【知 识 点】 JAVA基础-JAVA核心API-集合操作、类的编写
    【难易程度】 70
    【题目描述】
    请用 JAVA 实现两个类,分别实现堆栈(Stack)和队列(Queue)操作。
    【正确答案】
    public class MyStack {
    private List list;
    public MyStack(){
    list = new ArrayList();
    }
    public boolean isEmpty(){
    return list.size() == 0;
    }
    public void push(Object obj){
    list.add(obj);
    }
    public Object pop(){
    if(list.size()>0){
    Object obj = list.get(list.size()-1);
    list.remove(list.size()-1);
    return obj;
    }else{
    return null;
    }
    }
    public int getNumber(){
    return list.size();
    }
    }

    class IntegerQueue {
    public int[] integerQueue;// 用来当队列
    public int tail;// 队尾
    public int size;// 队的长度,也可以设置一个默认值,溢出时从新申请
    public IntegerQueue(int size) {
    integerQueue = new int[size];
    this.size = size;
    tail = 0;
    }
    public void inQueue(int i) {
    if (tail < size) {
    this.integerQueue[tail] = i;
    tail++;
    } else {
    System.err.println(“溢出啦!”);
    }
    }
    public int outQueue() {
    if (tail >= 0) {
    int tmp = this.integerQueue[tail];
    tail–;
    return tmp;
    } else {
    System.err.println(“队列为空!”);
    throw new RuntimeException();
    }
    }
    }
    【解释】无

    【题目编号】 jsd-01-104-5006
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-集合遍历
    【难易程度】 60
    【题目描述】
    有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
    【正确答案】
    String content = “中国 aadf 的 111 萨 bbb 菲的 zz 萨菲”;
    HashMap map = new HashMap();
    for(int i=0;i char c = content.charAt(i);
    Integer num = map.get©;
    if(num == null)
    num = 1;
    else
    num = num + 1;
    map.put(c,num);
    }
    for(Map.EntrySet entry : map){
    system.out.println(entry.getkey() + “: ” + entry.getValue());
    }
    【解释】无

    【题目编号】 jsd-01-104-5007
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-TreeSet
    【难易程度】 80
    【题目描述】
    阅读代码,并回答问题
    public String listToString( Vector strList) {
    String str = new String();
    SortedSet set = new TreeSet();
    set.addAll(strList);
    for(Iterator iter=set.iterator(); iter.hasNext();
    String currStr = (String) iter.next();
    Str += currStr + “;”;
    }return str;
    }
    问题1:这段代码完成什么功能?如果输入列表{“To” , “SAIC” , “Welcome”},输入结果是什么?
    问题2:这段代码中有什么地方有错误或者可以改善的地方吗?
    【正确答案】
    问题1,数组元素拼接。TreeSet是按字母顺序存储的,结果是:SAIC;To;Welcome;
    问题2,错误:for(Iterator iter=set.iterator(); iter.hasNext();后面缺少“)”
    改善:拼接到最后时,最后一个分号应去掉。
    【解释】无

    【题目编号】 jsd-01-104-5008
    【知 识 点】 JAVA基础-JAVA核心API-集合操作-二分查找
    【难易程度】 90
    【题目描述】
    有一数组 a[1000]存放了 1000 个数,这 1000 个数取自 1-999, 且只有两个相同的数,剩下的 998 个数不同, 写一个搜索算法找出相同的那个数的值(请用 C# or JAVA 编程实现,注意空间效率和时间效率尽可能优化)。
    【正确答案】
    import java.util.Arrays;
    public class SearchDemo {
    /** 被搜索数据的大小 /
    private static final int size = 1000;
    public static void main(String[] args) {
    int[] data = new int[size];
    // 添加测试数据
    for (int k = 0; k < data.length; k++) {
    data[k] = k + 1;
    }
    data[999] = 567;
    result(data);
    }
    /
    *

    • 调用分搜索算法的方法实现查找相同元素
    • @param data
      /
      public static void result(int data[]){ Arrays.sort(data);
      for (int i = 0; i < data.length; i++) {
      int target = data[i];
      data[i] = 0;
      int result = binaryFind(data, target);
      if (result != -1) {
      System.out.println(“相同元素为:”+data[result]); break;
      }
      }
      }
      /
      *
    • 二分搜索算法实现
    • @param data数据集合
    • @param target搜索的数据
    • @return 返回找到的数据的位置,返回-1 表示没有找到。
      */
      public static int binaryFind(int[] data, int target) {
      int start = 0;
      int end = data.length - 1;
      while (start <= end) {
      int middleIndex = (start + end) / 2;
      if (target == data[middleIndex]) {
      return middleIndex;
      }
      if (target >= data[middleIndex]) {
      start = middleIndex + 1;
      } else {
      end = middleIndex - 1;
      }
      }
      return -1;
      }
      }
      【解释】无

    【题目编号】 jsd-01-104-5009
    【知 识 点】 JAVA基础-JAVA核心API-集合操作
    【难易程度】 70
    【题目描述】
    JAVA 实现一种排序。
    【正确答案】
    用插入法进行排序代码如下
    package com.tarena;
    import java.util.*;
    class InsertSort{
    ArrayList list;
    public InsertSort(int num,int mod){
    list = new ArrayList(num);
    Random rand = new Random();
    System.out.println(“The ArrayList Sort Before:”);
    for (int i=0;i list.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
    System.out.println(“list[”+i+"]="+list.get(i));
    }
    }
    public void SortIt(){
    Integer tempInt;
    int MaxSize=1;
    for(int i=1;i tempInt = (Integer)list.remove(i);
    if(tempInt.intValue()>=((Integer)list.get(MaxSize-1)).intValue()){
    list.add(MaxSize,tempInt); MaxSize++;
    System.out.println(list.toString());
    }else{
    for (int j=0;j if (((Integer)list.get(j)).intValue()>=tempInt.intValue()){
    list.add(j,tempInt); MaxSize++;
    System.out.println(list.toString());
    break;
    }
    }
    }
    }
    System.out.println(“The ArrayList Sort After:”);
    for(int i=0;i System.out.println(“list[”+i+"]="+list.get(i));
    }
    }
    public static void main(String[] args){
    InsertSort sort = new InsertSort(10,100);
    sort.SortIt();
    }
    }
    【解释】无
    1.5 JAVA核心API-IO操作
    【题目编号】 jsd-01-105-1001
    【知 识 点】 JAVA基础-JAVA核心API-IO操作
    【难易程度】 40
    【题目描述】
    Java I/O 程序设计中,下列描述正确的是( )
    【选项】
    A. OutputStream 用于写操作
    B. InputStream 用于写操作
    C. I/O 库不支持对文件可读可写 API
    【正确答案】 A
    【解释】
    B.InputStream 用于读操作;C.I/O 支持对文件的读写。

    【题目编号】 jsd-01-105-1002
    【知 识 点】 JAVA基础-JAVA核心API-IO操作
    【难易程度】 60
    【题目描述】
    下面哪个流类属于面向字符的输入流( )
    【选项】
    A. BufferedWriter B. FileInputStream
    C. ObjectInputStream D. InputStreamReader
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-01-105-1003
    【知 识 点】 JAVA基础-JAVA核心API-IO操作
    【难易程度】 70
    【题目描述】
    FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?
    【选项】
    A. OutputStream B. File C. InputStream D. BufferedOutputStream
    【正确答案】 A
    【解释】无

    【题目编号】 jsd-01-105-4001
    【知 识 点】 JAVA基础-JAVA核心API-IO操作-序列化
    【难易程度】 60
    【题目描述】
    什么是 java 序列化,如何实现 java 序列化?
    【正确答案】
    序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题;
    序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需实现的方法,implements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如 FileOutputStream)来 构造一个 ObjectOutputStream( 对象流 ) 对 象 , 接 着 , 使 用 ObjectOutputStream 对象的 writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输 入流。
    【解释】无
    1.6 JAVA核心API-异常处理
    【题目编号】 jsd-01-106-1001
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 50
    【题目描述】
    Given:
    public class ExceptionTest {
    class TestException extends Exception {}
    public void runTest () throws TestException {}
    public void test () /* Point X*/ {
    runTest ();
    }
    }
    At point X on line 4, which code can be added to make the code compile?
    【选项】
    A. throws Exception
    B. Catch (Exception e).
    C. Throws RuntimeException.
    D. Catch (TestException e). E. No code is necessary.
    【正确答案】 A
    【解释】
    方法上使用 throws 抛出异常,Exception 是异常类的超类。

    【题目编号】 jsd-01-106-1002
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 50
    【题目描述】
    下列哪种异常是检查型异常,需要在编写程序时声明()
    【选项】
    A. NullPointerException B. ClassCastException
    C. FileNotFoundException D. IndexOutOfBoundsException
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-01-106-2001
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 60
    【题目描述】
    Which four types of objects can be thrown using the throw statement? (Choose Four)
    【选项】
    A. Error
    B. Event
    C. Object
    D. Exception
    E. Throwable
    F. RuntimeException
    【正确答案】 ADEF
    【解释】
    能够抛出的对象类型要是 Throwable 或是 Throwable 的子类

    【题目编号】 jsd-01-106-2002
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 50
    【题目描述】
    关于异常(Exception),下列描述正确的是
    【选项】
    A. 异常的基类为 Exception,所有异常都必须直接或者间接继承它
    B. 异常可以用 try{ . . .}catch(Exception e){ . . .}来捕获并进行处理
    C. 如果某异常继承 RuntimeException,则该异常可以不被声明
    D. 异常可以随便处理,而不是抛给外层的程序进行处理
    【正确答案】 ABC
    【解释】无

    【题目编号】 jsd-01-106-4001
    【知 识 点】 JAVA基础-JAVA核心API-异常处理-运行时异常、一般异常
    【难易程度】 30
    【题目描述】
    运行时异常与一般异常有何异同?
    【正确答案】
    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇 到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是 并不要求必须声明抛出未被捕获的运行时异常。
    【解释】无

    【题目编号】 jsd-01-106-4002
    【知 识 点】 JAVA基础-JAVA核心API-异常处理-运行时异常
    【难易程度】 50
    【题目描述】
    请写出 5 种常见到的 runtime exception。
    【正确答案】
    NullPointerException:当操作一个空引用时会出现此错误。
    NumberFormatException:数据格式转换出现问题时出现此异常。
    ClassCastException:强制类型转换类型不匹配时出现此异常。
    ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。
    ArithmeticException:数学运行错误时出现此异常
    【解释】无

    【题目编号】 jsd-01-106-4003
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 60
    【题目描述】
    Java 异常处理中,try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code会不会被执行,什么时候被执行,在 return 前还是后?
    【正确答案】
    会执行,在 return 前执行。
    【解释】无

    【题目编号】 jsd-01-106-4004
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 30
    【题目描述】
    error 和 exception 有什么区别?
    【正确答案】
    error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;
    exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
    【解释】无

    【题目编号】 jsd-01-106-5001
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 50
    【题目描述】
    执行以下的example()方法,请根据unface()方法出现异常情况,判断可能的输出结果;
    class TestClass {
    private void unsafe() throws SafeException {//方法体实现}
    public void example() {
    try {
    unsafe();
    System.out.print(“Test1”);
    } catch (SafeException e) {
    System.out.print(“Test 2”);
    } finally {
    System.out.print(“Test 3”);
    }
    System.out.print(“Test 4”);
    }
    }
    @SuppressWarnings(“serial”)
    class SafeException extends Exception {
    public SafeException() {
    super();
    }
    }
    1) 如果执行unsafe()方法没有发生异常,那么输出______________________
    2) 如果执行unsafe()方法发生SafeException异常,那么输出 _____________
    3)如果执行unsafe()方法发生RuntimeException异常,那么输出____________
    【正确答案】
    1) Test1Test 3Test 4
    2) Test 2Test 3Test 4
    3) Test 3
    【解释】无

    【题目编号】 jsd-01-106-5002
    【知 识 点】 JAVA基础-JAVA核心API-异常处理
    【难易程度】 60
    【题目描述】
    getSomething ()执行时发生 illegalArgumentException 会出现什么样的结果?
    void makeConnection(String url) {
    try { getSomething();
    }catch(NullPointerException e) {
    System.out.printin(“Invalid URL”) ; return;
    }catch(Exception e) { System.out.println(“Exception”);}
    }
    【正确答案】
    Exception
    【解释】无
    1.7 JAVA核心API-多线程
    【题目编号】 jsd-01-107-1001
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的状态
    【难易程度】 60
    【题目描述】
    关于 sleep()和 wait(),以下描述错误的一项是( )
    【选项】
    A. sleep 是线程类(Thread)的方法,wait 是 Object 类的方法;
    B. sleep 不释放对象锁,wait 放弃对象锁;
    C. sleep 暂停线程、但监控状态仍然保持,结束后会自动恢复;
    D. wait 后进入等待锁定池,只有针对此对象发出 notify 方法后获得对象锁进入运行状态。
    【正确答案】 D
    【解释】
    sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控 状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
    wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对 象锁进入运行状态。

    【题目编号】 jsd-01-107-1002
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建
    【难易程度】 70
    【题目描述】
    请选出正确的一项。( )

    1. public class ThreadTest {
    2. public static void main (String[] args) {
    3.   new Thread(new Runnable() {
      
    4.  public void run() {
      
    5.  	 System.out.print("bar");
      
    6.  	 }}).start();
      
    7. }
    8. }
      【选项】
      A. Compilation fails.
      B. An exception is thrown at runtime.
      C. The code executes normally, but nothing prints.
      D. The code executes normally and prints “bar”.
      【正确答案】 D
      【解释】无

    【题目编号】 jsd-01-107-1003
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程同步
    【难易程度】 70
    【题目描述】
    以下哪一个是错误的?( )
    【选项】
    A. public synchronized void go() { /* code here / }
    B. private synchronized(this) void go() { /
    code here / }
    C. void go() {
    Object o = new Object();
    synchronized(o) { /
    code here / }
    D. void go() {
    synchronized(Object.class) { /
    code here */ }
    【正确答案】 B
    【解释】无

    【题目编号】 jsd-01-107-1004
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的创建
    【难易程度】 60
    【题目描述】
    请选择正确的一项。( )

    1. public class Threads3 implements Runnable {
    2. public void run() {
    3.  System.out.print("running");  
      
    4. }
    5. public static void main(String[] args) {
    6.  Thread t = new Thread(new Threads3());  
      
    7.  t.run();  
      
    8.  t.run();  
      
    9.  t.start();  
      
    10. }
    11. }
      【选项】
      A. The code executes and prints “runningrunning”.
      B. The code executes and prints “runningrunningrunning”.
      C. The code executes and prints “running”.
      D. An exception is thrown at runtime.
      【正确答案】 B
      【解释】无

    【题目编号】 jsd-01-107-1005
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的状态
    【难易程度】 50
    【题目描述】
    下列有关线程的说法正确的是:( )
    【选项】
    A.启动一个线程是调用start()方法,是线程所代表的虚拟处理机处于可运行状态,这意味着线程此时就会立即运行。
    B.notify()方法可以确切的唤醒某个处于等待状态的线程。
    C.wait()方法可以使一个线程处于等待状态,但不会释放所持有对象的锁。
    D.sleep()方法使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法时,需要捕捉InterruptedException异常
    【正确答案】 D
    【解释】

    【题目编号】 jsd-01-107-1006
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程同步
    【难易程度】 80
    【题目描述】
    代码执行后输出的结果是:( )
    public class Z{
    public static void main(String[] args){
    new Z();
    }

    Z(){
    	Z alias1 = this;
    	Z alias2 = this;
    	synchronized (alias1){
    		try{
    			alias2.wait();
    			System.out.println("DONE WAITING");
    		} catch (InterruptedException e) {
    			System.out.println("IN TEEEUPTED");
    		} catch (Exception e) {
    			System.out.println("OTHER EXCEPTION");
    		} finally {
    			System.out.println("FINALLY");
    		}
    	}
    	System.out.println("ALL DONE");
    }
    

    }
    【选项】
    A. The application compiles but doesn’t print anything.
    B.The application compiles and print “DONE WAITING”
    C.The application compiles and print “FINALLY”
    D.The application compiles and print “ALL DONE”
    【正确答案】 A
    【解释】无

    【题目编号】 jsd-01-107-1007
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的启动
    【难易程度】 50
    【题目描述】
    在主线程中启动新线程后,新线程处于就绪状态,那么新线程对象中的哪个方法被系统执行时,视为已经进入执行新线程的内容:( )
    【选项】
    A. public void start()
    B. public void run()
    C. public static void main(Stirng[] args)
    D. public void runnable()
    【正确答案】 A
    【解释】无

    【题目编号】 jsd-01-107-1008
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的创建
    【难易程度】 60
    【题目描述】
    下列程序的功能是在控制台上,每隔1秒钟显示字符串”Hello”,能够填写在程序中下划线位置,使程序完整,并能够正确运行的语句是( )
    public class Test implements Runnable{
    public static void main(String[] args){
    Test t=new Test();
    Thread tt=new Thread(t);
    tt.start();
    }
    public void run(){
    for(;{
    try{
    __________
    }
    catch(_________ e ){}
    System.out.println(“Hello”);
    }
    }
    }
    【选项】
    A. Thread. sleep (1000) InterruptedException
    B. sleep (1000) InterruptedException
    C. t. sleep (1000) InterruptedException
    D. Thread. sleep (1000) RuntimeException
    【正确答案】 A
    【解释】无

    【题目编号】 jsd-01-107-1009
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程同步
    【难易程度】 60
    【题目描述】
    10.Exhibit:
    1.public class X implements Runnable {
    2. private int x;
    3. private int y;
    4. public static void main(String [] args) {
    5. X that = new X();
    6. (new Thread(that)).start();
    7. (new Thread(that)).start();
    8. }
    9. public synchronized void run( ){
    10. for (; {
    11. x++;
    12. y++;
    13. System.out.println(“x = “ + x + “, y = “ + y);
    14. }
    15. }
    16.}
    What is the result?
    【选项】
    A. An error at line 11 causes compilation to fail.
    B. Errors at lines 7 and 8 cause compilation to fail.
    C. The program prints pairs of values for x and y that might not always be the same on the same line (for example, “x=2, y=1”)
    D. The program prints pairs of values for x and y that are always the same on the same line (for example, “x=1, y=1”. In addition, each value appears twice (for example, “x=1, y=1” followed by “x=1, y=1”)
    E. The program prints pairs of values for x and y that are always the same on the same line (for example, “x=1, y=1”. In addition, each value appears twice (for example, “x=1, y=1” followed by “x=2, y=2”)
    【正确答案】 E
    【解释】
    多线程共享相同的数据,使用 synchronized 实现数据同步。

    【题目编号】 jsd-01-107-1010
    【知 识 点】 JAVA基础-JAVA核心API-多线程-线程的状态
    【难易程度】 60
    【题目描述】
    方法 resume()负责恢复哪些线程的执行( )
    【选项】
    A 通过调用 stop()方法而停止的线程。
    B 通过调用 sleep()方法而停止的线程。
    C 通过调用 wait()方法而停止的线程。
    D 通过调用 suspend()方法而停止的线程。
    【正确答案】 D
    【解释】
    Suspend 可以挂起一个线程,就是把这个线程暂停了,它占着资源,但不运行,用 Resume 是恢复挂起 的线程,让这个线程继续执行下去。

    【题目编号】 jsd-01-107-1011
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建
    【难易程度】 40
    【题目描述】
    以下哪个方法用于定义线程的执行体?()
    【选项】
    A.start() B.init() C.run() D.main() E.synchronized()
    【正确答案】 C
    【解释】
    run 方法是线程的执行体

    【题目编号】 jsd-01-107-1012
    【知 识 点】 JAVA基础-JAVA核心API-进程与线程
    【难易程度】 50
    【题目描述】
    关于线程设计,下列描述正确的是( )
    【选项】
    A. 线程对象必须实现 Runnable 接口
    B. 启动一个线程直接调用线程对象的 run()方法
    C. Java 提供对多线程同步提供语言级的支持
    D. 一个线程可以包含多个进程
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-01-107-2001
    【知 识 点】 JAVA基础-JAVA核心API-线程的方法
    【难易程度】 70
    【题目描述】
    下面能让线程停止执行的有( )
    【选项】
    A. sleep(); B. stop(); C. notify(); D. synchronized();
    E. yield(); F. wait(); G. notifyAll();
    【正确答案】 ABDEF
    【解释】
    sleep:导致此线程暂停执行指定时间;
    stop: 这个方法将终止所有未结束的方法,包括 run 方法;
    synchronized():对象锁;
    yield:当前正在被服务的线程可能觉得 cpu 的服务质量不够好,于是提前退出,这就是 yield;
    wait:当前正在被服务的线程需要睡一会,醒来后继续被服务。

    【题目编号】 jsd-01-107-2002
    【知 识 点】 JAVA基础-JAVA核心API-线程的方法
    【难易程度】 80
    【题目描述】
    Which two CANNOT directly cause a thread to stop executing? ( )
    【选项】
    A. Existing from a synchronized block.
    B. Calling the wait method on an object.
    C. Calling notify method on an object.
    D. Calling read method on an InputStream object.
    E. Calling the SetPriority method on a Thread object.
    【正确答案】 AD
    【解释】
    stop 方法.这个方法将终止所有未结束的方法,包括 run 方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。当线程想终止另一个线程的时候,它无法知道何时调用 stop 是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。被中断的线程会在安全的时候停止。

    【题目编号】 jsd-01-107-2003
    【知 识 点】 JAVA基础-JAVA核心API-线程的状态
    【难易程度】 60
    【题目描述】
    有关线程的哪些叙述是对的( )
    【选项】
    A. 一旦一个线程被创建,它就立即开始运行。
    B. 使用 start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
    C. 当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
    D. 一个线程可能因为不同的原因停止并进入就绪状态。
    【正确答案】 BCD
    【解释】
    在抢占式线程模型中,操作系统可以在任何时候打断线程。通常会在它运行了一段时间(就是所谓的一个时间片)后才打断它。这样的结果自然是没有线程能够不公平地长时间霸占处理器。

    【题目编号】 jsd-01-107-4001
    【知 识 点】 JAVA基础-JAVA核心API-进程与线程
    【难易程度】 40
    【题目描述】
    进程和线程分别该怎么理解?
    【正确答案】
    进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块 PCB 中。以表示该进程拥有这些资源或正在使用它们。另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地 址空间。
    线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表 TCB 组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。 发生进程切换与发生线程切换时相比较,进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;线程切换时,由于同不进程内的线程共享资源和地址空间,将不涉及资源信息的保存和地址变化问题,从而减少了操作系统的开销时间。而且,进程的调度与切换都是由操作系统内核完成, 而线程则既可由操作系统内 核完成,也可由用户程序进行。
    【解释】无

    【题目编号】 jsd-01-107-4002
    【知 识 点】 JAVA基础-JAVA核心API-线程同步
    【难易程度】 50
    【题目描述】
    同步和异步有何异同,在什么情况下分别使用他们?请举例说明
    【正确答案】
    如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象 上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异 步编程,在很多情况下采用异步途径往往更有效率。
    【解释】无

    【题目编号】 jsd-01-107-4003
    【知 识 点】 JAVA基础-JAVA核心API-线程的状态
    【难易程度】 50
    【题目描述】
    sleep()和 wait()有什么区别?
    【正确答案】
    sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
    wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁 定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
    【解释】无

    【题目编号】 jsd-01-107-4004
    【知 识 点】 JAVA基础-JAVA核心API-线程的方法
    【难易程度】 80
    【题目描述】
    说说下面语句是否有错误,或可能出现的缺陷,并指出错误,或缺陷在哪里?
    public class MyFile implements Runnable{
    public void run(){ while (true){
    try{
    FileReader fr=new FileReader(new File(“a.txt”)) ;
    String line=fr.readLine();
    System.out.println(line);
    }catch(IOException err) {
    }
    Sleep(1000); }
    }
    【正确答案】
    1.fr.readLine()没有这个方法
    2.Sleep(1000)需要用 Thread.sleep(1000);
    【解释】无

    【题目编号】 jsd-01-107-4005
    【知 识 点】 JAVA基础-JAVA核心API-线程的启动
    【难易程度】 30
    【题目描述】
    启动一个线程是用 run()还是 start()?
    【正确答案】
    start()
    【解释】无

    【题目编号】 jsd-01-107-5006
    【知 识 点】 JAVA基础-JAVA核心API-线程同步
    【难易程度】 50
    【题目描述】
    简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
    【正确答案】
    主要相同点:Lock 能完成 synchronized 所实现的所有功能
    主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。 synchronized 会自动释放锁, 而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。
    【解释】无

    【题目编号】 jsd-01-107-4007
    【知 识 点】 JAVA基础-JAVA核心API-线程同步
    【难易程度】 50
    【题目描述】
    多线程有几种实现方法,都是什么?同步的方法有几种,都是什么?
    【正确答案】
    多线程有两种实现方法:继承 Thread 类或者实现 Runnable 接口。 实现同步也有两种方法:一种是同步方法,另一种是同步代码块。 同步方法是在方法返回类型前面加上 synchronized 关键字同步代码块是 synchronized (这里写需要同步的对象){…}
    【解释】无

    【题目编号】 jsd-01-107-4008
    【知 识 点】 JAVA基础-JAVA核心API-线程同步-死锁
    【难易程度】 60
    【题目描述】
    死锁的必要条件?怎么克服?
    【正确答案】
    产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
    循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足, 就不会发生死锁。
    死锁的解决方法:
    a 撤消陷于死锁的全部进程;
    b 逐个撤消陷于死锁的进程,直到死锁不存在;
    c 从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
    d 从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态
    【解释】无

    【题目编号】 jsd-01-107-4009
    【知 识 点】 JAVA基础-JAVA核心API-线程同步
    【难易程度】 50
    【题目描述】
    请说出你所知道的线程同步的方法。
    【正确答案】
    wait():使一个线程处于等待状态,并且释放所持有的对象的 lock;
    sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException 异常;
    notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由 JVM 确定唤醒哪个线程,而且不是按优先级;
    notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
    【解释】无

    【题目编号】 jsd-01-107-5001
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建、线程同步
    【难易程度】 100
    【题目描述】
    编程实现:线程 A 向队列 Q 中不停写入数据,线程 B 从队列 Q 中不停读取数据(只要Q中有数据)。
    接口中有两个一个是向队列中写 push 方法 一个是从队列中读。
    public interface StackInterface{
    public void push(int n);
    public int[] pop();
    }
    上边接口的实现类。
    public class SafeStack implements StackInterface {
    private int top = 0;
    private int[] values = new int[10];
    private boolean dataAvailable = false;
    public void push(int n) {
    synchronized (this) {
    while (dataAvailable) { // 1
    try {
    wait();
    } catch (InterruptedException e) {
    // 忽略 //2
    }
    }
    values[top] = n;
    System.out.println(“压入数字” + n + “步骤 1 完成”);
    top++;
    dataAvailable = true; notifyAll();
    System.out.println(“压入数字完成”);
    }
    }
    public int[] pop() {
    synchronized (this) {
    while (!dataAvailable) {
    try {
    wait();
    } catch (InterruptedException e) {
    // 忽略 //4
    }
    }
    System.out.print(“弹出”);
    top–;
    int[] test = { values[top], top };
    dataAvailable = false;
    // 唤醒正在等待压入数据的线程
    notifyAll();
    return test;
    }
    }
    }
    【正确答案】
    读线程
    public class PopThread implements Runnable{
    private StackInterface s;
    public PopThread(StackInterface s){
    this.s = s;
    }
    public void run(){
    while(true){
    System.out.println("->"+ s.pop()[0] + “<-”);
    try {
    Thread.sleep(100);
    }
    catch(InterruptedException e){}
    }
    }
    }
    写线程
    public class PushThread implements Runnable{
    private StackInterface s;
    public PushThread(StackInterface s){
    this.s = s;
    }
    public void run(){
    int i = 0;
    while(true){
    java.util.Random r = new java.util.Random();
    i = r.nextInt(10);
    s.push(i);
    try {
    Thread.sleep(100);
    }catch(InterruptedException e){
    }
    }
    }
    【解释】无

    【题目编号】 jsd-01-107-5002
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建
    【难易程度】 70
    【题目描述】
    设计线程类 WorkerThread,其构造函数接受一个 message 字符串作为参数,把该字符串打印到console 上,同时,在 WorkThread 的 main 函数中启动该线程。
    【正确答案】
    public class WorkerThread extends Thread {
    public WorkerThread(String message) {
    System.out.println(message);
    }
    public static void main(String[] args) {
    new WorkerThread(“hello world!”).start();
    }
    }
    【解释】无

    【题目编号】 jsd-01-107-5003
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建、线程同步
    【难易程度】 70
    【题目描述】
    模拟火车站5个售票窗口同时卖票。
    【正确答案】
    public class RunnableTest {
    public static void main(String[] args) {
    Runnable runnable=new MyThread();
    new Thread(runnable).start();
    new Thread(runnable).start();
    new Thread(runnable).start();
    new Thread(runnable).start();
    new Thread(runnable).start();
    }
    public static class MyThread implements Runnable{
    private int tickets=100;
    public void run() {
    while(tickets>0){
    System.out.println(Thread.currentThread().getName()+“卖出第”+tickets–+“张火车票”);
    }
    }

    }
    

    }
    【解释】无

    【题目编号】 jsd-01-107-5004
    【知 识 点】 JAVA基础-JAVA核心API-线程的创建
    【难易程度】 60
    【题目描述】
    请阅读如下代码,执行该代码后,打印的输出是什么。
    class MainThread extends Thread {
    public MainThread(String name) {
    super(name);
    }
    public void run() {
    new TestThread(“Thread-1”).start();
    new TestThread(“Thread-2”).run();
    }
    }
    class TestThread extends Thread {
    public TestThread(String name) {
    super(name);
    }
    public void run() {
    System.out.println(Thread.currentThread().getName());
    }
    }
    public class Test {
    public static void main(String[] args) {
    new MainThread(“Main”).start();
    }
    }
    【正确答案】
    Main
    Thread-1
    【解释】无
    1.8 JAVA核心API-网络通信
    【题目编号】 jsd-01-108-1001
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-DOS命令
    【难易程度】 50
    【题目描述】
    以下各 DOS 命令能够显示出本机 DNS 服务器地址的是:( )
    【选项】
    A.ping –a B.ipconfig -all C.netstat D.telnet
    【正确答案】 B
    【解释】
    DOS 命令的使用
    ping 命令:利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障;ifconfig all :显示或设置网络设备;netstat: 用于查看当前基于 NETBIOS 的 TCP/IP 连接状态,通过该工具你可以获得远程或本地的组名和机器名;telnet: 使用 telnet 命令访问远程计算机

    【题目编号】 jsd-01-108-1002
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-IP地址
    【难易程度】 50
    【题目描述】
    下列 IP 地址中,属于 C 类 IP 地址的是( )
    【选项】
    A. 201.222.1.65 B. 10.2.1.1 C. 127.63.2.99 D.255.255.255.255
    【正确答案】 A
    【解释】
    A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达 16,777,216 个。
    B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达 65,536 个。
    C类地址(192.0.0.0-223.255.255.255)用于 256 个节点以下的小型网络的单点网络通信。
    D 类地址(224.0.0.0-239.255.255.255。)并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。
    E 类(240.0.0.0-255.255.255.254)地址用于试验。

    【题目编号】 jsd-01-108-1003
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-ftp
    【难易程度】 60
    【题目描述】
    在使用匿名登录 ftp 时,用户名为( )?
    【选项】
    A. login users B. anonymous C. root D. guest
    【正确答案】 B
    【解释】无

    【题目编号】 jsd-01-108-1004
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 50
    【题目描述】
    管理计算机通信的规则称为( )
    【选项】
    A.协议 B.介质 C.服务 D.网络操作系统
    【正确答案】 A
    【解释】

    【题目编号】 jsd-01-108-1005
    【知 识 点】 JAVA基础-JAVA核心API-TCP通信
    【难易程度】 30
    【题目描述】
    TCP 通信建立在连接的基础上,TCP 连接的建立要使用几次握手的过程。
    【选项】
    A.2 B.3 C.4 D.5
    【正确答案】 B
    【解释】

    【题目编号】 jsd-01-108-1006
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 70
    【题目描述】
    路由器工作在 ISO/OSI 参考模型的 ( )
    【选项】
    A. 数据链路层 B.网络层 C. 传输层
    【正确答案】 B
    【解释】
    网络层属于 OSI 中的较高层次了,从它的名字可以看出,它解决的是网络与网络之间,即网际的通信 问题,而不是同一网段内部的事。网络层的主要功能即是提供路由,即选择到达目标主机的最佳路径, 并沿该路径传送数据包。除此之外,网络层还要能够消除网络拥挤,具有流量控制和拥挤控制的能力。 网络边界中的路由器就工作在这个层次上,现在较高档的交换机也可直接工作在这个层次上,因此它们也提供了路由功能,俗称“第三层交换机”.

    【题目编号】 jsd-01-108-1007
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 60
    【题目描述】
    OSI 体系结构定义了一个几层模型( )。
    【选项】
    A. 6 B. 7 C. 8
    【正确答案】 B
    【解释】
    OSI-RM ISO/OSI Reference Model
    该模型是国际标准化组织(ISO)为网络通信制定的协议,根据网络通信的功能要求,它把通信 过程分为七层,分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每层都规 定了完成的功能及相应的协议。

    【题目编号】 jsd-01-108-1008
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 50
    【题目描述】
    以下哪个命令用于测试网络连通( )。
    【选项】
    A. telnet B. netstat C. ping D. ftp
    【正确答案】 C
    【解释】

    【题目编号】 jsd-01-108-1009
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 70
    【题目描述】
    在一个办公室内,将 6 台计算机用交换机连接成网络,该网络的屋里拓扑结构为()
    【选项】
    A. 星型 B. 总线型 C. 树型 D. 环型
    【正确答案】 C
    【解释】
    选项 A:星型拓扑结构 是一种以中央节点为中心,把若干外围节点连接起来的辐射式互联结构。这种结构适用于局域网,特别是近年来连接的局域网大都采用这种连接方式。这种连接方式以双绞线或同 轴电缆作连接线路。 优点:结构简单、容易实现、便于管理,通常以集线器(Hub)作为中央节点,便于维护和管理。缺点:中心结点是全网络的可靠瓶颈,中心结点出现故障会导致网络的瘫痪。
    选项 B:总线拓扑结构 是将网络中的所有设备通过相应的硬件接口直接连接到公共总线上,结点之间按广播方式通信,一个结点发出的信息,总线上的其它结点均可“收听”到。 优点:结构简单、布线容易、可靠性较高,易于扩充,节点的故障不会殃及系统,是局域网常采用的拓扑结构。缺点:所有的数据都需经过总线传送,总线成为整个网络的瓶颈;出现故障诊断较为困难。另外,由于信道共享,连接的节点不宜过多,总线自身的故障可以导致系统的崩溃。最著名的总线拓扑结构是以太网(Ethernet)。
    选项 C :树型拓扑结构 是一种层次结构,结点按层次连结,信息交换主要在上下结点之间进行,相邻结点或同层结点之间一般不进行数据交换。优点:连结简单,维护方便,适用于汇集信息的应用要求。缺点:资源共享能力较低,可靠性不高,任何一个工作站或链路的故障都会影响整个网络的运行。
    选项 D: 环形拓扑结构 各结点通过通信线路组成闭合回路,环中数据只能单向传输,信息在每台设备上的延时时间是固定的。特别适合实时控制的局域网系统。 优点:结构简单,适合使用光纤,传输距离远,传输延迟确定。 缺点:环网中的每个结点均成为网络可靠性的瓶颈,任意结点出现故障都会造成网络瘫痪,另外故障 诊断也较困难。最著名的环形拓扑结构网络是令牌环网(Token Ring)

    【题目编号】 jsd-01-108-1010
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 40
    【题目描述】
    下列既可用作输入设备又可用作输出设备的是( )。
    【选项】
    A. 鼠标器 B. 磁盘 C. 键盘 D. 显示器
    【正确答案】 B
    【解释】

    【题目编号】 jsd-01-108-1011
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 40
    【题目描述】
    计算机的电源切断之后,存储内容全部消失的存储器是( )。
    【选项】
    A.软磁盘 B.只读存储器 C.硬盘 D.随机存储器
    【正确答案】 D
    【解释】

    【题目编号】 jsd-01-108-1012
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 50
    【题目描述】
    中央处理单元(CPU)的两个主要组成部分是运算器和( )。
    【选项】
    A.寄存器 B.主存储器 C.控制器 D.辅助存储器
    【正确答案】 C
    【解释】
    控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的 “决策机构”,即完成协调和指挥整个计算机系统的操作。
    运算器:arithmetic unit,计算机中执行各种算术和逻辑运算操作的部件。运算器由:算术逻辑单 元(ALU)、累加器、状态寄存器、通用寄存器组等组成。主要功能:执行所有的算术运算;执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。

    【题目编号】 jsd-01-108-1013
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 20
    【题目描述】
    网上“黑客”是指什么样的用户( )。
    【选项】
    A.匿名上网; B.总在晚上上网; C.在网上私闯他人计算机系统; D.不花钱上网;
    【正确答案】 C
    【解释】

    【题目编号】 jsd-01-108-1014
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 30
    【题目描述】
    防火墙系统的主要作用是( )。
    【选项】
    A. 防止系统崩溃 B.防病毒 C.保护内部网络安全 D.预防火灾
    【正确答案】 C
    【解释】

    【题目编号】 jsd-01-108-1015
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 40
    【题目描述】
    下列说法中哪项是错误的是( )。
    【选项】
    A. 不同 CPU 的计算机有不同的机器语言和汇编语言;
    B. 回收站是硬盘中的一块区域,而剪贴板是内存中的一块区域;
    C. 在 Dos 中可以用的文件名在 windows 98 中一定可用;
    D. 计算机病毒不可能会驻留在 BIOS 中。
    【正确答案】 D
    【解释】
    BIOS 是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。 其实,它是一组固化到计算机内主板上一个 ROM 芯片上的程序,它保存着计算机最重要的基本输入输 出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

    【题目编号】 jsd-01-108-1016
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 40
    【题目描述】
    用于电子邮件的协议是( )。
    【选项】
    A.IP B.TCP C. SNMP D.SMTP
    【正确答案】 D
    【解释】

    【题目编号】 jsd-01-108-1017
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 60
    【题目描述】
    序列图描述对象是如何交互的并且将重点放在消息序列上( )。
    【选项】
    A. 正确 B. 不正确
    【正确答案】 B
    【解释】
    序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。

    【题目编号】 jsd-01-108-2001
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-通信原理
    【难易程度】 60
    【题目描述】
    Java 网络程序设计中,下列正确的描述是( )。
    【选项】
    A. Java 网络编程 API 建立在 Socket 基础之上
    B. Java 网络接口只支持 TCP 以及其上层协议
    C. Java 网络接口只支持 UDP 以及其上层协议
    D. Java 网络接口支持 IP 以上的所有高层协议
    【正确答案】 AD
    【解释】无

    【题目编号】 jsd-01-108-3001
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-TCP通信-soket通信
    【难易程度】 60
    【题目描述】
    以下代码实现了一个简单的Socket通信服务,请仔细阅读代码,并将关于代码功能的描述补充完整,并回答后后面的几个问题。
    package MyCoses;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;

    1. public class ServerThread extends Thread {
    2.  private Socket socket;
      
    3.  public ServerThread(Socket socketIn) {
      
    4.  	this.socket = socketIn;
      
    5.  }
      
    6.  public void run() {
      
    7.  	try {
      
    8. 		BufferedReader in = newBufferedReader(
      
    9. 		     new          (socket.getInputStream()));
      
    10. 		PrintWriter out = newPrintWriter(
      
    11. 			socket.getOutputStream());
      
    12. 		while (true) {
      
    13. 			String str = in.readLine();
      
    14. 			System.out.println(str);
      
    15. 			out.println(str);
      
    16. 			out.flush();
      
    17. 			if (str.equals("exit")) {
      
    18. 				break;
      
    19. 			}
      
    20. 		}
      
    21. 	} catch (IOException e) {
      
    22. 		System.out.println(e.getMessage());
      
    23. 	}
      
    24. }
      
    25. public static void main(String[] args) throws IOException {
    26. 	ServerSocket server = new ServerSocket(8009);
      
    27. 	while (true) {
      
    28. 		try {
      
    29. 			Socket socket = server.accept();
      
    30. 			ServerThread th = new ServerThread(socket);
      
    31. 			th.start();
      
    32. 			Thread.sleep(1000);
      
    33. 		} catch (Exception e) {
      
    34. 			e.printStackTrace();
      
    35. 		}
      
    36. 	}
      
    37. }
      
    38. }
      1)第11行空白部分,使用的Reader类是____________________
      2)第_____行代码,启动服务端来等 待接受客户端节请求
      3)第_____行代码,服务端对客户端的请求进行响应
      4)当客户端输入内容为______时,当前与客户连接的服务端处理线程断开
      【正确答案】
      1) InputStreamReader
      2) 33
      3) 34
      4)exit
      【解释】无

    【题目编号】 jsd-01-108-4001
    【知 识 点】 JAVA基础-JAVA核心API –网络通信-UDP通信、TCP通信
    【难易程度】 40
    【题目描述】
    UDP 和 TCP 连接有和异同?
    【正确答案】
    TCP 协议是面向连接的,每个数据包的传输过程是:先建立链路、数据传输、然后清除链路。 数据包不包含目的地址。受端和发端不但顺序一致,而且内容相同。它的可靠性高;UDP 协议是面向 无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。它的效率比较高。
    【解释】无

    【题目编号】 jsd-01-108-5001
    【知 识 点】 JAVA基础-JAVA核心API-网络通信-TCP通信-socket通信
    【难易程度】 60
    【题目描述】
    写出一段 socket 通讯(客户端)的代码,功能描述如下:
    a)客户端发起 socket 通讯,报文结构为报文号(3 位)+用户名(5 位)+密码(8 位)+ 结束符(固 定为 END)。此处报文号为 100
    b)服务端收到后返回应答报文,报文结构为报文号(3 位)+验证结果(2 位)+结束符(固定为 END)。 此处报文号为 101
    c)Socket 服务器 ip 为 192.168.0.2,端口号为 9999
    【正确答案】
    客户端代码:
    Socket sk = new Socket(“192.168.0.2”,9999);
    OutputStream os = sk.getOutputStream();
    PrintWriter pw = new PrintWriter(os,true);
    pw.write(“100stone888888END”);
    pw.close(); sk.close();
    服务器端代码:
    ServerSocket vk = new ServerSocket(9999);
    Socket sk = vk.accept();
    OutputStream os = sk.getOutputStream();
    PrintWriter pw = new PrintWriter(os,true); pw.write(“101oldEND”);
    pw.close();
    sk.close();
    【解释】无
    1.9 JAVA核心API-XML
    【题目编号】 jsd-01-109-1001
    【知 识 点】 JAVA基础-JAVA核心API-XML-XML定义
    【难易程度】 20
    【题目描述】
    一个 XML 必须有 DTD 或 Schemas( )。
    【选项】
    A. 正确
    B. 不正确
    【正确答案】 B
    【解释】
    DTD 和 Schemas 都可以定义 XML 文档中出现的元素,这些元素出现的次序,它们如何相互 嵌套以及 XML文档结构的其它详细信息。但不是必须的

    【题目编号】 jsd-01-109-1002
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML定义
    【难易程度】 20
    【题目描述】
    XML 是一种元语言, 可以用它来描述其他语言( )。
    【选项】
    A.正确 B.错误
    【正确答案】 B
    【解释】
    XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml 是 Internet 环境中跨平台的,依赖于内容 的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使 用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数 据要占用更多的空间,但 XML 极其简单易于掌握和使用。

    【题目编号】 jsd-01-109-1003
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML注释
    【难易程度】 10
    【题目描述】
    在 XML 中用于注释的符号是。
    【选项】
    A. B. C.<% %> D.
    【正确答案】 A
    【解释】

    【题目编号】 jsd-01-109-1004
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML定义
    【难易程度】 10
    【题目描述】
    下列没有直接采用 XML 技术的是( )
    【选项】
    A. UDDI B. SOAP C. AJAX D.DCOM
    【正确答案】 D
    【解释】
    DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口, 客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM 基于组件对象模型(COM),COM 提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95 或者其后的版本上)。

    【题目编号】 jsd-01-109-1005
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML解析
    【难易程度】 10
    【题目描述】
    下列可以用来解析 XML 的是( )
    【选项】
    A.CSS B.DTD C.SAX D.XSL
    【正确答案】 C
    【解释】
    java 解析 xml 文件四种方式:SAX DOM JDOM DOM4J

    【题目编号】 jsd-01-109-1006
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML定义
    【难易程度】 10
    【题目描述】
    下面关于 XML 叙述不正确的是( )
    【选项】
    A.XML 标记必须关闭
    B.XML 是大小写敏感的
    C.XML 文件只能跟 DTD 文件一块使用
    D.XML 和 XSL 结合可以在浏览器上显示
    【正确答案】 C
    【解释】

    【题目编号】 jsd-01-109-1007
    【知 识 点】 JAVA基础-JAVA核心API –XML-DTD
    【难易程度】 20
    【题目描述】
    DTD 与 XML Schema 都是 XML 文档。
    【选项】
    A.正确 B.不正确
    【正确答案】 B
    【解释】
    DTD 不是 XML 文件, schema 是 XML 文档

    【题目编号】 jsd-01-109-1008
    【知 识 点】 JAVA基础-JAVA核心API –XML-DTD
    【难易程度】 20
    【题目描述】

    关于上述DTD 定义的描述正确的是。

    【选项】
    A.Customer 元素能包含子元素,并且能为空
    B.Customer 元素能包含文本,并且能为空
    C.Customer 元素不能包含文本,也不能包含子元素
    D.Customer 元素的所有实例的“称呼”属性必须有值,不能为空
    【正确答案】 C
    【解释】
    EMPTY 表示元素不能包含文本,也不能包含子元素;#IMPLIED 属性可以没有值;
    #REQUIRED 属性必须有值

    【题目编号】 jsd-03-301-2001
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML定义
    【难易程度】 30
    【题目描述】
    以下声明正确的是( )。
    【选项】
    A.
    B.
    C.
    D.<%xml-stylesheet type=“txt/css” href=“abc.css”%>
    【正确答案】 BC
    【解释】
    单引号,双引号都可以使用在属性上。

    【题目编号】 jsd-01-109-4001
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML解析
    【难易程度】 60
    【题目描述】
    JAVA 中常用的 XML 解析技术有哪些?区别是什么?
    【正确答案】
    DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的数结构所造成的,这结构占用的 内存较多,而且 DOM 必须在解析文件之前把整个文档载入内存,适合对 XML 的随机访问
    SAX:不同于 DOM,SAX 是事件驱动型的 XML 解析方法。它顺序读取 XML 文件,不需要一次全部装载整 个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过 在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问。

    【题目编号】 jsd-01-109-4002
    【知 识 点】 JAVA基础-JAVA核心API –XML-XML定义
    【难易程度】 60
    【题目描述】
    XML 文档定义有几种形式?有何本质区别?
    【正确答案】
    两种形式 dtd 和 schema,区别:
    a.Schema 是标准的 XML 文件,而 DTD 则使用自己的特殊语法,因此,只需要知道 XML 的语法规则就可以编写 Schema 了,不需要再学习其它语法规则。
    b.Schema 利用命名空间将文件中特殊的节点与 Schema 说明相联系,一个 XML 文件可以有多个对应的Schema;而一个 XML 文件只能有一个相对应的 DTD 文件。
    c.Schema 的内容模型是开放的,可以随意扩充,而 DTD 则无法解读扩充的内容.DTD 只能把文件类型定义为一个字符串,而 XML Schema却允许把文件类型定义为整数,浮点数,字符串,布尔值或其他各各数据类型,而无须重新定义。

    【题目编号】 jsd-01-109-4003
    【知 识 点】 JAVA基础-JAVA核心API –XML
    【难易程度】 30
    【题目描述】
    谈谈对 XML 的理解?说明 Web 应用中 Web.xml 文件的作用?
    【正确答案】
    XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml 是 Internet 环境中跨平台的,依赖于内容 的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使 用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数 据要占用更多的空间,但 XML 极其简单易于掌握和使用。
    web.xml 的作用是配置欢迎页,servlet,filter,listener 等的。
    1.10 Swing编程
    【题目编号】 jsd-01-110-1001
    【知 识 点】 JAVA基础-Swing编程-布局管理
    【难易程度】 50
    【题目描述】
    下面哪个可以改变容器的布局?( )
    【选项】
    A. setLayout(aLayoutManager);
    B. addLayout(aLayoutManager);
    C. layout(aLayoutManager);
    D. setLayoutManager(aLayoutManager);
    【正确答案】 A
    【解释】
    Java 设置布局管理器 setLayout()
    1.11 设计模式
    【题目编号】 jsd-01-111-1001
    【知 识 点】 JAVA基础-设计模式-单例
    【难易程度】 30
    【题目描述】
    下面的代码实现了设计模式中的什么模式
    public class A {
    private A instance;
    private A() {
    }
    public static A getInstance {
    if ( A == null ) instance = new A(); return instance;
    }
    }
    【选项】
    A. Factory
    B. Abstract Factory
    C. Singleton
    D. Builder
    【正确答案】 C
    【解释】
    Singleton 单例模式:该设计模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

    【题目编号】 jsd-01-111-5001
    【知 识 点】 JAVA基础-设计模式-单例
    【难易程度】 60
    【题目描述】
    请写出一个单例模式
    【正确答案】
    单例模式(Singleton pattern):确保一个类只有一个实例,并提供一个全局的访问点。
    public class EagerSingleton{
    private static final EagerSingleton m_instance = new EagerSingleton();
    /**

    • 私有的默认构造子
      /
      private EagerSingleton() { }
      /
      *
    • 静态工厂方法
      */
      public static EagerSingleton getInstance()
      {
      return m_instance;
      }
      }
      【解释】无

    【题目编号】 jsd-01-111-5002
    【知 识 点】 JAVA基础-设计模式-单例
    【难易程度】 80
    【题目描述】
    编写一个单例的java 类,该单例使用延迟装载的方式。(类名:SingletonClass)
    【正确答案】
    【解释】无

    public class SingletonClass {
    //静态私有的成员变量
    private static SingletonClass instance = null;
    // 私有的构造方法
    private SingletonClass () {}
    // 如果不加synchronized会导致对线程的访问不安全
    // 双重锁定检查
    public static SingletonClass getInstance() {
    if (instance == null) {
    synchronized (SingletonClass.class) {
    if (null == instance) {
    instance = new SingletonClass ();
    }
    }
    }
    return instance;
    }

    第二部分:数据库、JDBC、PLSQL
    2.1 数据库
    【题目编号】 jsd-02-201-1001
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    Oracle 数据库表空间与用户的关系是 ( )?
    【选项】
    A.一对一 B.一对多 C.多对一 D.多对多
    【正确答案】 D
    【解释】
    一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。

    【题目编号】 jsd-02-201-1002
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    Oracle 数据库表空间与数据文件的关系描述正确的是( )
    【选项】
    A.一个表空间只能对应一个数据文件
    B.一个表空间可以对应多个数据文件
    C.一个数据文件可以对应多个表空间
    D.表空间与数据文件没任何对应关系
    【正确答案】 B
    【解释】
    表空间和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件, 而一个数据文件只能隶属一个表空间

    【题目编号】 jsd-02-201-1003
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    你判断下面语句,有什么作用?(单选)
    GRANT update ON inventory TO joe WITH GRANT OPTION;
    【选项】
    A. 一个系统权限被授予用户 JOE
    B. 一个对象权限被授予用户 JOE
    C. 用户 JOE 被授予在这个对象上的所有权限
    D. 一个系统权限和一个对象权限被授予用户 JOE
    【正确答案】 B
    【解释】
    with admin option 只能在赋予 system privilege 的时使用
    with grant option 只能在赋予 object privilege 的时使用

    【题目编号】 jsd-02-201-1004
    【知 识 点】 数据库-Oracle SQL-视图
    【难易程度】 70
    【题目描述】
    表 CLASSES 和 表 SCHEDULE 结构如下: CLASSES:
    ID NUMBER(9)
    CLASS_NAME VARCHAR2(20) TEACHER_ID NUMBER(9) SCHEDULE:
    CLASS_TIME DATE CLASS_ID NUMBER(9)
    你建一个视图显示每一课的课名、课时,并按教师 ID 排序,判断下面语句将返回何种结果? (选择 1项)
    CREATE VIEW class_schedule AS
    SELECT C.class_name, s.class_time FROM classes c, schedule s WHERE C.id = s.class_id;
    【选项】
    A .语句创建视图 CLASS_SCHEDULE 且可产生预期结果.
    B .语句创建视图 CLASS_SCHEDULE 但不能产生预期结果.
    C .语法错误,因为视图不可基于连接查询.
    D .语法错,因为语句未包含 ORDER BY 子句.
    【正确答案】 B
    【解释】
    上述试图显示每一课的课名、课时,但是没有按教师 ID 排序

    【题目编号】 jsd-02-201-1005
    【知 识 点】 数据库-Oracle SQL-Oracle字符串操作
    【难易程度】 60
    【题目描述】
    Oracle 数据库中,在 SQL 语句中连接字符串的方法是哪个?
    【选项】
    A. cat B. concat C. join D. +
    【正确答案】 B
    【解释】无

    【题目编号】 jsd-02-201-1006
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 60
    【题目描述】
    表 TEACHER 包含如下字段:
    列名 可为空否? 数据类型
    TEACHER_ID NOT NULL NUMBER(9)
    NAME VARCHAR2(25)
    SALARY NUMBER(7,2)
    SUBJECT_ID NOT NULL NUMBER(3)
    SUBJECT_DESCRIPTION VARCHAR2(2)
    你需要将理科教师的工资上浮 8%,理科教师的 SUBJECT_ID 是 011,你需用哪一句实现?
    【选项】
    A.UPDATE teacher SET salary = salary * 1.08 WHERE subject_description LIKE ‘SCIENCE’
    B.UPDATE teacher SET salary = salary * .08 WHERE subject_description LIKE ‘SCIENCE’ AND
    subject_id = 011
    C.UPDATE teacher SET salary = salary * 1.08 WHERE subject_id = 011;
    D.UPDATE teacher SET salary = salary + (salary * .08) WHERE subject_description LIKE ‘SCIENCE’ OR subject_id = 011
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-02-201-1007
    【知 识 点】 数据库-Oracle SQL-游标
    【难易程度】 70
    【题目描述】
    定义游标如下:
    DECLARE
    CURSOR query_cursor(v_salary) IS SELECT last_name, salary, dept_no FROM employee
    WHERE salary>v_salary;
    这条语句为什么会错误?(选择 1 项)
    【选项】
    A. 在游标定义中不允许出现 where 子句
    B. select 语句中缺少 into 子句
    C. 参数未指定为变量数据类型
    D. 定义 cursor 的语法写错了
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-02-201-1008
    【知 识 点】 数据库-Oracle SQL-SQL基础-排序
    【难易程度】 60
    【题目描述】
    哪句可以实现显示id和description ,条件满足订单时间在January 1, 1997 以前的,且单价小于 1.00 或者大于 5.00 的, 结果用订单时间降序排列。
    【选项】
    A.SELECT id_number, description FROM inventory WHERE price IN
    (1.00, 5.00) OR order_date < ‘01-JAN-97’ ORDER BY order_date DESC;
    B.SELECT id_number, description FROM inventory
    WHERE price BETWEEN 1.00 AND 5.00 OR order_date < ‘01-JAN-1997’
    ORDER BY order_date;
    C.SELECT id_number, description FROM inventory
    WHERE price < 1.00 OR price > 5.00 AND order_date < ‘01 -Jan-97’
    ORDER BY order_date ASC;
    D.SELECT id_number, description FROM inventory
    WHERE (price <1.00 OR price > 5.00) AND order_date < ‘01-JAN-1997’
    ORDER BY order_date DESC;
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-02-201-1009
    【知 识 点】 数据库-Oracle SQL-关联查询
    【难易程度】 60
    【题目描述】
    判断下面句子,将返回什么值?
    SELECT id_number, description, price FROM inventory
    WHERE manufacturer_id IN (SELECT manufacturer_id FROM inventory
    WHERE price > 8.00 OR quantity > 1000);
    【选项】
    A 返回单价大于 8.00 且数量大于 1000 的存货的货号、种类、单价信息
    B 返回单价大于 8.00 或者数量大于 1000 的存货的货号、种类、单价信息.
    C 返回单价大于8.00或者数量大于 1000且有制造商号的存货的货号、种类、单价信息.
    D 返回单价大于8.00或者数量大于1000的制造商的所有存货的货号、种类、单价信息.
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-02-201-1010
    【知 识 点】 数据库-Oracle SQL-SQL基础
    【难易程度】 60
    【题目描述】
    表(TEACHER)包含以下列:
    ID NUMBER(7) PK SALARY NUMBER(7,2) SUBJECT_ID NUMBER(7) 判断以下两个 SQL 语句:
    (1)SELECT ROUND(SUM(salary),-2) FROM teacher ;
    (2)SELECT subject_id, ROUND(SUM(salary),-2) FROM teacher GROUP BY subject_id ;
    有什么不同结果?
    【选项】
    A. 语句 1 将返回每个老师一个结果
    B. 语句 2 将返回多个结果
    C. 结果相同,显示不同
    D. 将有一个句子产生错误
    【正确答案】 B
    【解释】
    语句 1 会返回一个结果,就是所有老师的工资和,使用了四舍五入函数,语句 2 是按照 subject_id 进行分组,那么分几组就会有几个结果

    【题目编号】 jsd-02-201-1011
    【知 识 点】 数据库-Oracle SQL-游标
    【难易程度】 50
    【题目描述】
    游标的哪一种属性指示 fetch 语句是否从活动集中返回行,如未能返回行,则此属性的值为true?
    【选项】
    A. %FOUND B. %NOTFOUND
    C. %ROWCOUNT D. %ISOPEN
    【正确答案】 B
    【解释】
    %FOUND 布尔型属性,当最近一次读记录时成功返回,则值为 TRUE;
    %NOTFOUND 布尔型属性,与%FOUND 相反;
    %ISOPEN 布尔型属性,当游标已打开时返回 TRUE;
    %ROWCOUNT 数字型属性,返回已从游标中读取的记录数

    【题目编号】 jsd-02-201-1012
    【知 识 点】 数据库-Oracle SQL-SQL基础-分组
    【难易程度】 50
    【题目描述】
    哪一子句可实现 SELECT 语句查询员工平均工资小于 5000 的部门信息 ?
    【选项】
    A.GROUP BY dept_id WHERE AVG(sal) < 5000
    B. GROUP BY AVG(sal) HAVING AVG(sal) < 5000
    C.GROUP BY dept_id HAVING AVG(sal) < 5000
    D.GROUP BY AVG(sal) < 5000
    【正确答案】 C
    【解释】
    使用 HAVING 过滤分组。

    【题目编号】 jsd-02-201-1013
    【知 识 点】 数据库-Oracle SQL-Oracle空值操作
    【难易程度】 60
    【题目描述】
    你试图用下面句子查询数据:SELECT 100/NVL(quantity, 0) FROM inventory; 为何 QUANTITY 为 null 空值时,将导致出错?
    【选项】
    A. 表达式企图被空值除. B.换函数参数数据类型不一致.
    C.空值不能被转成实际值 D. 表达式企图被零除.
    【正确答案】 D
    【解释】
    nvl(表达式1,表达式2)这个函数的作用是如果表达式1的值为null,那么取表达式2的值。

    【题目编号】 jsd-02-201-1014
    【知 识 点】 数据库-Oracle SQL-高级查询-集合操作
    【难易程度】 60
    【题目描述】
    下列哪个集合操作符返回两个查询所选择的所有的行。
    【选项】
    A. Union B. Union all C.Union only D.connect by
    【正确答案】 B
    【解释】
    Union 集合操作符返回两个查询所选择的去除重复行。

    【题目编号】 jsd-02-201-1015
    【知 识 点】 数据库-Oracle SQL-游标
    【难易程度】 80
    【题目描述】
    在 Oracle 中,当需要使用显式游标更新或删除游标中的行时,UPDATE 或 DELETE 语句必须使用( )子句。
    【选项】
    A.WHERE CURRENT OF B.WHERE CURSOR OF
    C.FOR UPDATE D.FOR CURSOR OF
    【正确答案】 C
    【解释】
    为了对正在处理(查询)的行不被另外的用户改动,ORACLE 提供一个 FOR UPDATE 子句来对所选择的 行进行锁住。该需求迫使 ORACLE 锁定游标结果集合的行,可以防止其他事务处理更新或删除相同的行,直到您的事务处理提交或回退为止。
    如果使用 FOR UPDATE 声明游标,则可在 DELETE 和 UPDATE 语句中使用 WHERE CURRENT OF cursor_name子句,修改或删除游标结果集合当前行对应的数据库表中的数据行。

    【题目编号】 jsd-02-201-1016
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 70
    【题目描述】
    在 Oracle 中,使用下列的语句:CREATE PUBLIC SYNONYM parts FOR Scott.inventory;
    完成的任务是()。
    【选项】
    A.将 Scott.inventory 对象的访问权限赋予所有用户
    B.指定了新的对象权限
    C.指定了新的系统权限
    D.给 Scott.inventory 对象创建一个公用同义词 parts
    【正确答案】 D
    【解释】
    使用同义词访问相同的对象,方便访问其它用户的对象,短对象名字的长度。

    【题目编号】 jsd-02-201-1017
    【知 识 点】 数据库-Oracle SQL-高级查询-子查询
    【难易程度】 60
    【题目描述】
    有如下 SQL 片段
    a.select * from asdfh a where a.kehhao in (select kehhao from retail_vip )
    b.select * from asdfh a where exists (select r. kehhao from retail_vip r where r.kehhao
    = a.kehhao) 则以下哪些描述是正确的:
    【选项】
    A.a,b 含义相同
    B.a 的效率高于 b
    C.b 的效率高于 a
    D.a,b 效率高低依赖于表 asdfh 和 kehhao 的结构
    E.a,b 效率高低需考虑表 asdfh 和 kehhao 的数据量
    【正确答案】 E
    【解释】
    in 可以分为三类:
    形如 select * from t1 where f1 in ( a ,b ),应该和以下两种比较效率
    select * from t1 where f1= a or f1= b
    或者 select * from t1 where f1 = a union all select * from t1 f1= b
    形如 select * from t1 where f1 in (select f1 from t2 where t2.fx= x);其中子查询的 where 里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成 exist 语 句,也就是效率和 exist 一样。
    形如 select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),其中子查询的 where 里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情 况和数据量多少,一般认为效率不如 exists.除了第一类 in 语句都是可以转化成 exists 语句的,一般编程习惯应该是用 exists 而不 in。

    【题目编号】 jsd-02-201-1018
    【知 识 点】 数据库-Oracle SQL-SQL基础-分组
    【难易程度】 90
    【题目描述】
    有如下表结构 客户号(kehhao),日期(riqi),账户余额(zhhuye)
    说明表 a 中记录客户不同日期账户余额,但仅在相邻两天任一客户(kehhao)账户余额(zhhuye)发 生变化时,才在表 a 中添加新记录。日期(riqi),其中包含多条日期:如 20050101,20050110 等 则如下 SQL 片段含义为:
    Select a.kehhao,c.riqi,a.zhhuye
    (Select b.riqi as riqi , max(a.riqi) as riqix from b,a where a.riqi <= b.riqi) c
    Left join a
    On a.riqi = c. riqix
    【选项】
    A.选择表 a 中各个客户在给定日期(给定日期由表 b 存储)的余额信息
    B.选择表 a 中各个客户在除给定日期(给定日期由表 b 存储)的余额信息
    C.选择表 a 中各个客户最接近给定日期(给定日期由表 b 存储)的余额信息
    D.以上都不对
    【正确答案】 D
    【解释】
    所有包含于SELECT列表中,而未包含于组函数中的列都必须包含于GROUP BY子句中。

    【题目编号】 jsd-02-201-1019
    【知 识 点】 数据库-Oracle SQL-DML/DDL
    【难易程度】 50
    【题目描述】
    有如下 SQL 片段
    Delete from asdfh a where a.kaihrq > ‘20091214’ and a.jiluzt <> ‘1’其含义为:
    【选项】
    A.从表 asdfh 中删除 kaihrq 不小于 2009 年 12 月 14 日,且 jiluzt 不为 1 的记录
    B.从表 asdfh 中删除 kaihrq 和 jiluzt 列
    C.对表 asdfh 中删除 kaihrq 不小于 2009 年 12 月 14 日,且 jiluzt 不为 1 的记录打删除标记
    D.以上都不正确
    【正确答案】 C
    【解释】
    提交或回滚前的数据状态改变前的数据状态是可以恢复的
    执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正 其他会话不能看到当前用户所做的改变,直到当前会话结束事务。 DML 语句所涉及到的行被锁定, 其他会话不能操作。

    【题目编号】 jsd-02-201-1020
    【知 识 点】 数据库-Oracle SQL-关联查询
    【难易程度】 60
    【题目描述】
    只有满足联接条件的记录才包含在查询结果中,这种联接为?
    【选项】
    A.左联接 B.右联接 C.内部联接 D.完全联接
    【正确答案】 C
    【解释】
    内连接 :内连接查询操作列出与连接条件匹配的数据行 外连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左连接)、右表(右 连接)或两个边接表(全外连接)中的所有数据行。

    【题目编号】 jsd-02-201-1021
    【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数
    【难易程度】 60
    【题目描述】
    分机构统计 VIP 客户的数量下面 SQL 语句正确的是? 其中
    表 a:jigou(机构),kehhao(客户号),jiaoyrq(交易日期),jioyje(交易金额)
    表 b: kehhao(客户号),表 b 为 VIP 客户号表
    Select
    from a inner join b on a.kehhao = b.kehhao
    【选项】
    A.Count(a.kehhao), group by jigou
    B.Count(a.kehhao), order by jigou
    C.Sum(a.kehhao), order by jigou
    D.Count(a.kehhao), having jigou
    E.以上都不正确
    【正确答案】 A
    【解释】
    因为是统计各个分机构的 VIP 客户数量 所以要按照机构进行分组,而有多少条记录那么就有多少个 VIP 客户所以使用 count。

    【题目编号】 jsd-02-201-1022
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 40
    【题目描述】
    SQL 语言中修改表结构的命令是?
    【选项】
    A.MODIFY TABLE B.MODIFY STRUCTURE
    C.ALTER TABLE D.ALTER STRUCTURE
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-02-201-1023
    【知 识 点】 数据库-Oracle SQL-Oracle字符串操作
    【难易程度】 40
    【题目描述】
    Select 语句中用来连接字符串的符号是( ).
    【选项】
    A. “+” B. “&” C.“||” D.“|”
    【正确答案】 C
    【解释】无

    【题目编号】 jsd-02-201-1024
    【知 识 点】 数据库-Oracle SQL-SQL基础-查询条件-LIKE
    【难易程度】 30
    【题目描述】
    从 “员工” 表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条 select 语句正确:( )
    【选项】
    A. Select * from 员工 where 姓名 =’玛丽
    B 、Select * from 员工 where 姓名 =’%玛丽_’
    C. Select * from 员工 where 姓名 like ‘玛丽%’
    D. Select * from 员工 where 姓名 like ‘%玛丽%’
    【正确答案】 D
    【解释】
    LIKE 运算选择类似的值,选择条件可以包含字符或数字,“%” 代表一个或多个字符,“
    ” 代表一 个字符。

    【题目编号】 jsd-02-201-1025
    【知 识 点】 数据库-Oracle SQL-数据库优化
    【难易程度】 50
    【题目描述】
    在关系数据库的询问优化中,事先处理文件,如排序、建立索引的目的是()
    【选项】
    A 优化表达式 B 减少中间结果
    C 扩大缓冲数据 D 减少扫描文件的时间
    【正确答案】 D
    【解释】无

    【题目编号】 jsd-02-201-2001
    【知 识 点】 数据库-Oracle SQL-DML/DDL
    【难易程度】 20
    【题目描述】
    Delete 和 truncate 都可以用来删除表内容,一下描述正确的是?
    【选项】
    A.Truncate 不需要 rollbacksegment
    B.Delete 需要 rollbacksegment
    C.Truncate 在 提交 commit 之前仍可回滚
    D.Truncate 还可以删除表结构
    【正确答案】 AB
    【解释】
    TRUNCATE TABLE 语句:删除表中所有的数据并且释放表的存储空间,可以使用 DELETE 语句删除数据, DELETE 产生 rollback ,如果删除大数据量的表速度会很慢,同时会占用很多的 rollback segments .truncate 是 DDL 操作,不产生 rollback,速度快一些。

    【题目编号】 jsd-02-201-2002
    【知 识 点】 数据库-Oracle SQL-数据库优化
    【难易程度】 80
    【题目描述】
    请给出两个影响系统效率的函数(选两个答案)。
    【选项】
    A.UPPER
    B.SUM
    C.MAX
    D.LOWER
    【正确答案】 BC
    【解释】无

    【题目编号】 jsd-02-201-2003
    【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数
    【难易程度】 40
    【题目描述】
    QUESTION. description of the students table:
    sid_id nu
    mber
    start_date date
    end_date date
    which two function are valid on the start_date column?
    【选项】
    A. sum(start_date)
    B. avg(start_date)
    C. count(start_date)
    D. avg(start_date,end_date) E. min(start_date)
    【正确答案】 CE
    【解释】
    sum 和 avg 要求数字数据类型。

    【题目编号】 jsd-02-201-2004
    【知 识 点】 数据库-Oracle SQL-DML/DDL
    【难易程度】 50
    【题目描述】
    which are DML statements(choose all that apply) _.
    【选项】
    A.commit
    B.merge
    C.update
    D.delete
    E.creat
    F.drop
    【正确答案】 BCD
    【解释】
    DML:Data manipulation language 数据操众语言 insert delete update merge
    DDL:data definition language 数据定义语言 create alter drop
    DCL:data control language 数据控制语言 grant revoke

    【题目编号】 jsd-02-201-4001
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 40
    【题目描述】
    目前几种主流数据库软件的应用特点、适用范围各是什么?
    【正确答案】
    国际国内的主导关系型数据库管理系统有 SQL Server、ORACLE、SYBASE、INFORMIX 和 DB2。我们主要从性能,可伸缩性和并行性,安全性,操作简便,使用风险,开放性,易维护性和价格,数据库二次开发方面比较了 SQL Server,Oracle、SYBASE、DB2、INFORMIX 数据库:
    1)性能
    SQL Server:老版本多用户时性能不佳,新版本的性能有了明显的改善,各项处理能力都有了明显的提高。保持了多项 TPC-C(TPC-C 值被广泛用于衡量 C/S 环境下,由服务器和客户端构筑的整体系统的性能,它由事物处理性能委员会(TPC,Transaction Processing Corp)制定,TPC 为非赢利性国际组织。)纪录。
    Oracle:性能最高,保持Windows NT 下的 TPC-C 的世界记录。
    SYBASE:性能较高,支持 Sun、IBM、HP、Compaq 和 Veritas 的集群设备的特性,实现高可用性。适应于安全性要求极高的系统。
    DB2 :适用于数据仓库和在线事物处理,性能较高。客户端支持及应用模式。
    INFORMIX:性能较高,支持集群,实现高可用性。适应于安全性要求极高的系统,尤其是银行,证券系统的应用。
    2)可伸缩性,并行性
    SQL Server:以前版本 SQL Server 并行实施和共存模型并不成熟。很难处理大量的用户数和数据 卷。伸缩性有限。新版本性能有了较大的改善,在 Microsoft Advanced Servers 上有突出的表现,超过了他的主要竞争对手。
    Oracle:平行错误!超链接引用无效。过使一组结点共享同一簇中的工作来扩展 Window NT 的能力,提供高可用性和高伸缩性的簇的解决方案。如果 Windows NT 不能满足需要, 用户可以把数据库移到 UNIX 中,具有很好的伸缩性。
    SYBASE:新版本具有较好的并行性,速度快,对巨量数据无明显影响,但是技术实现复杂,需要程序支持,伸缩性有限。
    DB2 :DB2 具有很好的并行性。DB2 把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点,伸缩性有限。
    INFORMIX:采用单进程多线程的技术,具有较好的并行性。但是仅运行于 UNIX 平台,伸缩性有限。
    3)安全性
    SQL server:Microsoft Advanced Server 获得最高安全认证,服务器平台的稳定性是数据库的稳定性的基础,新版本的 SQL 的安全性有了极大的提高。
    Oracle:获得最高认证级别的 ISO 标准认证。
    SYBASE:通过 Sun 公司 J2EE 认证测试,获得最高认证级别的 ISO 标准认证。
    DB2 :获得最高认证级别的 ISO 标准认证。
    INFORMIX:获得最高认证级别的 ISO 标准认证。
    4)操作简便
    SQL Server:操作简单,采用图形界面。管理也很方便,而且编程接口特别友好(它的 SQL-DMO 让编 程变得非常方便!) ,从易维护性和价格上 SQL Server 明显占有优势。
    Oracle:较复杂, 同时提供 GUI 和命令行,在 Windows NT 和 Unix, Linux 下操作相同。对数据库管理人员要求较高。
    SYBASE:复杂,使用命令行操作,对数据库管理人员要求较高。
    DB2 :操作简单,同时提供 GUI 和命令行,在 Windows NT 和 Unix 下操作相同。
    INFORMIX:使用和管理复杂,命令行操作。对数据库管理人员要求较高。
    5)使用风险
    SQL Server:完全重写的代码,性能和兼容性有了较大的提高,与 Oracle,DB2 的性能差距明显减小。该产品的出台经历了长期的测试,为产品的安全和稳定进行了全面的检测,安全稳定性有了明显的提高。
    Oracle:长时间的开发经验,完全向下兼容,可以安全的进行数据库的升级,在企业,政府中得到广泛的应用。并且如果在 WINNT 上无法满足数据的要求,可以安全的把数据转移到 UNIX 上来。
    SYBASE:开发时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小。在安全要求极高的银行,证券行业中得到了广泛的应用。
    DB2 :在巨型企业得到广泛的应用,向下兼容性好。风险小。
    INFORMIX:开发时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小。在安全要求极高的银行,证券行业中得到了广泛的应用。
    6)开放性
    SQL Server:只能在Windows 上运行,C/S 结构,只支持 Windows 客户,可以用 ADO,DAO,OLEDB,ODBC 连接。Windows9X 系列产品是偏重于桌面应用,NT server 适合各种大中小型企业。 操作系统的稳定对数据库是十分重要的。Windows 平台的可靠性,安全性经过了最高级别的 C2 认证的。在处理大数据量的关键业务时提供了较好的性能。
    Oracle :能在所有主流平台上运行(包括 Windows)。完全支持所有的工业标准。采用完全开放策略。多层次网络计算,支持多种工业标准,可以用 ODBC,JDBC,OCI 等网络客户连接。可以使客户选择最适合的解决方案。对开发商全力支持。
    SYBASE :能在所有主流平台上运行,在银行业中得到了广泛的应用。
    DB2 :有较好的开放性,最适于海量数据。跨平台,多层结构,支持 ODBC,JDBC 等客户。在大型的国际企业中得到最为广泛的应用,在全球的 500 家最大的企业中,大部分采用 DB2 数据库服务器。 IINFORMIX:仅运行在 UNIX 平台,包括 SUNOS、HPUX、 ALFAOSF/1。在银行中得到广泛的应用。
    7)易维护性和价格
    SQL Server:从易维护性和价格上 SQL Server 明显占有优势。基于 Microsoft 的一贯风格,SQL Server 的图形管理界面带来了明显的易用性, 微软的数据库管理员培训进行的比较充分,可以轻松的找到很好的数据库管理员,数据库管理费用比较低,SQL Server 的价格也是很低的,但是在 License 的购买上会抬高价格。总体来说 SQL Server 的价格在商用数据库中是最低的。
    Oracle:从易维护性和价格上来说 Oracle 的价格是比较高的,管理比较复杂,由于 Oracle 的应用很广泛,经验丰富的 Oracle 数据库管理员可以比较容易的找到,从而实现 Oracle 的良好管理。因此 Oracle 的性能价格比在商用数据库中是最好的。
    SYBASE :SYBASE 的价格是比较低的,但是 SYBASE 的在企业和政府中的应用较少,很难找到经验丰富的管理员,运行管理费用较高。
    DB2 :价格高,管理员少,在中国的应用较少,运行管理费用都很高,适用于大型企业的数据仓库应用。
    INFORMIX:价格在这些系统中居于中间,与 SYBASE 一样,在企业和政府中应用较少,仅在银行中得到了广泛的应用。经验丰富的管理人员较少,运行管理费用高。
    8)数据库二次开发
    SQL Server:数据库的二次开发工具很多,包括 Visual C++, Visual Basic 等开发工具,可以实现很好的 Windows 应用,开发容易。
    Oracle:数据库的二次开发工具很多,涵盖了数据库开发的各个阶段,开发容易。
    SYBASE:开发工具较少,经验丰富的人员很少。
    DB2 :在国外巨型企业得到广泛的应用,中国的经验丰富的人员很少。
    INFORMIX:在银行业中得到广泛的应用,但是在中国的经验丰富的人员很少。
    【解释】无

    【题目编号】 jsd-02-201-4002
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    试述数据库完整保护的主要任务和措施。
    【正确答案】
    数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定义完整性规则。前两个是有DBMS 自动处理。
    实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。
    参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基 表中必存在元组。 用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要求。
    一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及 完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。
    【解释】无

    【题目编号】 jsd-02-201-4003
    【知 识 点】 数据库-Oracle-DML/DDL
    【难易程度】 50
    【题目描述】
    请说明 Oracle中 delete from tablea & truncate table tablea 的区别
    【正确答案】
    两者都可以用来删除表中所有的记录。区别在于:truncate 是 DDL 操作,它移动 HWK,使 HWK值为 0,不需要 rollback segment .而 Delete 是 DML 操作需要 rollback segment 且花费较长时间。
    【解释】无

    【题目编号】 jsd-02-201-4004
    【知 识 点】 数据库–Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    Oracle 安装完成后,如何用命令行启动和关闭数据库?
    【正确答案】
    打开:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT| NOMOUNT]
    STARTUP OPEN:STARTUP 缺省的参数就是 OPEN,打开数据库,允许数据库的访问。当前实例的控制文件中所描述的所有文件都已经打开。
    STARTUP MOUNT:MOUNT 数据库,仅仅给 DBA 进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件被打开,数据文件未打开。
    STARTUP NOMOUNT:仅仅通过初始化文件,分配出 SGA 区,启动数据库后台进程,没有打开控制文件和数据文件。不能访问任何数据库。
    STARTUP PFILE= filename:以 filename 为初始化文件启动数据库,不是采用缺省初始化文件。
    STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。 STARTUP RESTRICT:只允许具有 RESTRICTED SESSION 权限的用户访问数据库。 STARTUP RECOVER:数据库启动,并开始介质恢复关闭
    SHUTDOWN 有四个参数:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不带任何参数时表示是 NORMAL。 命令 SHUTDOWN NORMAL:不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
    SHUTDOWN TRANSACTIONAL:不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
    SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数 据文件。没有结束的事务是自动 rollback 的。启动时不需要实例恢复。
    SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。
    另外,对于 NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache 的内容写入了数据文件,没有提交的事务被回滚,所有的资源被释放,数据库被“干净”的关闭。
    对于 ABORT,DB Buffer Cache 的内容没有写入数据文件,没有提交的事务也没有回滚。数据库没有dismount 和关闭,数据文件也没有关闭。当数据库启动时,需要通过 redo log 恢复数据,通过回滚段对事务回滚,对资源进行释放。
    【解释】无

    【题目编号】 jsd-02-201-4005
    【知 识 点】 数据库-Oracle-事务
    【难易程度】 60
    【题目描述】
    事务是什么?有哪些属性,并简要说明这些属性的含义。
    【正确答案】
    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务 通常由高级数据库操纵语言或编程语言(如 SQL,C++或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
    事务应该具有 4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为 ACID 特性。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
    【解释】无

    【题目编号】 jsd-02-201-4006
    【知 识 点】 数据库-Oracle SQL-数据库优化
    【难易程度】 70
    【题目描述】
    在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL 语句、java 等层面的解决方案。
    【正确答案】
    1)数据库设计方面:
    a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
    select id from t where num is null
    可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询:
    select id from t where num=0
    c. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段 sex,male、female 几乎各一半,那么即使在 sex 上 建了索引也对查询效率起不了作用。
    d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert及update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
    e. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。
    f. 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
    g. 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
    h. 尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。
    i. 避免频繁创建和删除临时表,以减少系统表资源的消耗。
    j. 临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。
    k. 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table, 避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先 create table,然后 insert。
    l. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先 truncate table , 然后 drop table,这样可以避免系统表的较长时间锁定。
    2)SQL 语句方面:
    a. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
    b. 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
    select id from t where num=10 or num=20
    可以这样查询:
    select id from t where num=10
    union all
    select id from t where num=20
    c. in 和 not in 也要慎用,否则会导致全表扫描,如:
    select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3
    d. 下面的查询也将导致全表扫描:
    select id from t where name like ‘%abc%’
    e. 如果在 where 子句中使用参数,也会导致全表扫描。因为 SQL 只有在运行时才会解析局部变量, 但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描: select id from t where num=@num
    可以改为强制查询使用索引:
    select id from t with(index(索引名)) where num=@num
    f. 应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
    select id from t where num/2=100
    应改为:
    select id from t where num=1002
    g. 应尽量避免在 where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。 如:
    select id from t where substring(name,1,3)=‘abc’–name 以 abc 开头的 id
    select id from t where datediff(day,createdate,‘2005-11-30’)=0–‘2005-11-30’生成的 id
    应改为:
    select id from t where name like ‘abc%’
    select id from t where createdate>=‘2005-11-30’ and createdate<‘2005-12-1’
    h. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法 正确使用索引。
    i. 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t(…)
    j. 很多时候用 exists 代替 in 是一个好的选择:
    select num from a where num in(select num from b)
    用下面的语句替换:
    select num from a where exists(select 1 from b where num=a.num)
    k. 任何地方都不要使用 select * from t ,用具体的字段列表代替“
    ”,不要返回用不到的任何字段。
    l. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过 1 万行,那么就应该考虑改写。
    m. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
    n. 尽量避免大事务操作,提高系统并发能力。
    3)java 方面:
    a.尽可能的少造对象。 b.合理摆正系统设计的位置。大量数据操作,和少量数据操作一定是分开的。大量的数据操作,肯定不是 ORM 框架搞定的。c.使用 jDBC 链接数据库操作数据 d.控制好内存,让数据流起来,而不是全部读到内存再处理,而是边读取边处理;e.合理利用内存,有的数据要缓存
    【解释】无

    【题目编号】 jsd-02-201-4007
    【知 识 点】 数据库-Oracle SQL-事务
    【难易程度】 70
    【题目描述】
    请解释分布式事务管理?
    【正确答案】
    分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息, IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。
    【解释】无

    【题目编号】 jsd-02-201-4008
    【知 识 点】 数据库-Oracle SQL-索引
    【难易程度】 70
    【题目描述】
    你认为在表上建立索引可以提高数据库系统的效率吗,为什么?
    【正确答案】
    不一定
    建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的 where 子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
    【解释】无

    【题目编号】 jsd-02-201-4009
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    什么是数据库的参照完整性?
    【正确答案】
    数据库的参照完整性是指表与表之间的一种对应关系,通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格进行对照,从而阻止一些不正确的数据的操作。
    【解释】无

    【题目编号】 jsd-02-201-4010
    【知 识 点】 数据库-Oracle SQL-数据库优化
    【难易程度】 70
    【题目描述】
    如何优化数据库,如何提高数据库的性能?
    【正确答案】

    1) 硬件调整性能: 最有可能影响性能的是磁盘和网络吞吐量,解决办法扩大虚拟内存,并保证有足够可以扩充的空间; 把数据库服务器上的不必要服务关闭掉;把数据库服务器和主域服务器分开;把 SQL 数据库服务器的吞吐量调为最大;在具有一个以上处理器的机器上运行 SQL。
    2)调整数据库: 若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操作,按照 where 选择条件建立索引,尽量为整型键建立为有且只有一个簇集索引,数据在物理上按顺序在数据页上,缩短查找范围,为在查询经常使用的全部列建立非簇集索引,能最大地覆盖查询;但是索引不可太多,执行 UPDATE DELETE INSERT 语句需要用于维护这些索引的开销量急剧增加;避免在索引中有太多的索引键;避免使用大型数据类型的列为索引;保证每个索引键值有少数行。
    3)使用存储过程: 应用程序的实现过程中,能够采用存储过程实现的对数据库的操作尽量通过存储过程来实现,因为存储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应用可以简单地执行存储过程,并且只返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。
    4)应用程序结构和算法: 建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。因为人们在使用 SQL 时往往会陷入一个误区,即太关注于所得的结果是否正确,特别是对数据量不是特别大的数据库操作时,是否建立索引和使用索引的好坏对程序的响应速度并不大,因此程序员在书写程序时就忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在数据量特别大时或者大型的或是复杂的数据库环境中(如联机事务处理 OLTP 或决策支持系统 DSS)中表现得尤为明显。在工作实践中发现,不良的 SQL 往往来自于不恰当的索引设计、不充份的连接条件和不可优化的 where 子句。在对它们进行适当的优化后,其运行速度有了明显地提高!
    【解释】无

    【题目编号】 jsd-02-201-4011
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    例举在诊断 Oracle 性能问题时,常用的工具、方法
    【正确答案】
    1)简单一点的可以用 toad 及 dbartisan 这样的工具。
    2)纯做性能监测,比较出色的有 spolight 和 emc 的 I3,这两个软件都比较贵。
    3)一些网管系统这方面也不错,如 hp 的 openview。不过定制起来不太容易,且很贵。
    4)不用花钱又好用的就是 Oracle 的 statpack 了。
    5)再有就是自己写脚本了,大多数有经验的 DBA 都喜欢这样的方式。优点是实用灵活。缺点是如果想出一个性能变化的曲线图等图表,且做的美观就需要些 delphi,c++builder 或是 pb 的开发功底了。
    【解释】无

    【题目编号】 jsd-02-201-4012
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 60
    【题目描述】
    Oracle 启动中,startup nomount、 startup mount 有什么差别?
    【正确答案】
    startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文 件和报警文件。startup mount:装载数据库,打开控制文件。nomount 方式下还没有读取控制文件, 该选项用于在数据库的控制文件全部损坏,需要重新创建数据库控制文件或创建一个新的数据库时使用。mount 选项下并没有打开数据文件,该选项可以用来修改数据库的运行模式或进行数据库恢复。
    【解释】无

    【题目编号】 jsd-02-201-4013
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    Oracle 启动中,spfile.orA. init.orA. spfile.ora这三个文件正确的先后顺序是什么?
    【正确答案】
    启动数据库,使用 startup 命令,Oralce 将会按照以下顺序在缺省目录中搜索参数文件:spfile.ora , spfile.ora ,init.ora a
    【解释】无

    【题目编号】 jsd-02-201-4014
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    说明 Oracle 数据库逻辑备份和物理备份的方式。
    【正确答案】
    Oracle 备份包括逻辑备份和物理备份。
    1).逻辑备份 数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件。 a.输出(Export)输出可以是整个数据库、指定用户或指定表。 b.输入(Import)输入将输出建立的二进制转储文件读入并执行其命令。
    2).物理备份 物理备份包含拷贝构成数据库的文件而不管其逻辑内容。
    Oracle 支持两种不同类型的物理文件备份:脱机备份(offline backup)和联机备份(online backup)。 a.脱机备份: 脱机备份用在当数据库已正常关闭,数据库处于"offline"时,要备份下列文件: 所有数据文件、所有控制文件、所有联机日志 init.ora(可选的)
    b 联机备份:联机备份可用来备份任何运作在 ARCHIVELOG 方式下的数据库。在这种方式下,联机日志被归档,在数据库内部建立一个所有作业的完整记录。联机备份过程具备强有力的功能。第一,提供 了完全的时间点(point-in-time)恢复。第二,在文件系统备份时允许数据库保持打开状态。
    【解释】无

    【题目编号】 jsd-02-201-4015
    【知 识 点】 数据库-Oracle SQL-索引
    【难易程度】 60
    【题目描述】
    谈一下聚簇索引和非聚簇索引的区别以及各自的优缺点。
    【正确答案】
    聚集索引,表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大非聚集索引,不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很小
    【解释】无

    【题目编号】 jsd-02-201-4016
    【知 识 点】 数据库-Oracle SQL-事务
    【难易程度】
    【题目描述】
    描述重做与回滚的认识。
    【正确答案】
    重做日志生成日志文件,是为将来恢复数据库使用的. 回滚段保存未提交数据,是为支持事务而起作用的。
    【解释】无

    【题目编号】 jsd-02-201-4017
    【知 识 点】 数据库-Oracle SQL-触发器
    【难易程度】 70
    【题目描述】
    对触发器的认识。
    【正确答案】
    触发器是表上的程序,主要提供数据添加、修改与删除后的程序处理方法,可以用来检查数据及进行数据更新,也可以分担一些前端应用程序撰写的逻辑规则。用场景: 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。 触发器的主要应用场合概括起来讲有以下几种:
    1).当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当为应用系统添加一个系统用户时,需要同时向权限表中添加该用户的缺省权限,此时就编写系统用户表的触发器在添加记录动作时触发。
    2).当表上某列数据的值与其他表中的数据有联系时。比如,当某客户进行欠款消费,可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。
    3).当需要对某张表进行跟踪时。比如,当人事表中有人离职时,第一时间通知或更改相关表的值。
    【解释】无

    【题目编号】 jsd-02-201-4018
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 60
    【题目描述】
    将 ORACLE 数据库更改为归档模式;写出步骤。
    【正确答案】
    具体步骤如下:
    1),以 exp 方式在线备份数据库到指定位置;
    2),观察当前数据库是以服务器参数文件(spfile)方式启动还是以参数文件(pfile)方式启动:
    SQL> show parameter spfile;
    NAME TYPE VALUE


    spfile string /ho me/db/oracle/10g/dbs/spfile
    XXXX.ora
    value 后有内容,说明数据库以服务器参数文件方式启动,这里的 spfile 文件对应的裸设备为/dev/vgdata/rspfile(通过查看/home/db/oracle/10g/dbs/initSID.ora 文件内容获得);
    3),关闭所有实例(shutdown immediate);
    4),任意选取一个实例,创建参数文件到指定路径:
    SQL>create pfile=’/home/db/oracle/pfile.ora’ from spfile;
    5),修改 pfile.ora 文件,添加参数 cluster_database=false;
    6),以修改之后的参数文件按 nomount 方式启动数据库:
    SQL>startup nomount pfile=’/home/db/oracle/pfile.ora’;
    7),使数据库以 exclusive 方式启动:SQL>alter database mount exclusive;
    8),改变归档模式:SQL>alter database archivelog;
    9),将 pfile 参数中的 cluster_database 重新更改为“true”;
    10),更新服务器参数文件:SQL>create spfile from pfile=’/home/db/oracle/pfile.ora’;
    11),关闭数据库实例;SQL>shutdowm immediate;
    12),分别在两个节点上启动数据库:SQL>startup;
    13),在两个节点上分别检查归档模式是否更改成功:
    SQL>archive log list;
    Database log mode Archive Mode
    Automatic archival Enabled
    Archive destination /home/db/oracle/10g/dbs/arch
    Oldest online log sequence 489
    Next log sequence to archive 491
    Current log sequence 491
    完成。
    【解释】无

    【题目编号】 jsd-02-201-4019
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 40
    【题目描述】
    把表 A 从表空间 TSP1 更改成表空间 TSP2 的方法
    【正确答案】
    alter table A move tablespace TSP2
    【解释】无

    【题目编号】 jsd-02-201-4020
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 50
    【题目描述】
    删除表的列;
    【正确答案】
    alert table 表名 drop 列名
    【解释】无

    【题目编号】 jsd-02-201-4021
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 60
    【题目描述】
    删除表空间的数据文件?
    【正确答案】
    用 SQLPLUS 命令: drop tablespace tablename including contents
    就可以把所有相关的数据删除
    【解释】无

    【题目编号】 jsd-02-201-4022
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 60
    【题目描述】
    如何用 ALTER 命令把表数据加到缓存表里,清除呢?
    【正确答案】
    添加:alert table 表名 cache
    清除:alert table 表名 nocache
    【解释】无

    【题目编号】 jsd-02-201-4023
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】
    【题目描述】
    数据的复制实现办法?
    【正确答案】
    数据复制,就是将数据库中的数据拷贝到另外一个或多个不同的物理站点上,从而保持源数据库与目标数据库中指定数据的一致性。 数据复制的实现方法:在具体的实现之前,首先要做好设计与规划。这就需要细致分析具体的业务情况,设计出一套能够满足业务需要的方案。通常在设计过程中,需要确定出要建立的数据库站点,各站点的类型,需要复制的数据对象,以及同步方式、冲突解决方案等内容。 数据复制的实现主要包括以下几步:(1)创建复制站点。(2)创建组对象。(3)配置冲突解决方案。
    【解释】无

    【题目编号】 jsd-02-201-4024
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 60
    【题目描述】
    建立 ORACLE 数据库后,系统自带的两个用户是什么,相应的密码是什么?他们的身份是什么?
    【正确答案】
    用户 密码 身份
    System manager SYSDBA
    Sys change_on_instal SYSDPER
    【解释】无

    【题目编号】 jsd-02-201-4025
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    在建立 ORACLE 数据库时,选择“事务处理”模板与选用“数据仓库”模板的。区别是什么?
    【正确答案】
    事物处理型:经常反馈给客户信息,处理大容量或超大容量的数据.数据仓库型:主要频繁处理小型数据库,只是进行一些查询等操作.
    【解释】无

    【题目编号】 jsd-02-201-4026
    【知 识 点】 数据库-Oracle SQL-数据库优化
    【难易程度】 40
    【题目描述】
    请说出两种以上扩大数据库的方式
    【正确答案】

    1. 修改现有表空间的大小;
      2)向表空间插入一个新的数据文件.
      【解释】无

    【题目编号】 jsd-02-201-4027
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 60
    【题目描述】
    在 ORACLE 中的物理文件包含哪四种?
    【正确答案】
    1)数据文件 扩展名为*.dbf
    2)控制文件 扩展名为*.rtl
    3)配置文件 扩展名为*.ora
    4)日志文件 扩展名为*.dbf
    【解释】无

    【题目编号】 jsd-02-201-4028
    【知 识 点】 数据库-Oracle SQL-日志
    【难易程度】 50
    【题目描述】
    日志文件(记录文件)有哪几种,分别介绍他们的工作模式。
    【正确答案】
    归档日志:当日志写满,完成一次循环之前建立一个副本。这样数据库就可以在损坏中得到恢复。恢复的过程相当于把建库的所有动作重新做一次。最安全的数据库工作方式,占用空间也最大非归档日志:日志写满后,直接覆盖,它只是部分地记录数据库操作,所以恢复能力有限。
    【解释】无

    【题目编号】 jsd-02-201-4029
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 50
    【题目描述】
    简要写出在 system 方案中建立序列 xl 的步骤。
    【正确答案】
    create squence system.xl start whith 1
    increment by 1
    minvalue 1
    nomaxvalue
    nocycle nocache order;
    【解释】无

    【题目编号】 jsd-02-201-4030
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 40
    【题目描述】
    写出 SQL 语句,向表中插入一条记录,其中 ID 字段的值来自序列 XL。
    【正确答案】
    Insert into system.table1 values (xl.nextval,’tom’,21,’男’,2000);
    【解释】无

    【题目编号】 jsd-02-201-4031
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 70
    【题目描述】
    解释冷备份和热备份的不同点以及各自的优点
    【正确答案】
    热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库 关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用 并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由 于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将 archive log 写入硬盘)
    【解释】无

    【题目编号】 jsd-02-201-4032
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
    【难易程度】 40
    【题目描述】
    如何在不影响子表的前提下,重建一个母表
    【正确答案】
    子表的外键强制失效,重建母表,激活外键
    【解释】无

    【题目编号】 jsd-02-201-4033
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 70
    【题目描述】
    如何建立一个备份控制文件?
    【正确答案】
    Alter database backup control file to trace.
    【解释】无

    【题目编号】 jsd-02-201-4034
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 70
    【题目描述】
    给出数据库正常启动所经历的几种状态 ?
    【正确答案】
    STARTUP NOMOUNT – 数据库实例启动
    STARTUP MOUNT - 数据库装载
    STARTUP OPEN – 数据库打开
    【解释】无

    【题目编号】 jsd-02-201-4035
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 70
    【题目描述】
    如何判断数据库的时区?
    【正确答案】
    SELECT DBTIMEZONE FROM DUAL
    【解释】无

    【题目编号】 jsd-02-201-4036
    【知 识 点】 数据库-Oracle SQL-Oracle数据库操作
    【难易程度】 90
    【题目描述】
    解释 GLOBAL_NAMES 设为 TRUE 的用途
    【正确答案】
    GLOBAL_NAMES 指明连接数据库的方式。如果这个参数设置为 TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库
    【解释】无

    【题目编号】 jsd-02-201-4037
    【知 识 点】 数据库-Oracle SQL-索引
    【难易程度】 40
    【题目描述】
    如何重构索引?
    【正确答案】
    ALTER INDEX REBUILD;
    【解释】无

    【题目编号】 jsd-02-201-4038
    【知 识 点】 数据库-Oracle SQL-数据库理论
    【难易程度】 50
    【题目描述】
    什么是数据库系统?
    【正确答案】
    数据库系统是储存、管理、处理和维护数据的软件系统,它由数据库、数据库管理员和有关软件组成。数据库系统的结构框架由外部层(单个用户的视图)、概念层(全体用户的公共视图)和内部层(存储视图)组成。
    【解释】无

    【题目编号】 jsd-02-201-4039
    【知 识 点】 数据库-Oracle SQL-连接池
    【难易程度】 70
    【题目描述】
    数据连接池的工作机制是什么?
    【正确答案】
    J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
    【解释】无

    【题目编号】 jsd-02-201-5001
    【知 识 点】 数据库-Oracle SQL-SQL基础
    【难易程度】 30
    【题目描述】
    消耗资源的 SQL 的定位方法。
    【正确答案】
    select sql_text from v s q l w h e r e d i s k r e a d s > 1000 o r ( e x e c u t i o n s > 0 a n d b u f f e r g e t s / e x e c u t i o n s > 30000 ) ; S E L E C T ∗ F R O M ( S E L E C T s q l t e x t , b u f f e r g e t s , d i s k r e a d s F R O M v sql where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000); SELECT * FROM ( SELECT sql_text,buffer_gets,disk_reads FROM v sqlwherediskreads>1000or(executions>0andbuffergets/executions>30000);SELECTFROM(SELECTsqltext,buffergets,diskreadsFROMvsql
    ORDER BY buffer_gets,disk_reads DESC) WHERE ROWNUM<=10;
    【解释】无

    【题目编号】 jsd-02-201-5002
    【知 识 点】 数据库-Oracle SQL-视图
    【难易程度】 10
    【题目描述】
    用 SQL 语句创建个一个视图,这个视图用来显示 ID>1000 的记录;
    【正确答案】
    create view st as select * from table1 where id>1000;
    【解释】无

    【题目编号】 jsd-02-201-5003
    【知 识 点】 数据库-Oracle SQL-SQL基础-查询条件-IN/NOT IN
    【难易程度】 40
    【题目描述】
    为管理业务培训信息,建立3个表:
    S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
    C(C#,CN)C#,CN分别代表课程编号,课程名称
    SC(S#,C#,G)S#,C#,G分别代表学号,所选的课程编号,学习成绩
    (1) 使用标准SQL嵌套语句查询选修课程名称为‘税收基础’的学员学号和姓名?
    (2) 使用标准SQL嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位?
    (3) 使用标准SQL嵌套语句查询不选修课程编号为‘C5‘的学员姓名和所属单位?
    (4) 查询选修课程超过5门的学员学号和所属单位?
    【正确答案】

    1. SELECT SN,SD FROM S WHERE [S#] IN(
      SELECT [S#] FROM C,SC WHERE C.[C#]=SC.[C#] AND CN=N’税收基础’)
    2. SELECT S.SN,S.SD FROM S,SC WHERE S.[S#]=SC.[S#] AND SC.[C#]=‘C2’
    3. SELECT SN,SD FROM S WHERE [S#] NOT IN( SELECT [S#] FROM SC WHERE [C#]=‘C5’)
    4. SELECT SN,SD FROM S WHERE [S#] IN(
      SELECT [S#] FROM SC GROUP BY [S#] HAVING COUNT(DISTINCT [C#])>5)
      【解释】无

    【题目编号】 jsd-02-201-5004
    【知 识 点】 数据库-Oracle SQL-高级查询-子查询
    【难易程度】 30
    【题目描述】
    数据库测验:管理业务培训信息,建立3个表:
    学生表S 学号S# 学员姓名SN 所属单位SD 年龄SA
    课程表C 课程编号C# 课程名称CN
    课程表C 课程编号C# 课程名称CN
    学号表SC 学号S# 课程编号C# 学习成绩G
    1) 使用标准SQL嵌套语句查询选修课程名称为‘税收基础’的学员学号和姓名
    2)使用标准SQL嵌套语句查询选修课程编号为“C2”的学员姓名和所属单位
    【正确答案】
    1)Select SN,SD from S where S# in(select S# from C,SC where C.C#=SC.C# and CN=”税收基础”)
    2) Select S.SN,S.SD from S,SC where S.S#=SC.S# AND SC.C#=’C2’
    【解释】无

    【题目编号】 jsd-02-201-5005
    【知 识 点】 数据库-Oracle SQL-高级查询-子查询
    【难易程度】 40
    【题目描述】
    用一条SQL语句查询出每门课都大于80分的学生姓名 。
    准备数据的sql代码:
    create table score(
    id int primary key auto_increment,
    name varchar(20),
    subject varchar(20),
    score int);
    insert into score values
    (null,‘张三’,‘语文’,81),
    (null,‘张三’,‘数学’,75),
    (null,‘李四’,‘语文’,76),
    (null,‘李四’,‘数学’,90),
    (null,‘王五’,‘语文’,81),
    (null,‘王五’,‘数学’,100),
    (null,'王五 ',‘英语’,90);
    name kecheng fenshu
    张三 语文 81
    张三 数学 75
    李四 语文 76
    李四 数学 90
    王五 语文 81
    王五 数学 100
    王五 英语 90
    【正确答案】
    SELECT DISTINCT Name
    FROM score
    WHERE (Name IN
    (SELECT name
    FROM score
    WHERE mark > 80)) ;

    【解释】无

    【题目编号】 jsd-02-201-5006
    【知 识 点】 数据库-Oracle SQL-高级查询-decode函数
    【难易程度】 10
    【题目描述】
    存在一张表A, 其中有一个字段为col,存储的值为”A”,”B”,”C”,”D”…
    要求:查询出A表中的记录,将col为A的显示为 OK,将col为B的显示为NO,
    其余的显示为OTHER.请写出SQL语句。
    【正确答案】
    select decode(“A”,”OK”,
    “B”,”NO”,
    “OTHER”) from A
    【解释】无

    【题目编号】 jsd-02-201-5007
    【知 识 点】 数据库-Oracle SQL-Oracle日期操作
    【难易程度】 10
    【题目描述】
    (1)–今天是当月的第几天
    (2)–今天是周几(周日是数字1表示)
    (3)–今年的第一天是周几
    (4)–今天是当年的第几天
    【正确答案】

    1. SELECT SYSDATE - LAST_DAY(ADD_MONTHS(SYSDATE, -1)) AS NEWDAY FROM DUAL;
    2. SELECT TO_CHAR(SYSDATE, ‘D’) as week_day FROM DUAL;
    3. SELECT TO_CHAR(TO_DATE(‘20140101’, ‘yyyymmdd’), ‘D’) as year_first_day_week_day FROM DUAL;
    4. select to_char(sysdate, ‘DDD’) as day_of_year from dual;
      【解释】无

    【题目编号】 jsd-02-201-5008
    【知 识 点】 数据库-Oracle SQL-SQL基础-分组
    【难易程度】 20
    【题目描述】
    举例说明GROUP BY 和HAVING 子句的意义和使用方法。
    每个部门有多少人就要用到GROUP BY
    显示每个地区的总面积.仅显示那些面积超过1000000的地区。
    【正确答案】
    select DepartmentID as ‘部门名称‘,
    COUNT(*) as ‘个数‘ from BasicDepartment group by DepartmentID
    SELECT region, SUM(area)
    FROM bbc
    GROUP BY region
    HAVING SUM(area)>1000000
    【解释】无

    【题目编号】 jsd-02-201-5009
    【知 识 点】 数据库-Oracle SQL-关联查询-外连接
    【难易程度】 40
    【题目描述】
    编写SQL语句,为管理岗位业务培训信息,建立3个表。
    S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号、学员姓名、所属单位、学员年龄C(C#,CN)C#,CN分别代表课程编号,课程名称。
    SC(S#,C#,G)S#,C#,G 分别代表学号,课程编号、学习成绩
    问题1:使用标准嵌套SQL语句查询选修课程名称为“税收基础“的学员学号和姓名。
    问题2:查询选修课程为“C2″的所有学员的学号、姓名、所属单位、成绩,并按照所属单位升序、成绩降序排列。
    问题3:查询所有学员选修课程的数量,列出学号、姓名、所选课程数,并按照课程数降序排列。
    问题4:查询选修课程数超过5次学员的学号、姓名、所属单位、所选课程数,并按照学号升序排列。
    【正确答案】
    1)
    Select ssc s#, ssc.sn from c left join (
    select s.*,sc.c# From sc Left join s on s.s#=sc.s# ) as ssc
    on ssc.c#=c.c# where c.cn=’税收基础‘
    2)
    select sc.c#,s.sn,s.sd,sc.g
    From sc
    Left join s
    on s.s#=sc.s#
    where c. c#=’ C2′
    order by s.sd asc,sc.g.desc
    3)
    Select sc.s#,s.sn, sc.count
    (
    select count(s#) as count,s#
    from sc
    group by sc.s#
    ) sc
    Left join s
    on s.s#=sc.s#
    order by sc.count desc
    4)
    SELECT
    S#, SN, SD,
    (SELECTCOUNT(DISTINCT C#)FROM SC
    Where S#=s. S#
    ) as count
    FROM S
    WHERE S# IN(
    SELECT [S#] FROM SC
    GROUP BY [S#]
    HAVING COUNT(DISTINCT [C#])>5)
    【解释】无

    【题目编号】 jsd-02-201-5010
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、高级查询-子查询
    【难易程度】 50
    【题目描述】
    有3个表(15分钟):【基础】
    Student 学生表 (学号,姓名,性别,年龄,组织部门)
    Course 课程表 (编号,课程名称)
    Sc 选课表 (学号,课程编号,成绩)
    表结构如下:

    1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟)
    2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟)
    3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)
    【正确答案】
    1)建表语句如下(mysql数据库):
    create table s(id integer primary key, name varchar(20));
    create table c(id integer primary key, name varchar(20));
    create table sc(
    sid integer references s(id),
    cid integer references c(id),
    primary key(sid,cid)
    );
    2)SQL语句如下:
    select stu.id, stu.name from s stu
    where (select count() from sc where sid=stu.id)
    = (select count(
    ) from c);
    3)SQL语句如下:
    select stu.id, stu.name from s stu
    where (select count(*) from sc where sid=stu.id)>=5;
    【解释】无

    【题目编号】 jsd-02-201-5011
    【知 识 点】 数据库-Oracle SQL-高级查询-子查询
    【难易程度】 40
    【题目描述】
    数据库表(Test)结构如下:【基础】
    ID NAME AGE MANAGER(所属主管人ID)
    106 A 30 104
    109 B 19 104
    104 C 20 111
    107 D 35 109
    112 E 25 120
    119 F 45 NULL
    要求:列出所有年龄比所属主管年龄大的人的ID和名字?
    【正确答案】
    SQL语句如下:
    select employee.name from test employee
    where employee.age > (select manager.age from test manager
    where manager.id=employee.manager);

    【解释】无
    【题目编号】 jsd-02-201-5012
    【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、高级查询-子查询
    【难易程度】 60
    【题目描述】
    有三张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联。【基础】
    1)写出建表语句;
    2)写出SQL语句,查询选修了所有选修课程的学生;
    3)写出SQL语句,查询选修了至少5门以上的课程的学生。
    【正确答案】
    1)建表语句如下(mysql数据库):
    create table s(id integer primary key, name varchar(20));
    create table c(id integer primary key, name varchar(20));
    create table sc(
    sid integer references s(id),
    cid integer references c(id),
    primary key(sid,cid)
    );
    2)SQL语句如下:
    select stu.id, stu.name from s stu
    where (select count() from sc where sid=stu.id)
    = (select count(
    ) from c);
    3)SQL语句如下:
    select stu.id, stu.name from s stu
    where (select count(*) from sc where sid=stu.id)>=5;
    【解释】无

    【题目编号】 jsd-02-201-5013
    【知 识 点】 数据库-Oracle SQL-关联查询-自连接
    【难易程度】 50
    【题目描述】
    有如下两张表:
    表city:
    CityNo CityName StateNo
    BJ 北京 (Null)
    SH 上海 (Null)
    GZ 广州 GD
    DL 大连 LN

    表state
    State No State Name
    GD 广东
    LN 辽宁
    SD 山东
    NMG 内蒙古

    预得到如下结果:
    City No City Name State No State Name
    BJ 北京 (Null) (Null
    DL 大连 LN 辽宁
    GZ 广州 GD 广东
    SH 上海 (Null) (Null)
    写相应的SQL语句。
    【正确答案】
    SQL语句为:
    SELECT C.CITYNO, C.CITYNAME, C.STATENO, S.STATENAME
    FROM CITY C, STATE S
    WHERE C.STATENO=S.STATENO()
    ORDER BY(C.CITYNO);
    【解释】无

    【题目编号】 jsd-02-201-5014
    【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数
    【难易程度】 50
    【题目描述】
    根据下面两个表,编写SQL查询语句,列出符合特定条件(非女性,年龄不到50)的age_desc组及其用户数,deposit汇总及平均值,要求查询结果包含如下数据
    ● 年龄组(age_desc)描述
    ● 该组内的用户数
    ● 该组内用户的deposit汇总值
    ● 该组内用户的deposit平均值
    显示结果示例:
    “6—15岁” 20 300 76
    年龄段名称表:d_age
    age_id sub_id min_value max_value age_desc sub1_desc
    1 1 6 10 6-15岁 6-10岁
    1 2 11 15 6-15岁 11-15岁
    2 3 16 20 16-25岁 16-20岁
    2 4 21 25 16-25岁 21-25岁
    ······ ······
    用户资料表:dw_user
    cust_id gender age deposit owe
    1 女 7 100.00 200
    2 男 21 150.25 0
    3 男 19 20 0
    4 男 17 -25.45 245
    ······ ······

    【正确答案】
    select b.age_desc, count(a.cust_id),sum(a.deposit),avg(a.deposit)
    from dw_user a , d_age b
    where a.age between b.min_value and b.max_value
    and a.age < 50
    and a.gender != ‘女’
    group by b.age_desc;
    【解释】无

    【题目编号】 jsd-02-201-5015
    【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数
    【难易程度】 40
    【题目描述】
    数据库中有一张表ismg_icp_flow,结构如下:
    SQL> desc ismg_icp_flow
    Name Null Type
    ————————————————————————————————
    ICPNO NOT NULL VARCHAR2(6)
    SERVICE_ID NOT NULL VARCHAR2(10)
    STAT_MIN NOT NULL DATETIME
    MT_RECV_OK NOT NULL NUMBER(10)
    请写出一条SQL语句同时满足以下3个条件:

    1. 计算MT_RECV_OK的总和(显示为total),并以此对结果集进行升序排序
    2. 以ICPNO和SERVICE_ID两个字段进行分组
    3. 所得出数据的STAT_MIN必须为大于2003年1月1号0时0分并且小于2003 年2月1号0时0分
      期望的输出结果如下:
      ICPNO SERVICE_ID TOTAL
      ———— —————— ————————————
      901001 7700 271965
      901001 7800 3857795
      【正确答案】
      select ICPNO,SERVICE_ID,sum(MT_RECV_OK) TOTAL
      from ismg_icp_flow
      where STAT_MIN between to_date(‘2003-1-1’,‘yyyy-mm-dd’)
      and to_date(‘2003-2-1’,‘yyyy-mm-dd’)
      group by ICPNO,SERVICE_ID
      order by TOTAL;
      【解释】无

    【题目编号】 jsd-02-201-5016
    【知 识 点】 数据库-Oracle SQL-SQL基础-查询条件-LIKE
    【难易程度】 20
    【题目描述】
    假设现在有表system.table1,表中有三个字段:id(数值型)、name(字符型)、age(数值型)写出SQL语句完成如下功能:在表中查出年龄大于20,且名字以“王”开头的记录,并且按照年龄的倒叙排列出来(年龄大的在前面)。
    【正确答案】
    Select * from system.table1 where age>20 and name like ‘王%’ order by age DESC;
    【解释】无

    你可能感兴趣的:(java)