java笔试面试题集锦(14.11.11)

journeyIT

贡献于2017-02-06

字数:223918 关键词: 面试题目 试题

 前言 / 310 当天社会,随着程序设计、软件开发等工作岗位的增加,java程序开发已经占据程序员求职市场的半壁江山,java程序员求职者们迫切需要自己的笔试面试题集。该书的目的就是帮助更多的有面试需求的java程序员顺利的通过笔试、面试。 本书涵盖了java面试中出现的各个知识点,包括java语言基础、数据库、web编程、框架等。其中每个部分都按小知识点进行笔试面试题整理,每道题都取材于各大公司的实际招聘面试题,并在题后紧跟详细的分析步骤和解答。 本书只针对达内java方向的学员使用,特此声明。 感谢以下中心为该书提供资料(排名无先后): 中关村中心、北方基地、福州中心、杭州下沙中心、合肥中心、南昌中心、南京软件谷中心、上海浦东中心、苏州中心、青岛中心、成都天府中心、天津天大中心、武汉光谷中心、郑州文化路中心、重庆中心、成都高升桥中心、安徽基地、沈阳三好中心、无锡中心、上海徐家汇中心、杭州西湖中心、合肥科大中心、济南中心、上海长寿路中心、太原南内环中心、珠海中心、深圳宝安中心 / 330 达内科技教学支持与督导部 目录 前言 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 第一部分:JAVA基础 1.1 JAVA语言基础 【题目编号】 jsd-01-101-1001 【知 识 点】 JAVA基础-JAVA语言基础-运算符-三目运算符 【难易程度】 50 【题目描述】 编译运行以下程序后,关于输出结果的说明正确的是 ( ): / 310 达内科技教学支持与督导部 publicclass Conditional{ publicstaticvoid 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; / 330 达内科技教学支持与督导部 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; } / 330 达内科技教学支持与督导部 } 【题目编号】 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语言基础-普通数组 / 330 达内科技教学支持与督导部 【难易程度】 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: / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 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. } 7. } 程序运行到第 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); } / 330 达内科技教学支持与督导部 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),需要多少字节( ) / 330 达内科技教学支持与督导部 【选项】 A. 24 B. 48 C. 72 D. 144 【正确答案】 C 【解释】 解释:24*24/8=72。解释下意思:24*24的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。 【题目编号】 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 循环中循环体一定会执行一次 / 330 达内科技教学支持与督导部 【题目编号】 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 【解释】 A选项创建的是String对象,变量k应为String类型。 【题目编号】 jsd-01-101-2006 【知 识 点】 JAVA基础-JAVA语言基础-语言特征 【难易程度】 20 【题目描述】 下列描述中,哪些符合 Java 语言的特征 【选项】 A. 支持跨平台(Windows,Linux,Unix等) / 330 达内科技教学支持与督导部 B. GC(自动垃圾回收),提高了代码安全性 C. 支持类 C 的指针运算操作 D. 不支持与其它语言书写的程序进行通讯 【正确答案】 AB 【解释】 java语言支持跨平台,没有指针的概念,拥有GC垃圾自动回收机制。 【题目编号】 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++) / 330 达内科技教学支持与督导部 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 中的数据结构 【正确答案】 线性表,链表,哈希表是常用的数据结构。 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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,按位或的结果是:11011,因此转成10进制分别为:1和27。 / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 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 中不允许对句柄进行加减, 没有取地址操作符之类的东东。 / 330 达内科技教学支持与督导部 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。 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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) { / 330 达内科技教学支持与督导部 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 个整数的最大值和最小值。 【正确答案】 采用了冒泡进行排序 / 330 达内科技教学支持与督导部 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 的元素 / 330 达内科技教学支持与督导部 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 before[j + 1]) { t = before[j]; before[j] = before[j + 1]; before[j + 1] = t; / 330 达内科技教学支持与督导部 } } } 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("非法行数!"); } } } 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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=reduce){ this.balance-=reduce;//余额 return reduce; } else{ throw new Exception("不能透支!"); } } //存期满后的总金额 public double calcTotal(){ / 330 达内科技教学支持与督导部 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]); } } / 330 达内科技教学支持与督导部 } 【解释】无 【题目编号】 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 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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(); B. Cat cat = new Cat(); WhiteCat whiteCat = (WhiteCat) cat; cat.showColor(); cat.showCatColor(); / 330 达内科技教学支持与督导部 C. 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 类型 / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 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 【题目描述】 下列程序运行的结果是 / 330 达内科技教学支持与督导部 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);} / 330 达内科技教学支持与督导部 } 【正确答案】 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. / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 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? / 330 达内科技教学支持与督导部 【选项】 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 【解释】 / 330 达内科技教学支持与督导部 数组和字符串都是引用类型。 【题目编号】 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,如果第一个和第二个 / 330 达内科技教学支持与督导部 …..第 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 【题目描述】 / 330 达内科技教学支持与督导部 String s=new String(“hello”); Stringt =new String(“hello”); char c [ ] ={‘h’,’e’,’l’,’l’,’o’}; 下列哪些表达式返回 true ? 【选项】 A.s.equals(t); B.t.equals(c); 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 / 330 达内科技教学支持与督导部 【知 识 点】 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) { / 330 达内科技教学支持与督导部 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")); } } 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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()%SplitByte==0)?(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,(i*SplitByte))); } } } public static void main(String[] args) { SplitString ss = new SplitString( "test 中 dd 文 dsaf 中男大 3443n 中国 43 中国人 0ewldfls=103", 4); / 330 达内科技教学支持与督导部 ss.SplitIt(); } } 【解释】无 【题目编号】 jsd-01-103-5004 【知 识 点】 JAVA基础-JAVA核心API-字符串操作 【难易程度】 80 【题目描述】 假定屏幕的像素宽度为 screenWidth,写一个函数计算一个字符串需要分成几行显示。 要求: 1)、每行应尽可能多地显示字符,但不能有字符部分或完全显示在屏幕外。超过部分的字符换下一行 显示。 2)、每个字符的像素宽度不一样,每个字符的像素宽度不一样。用 int GetCharWidth(char c)获得每个字符的像素宽度 【正确答案】 /** * 计算一个字符串可以分多少行进行显示 * @param s原始字符串 * @param screenWidth屏幕宽度 * @return 行数 */ publicint 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; // 重新计算长度 } / 330 达内科技教学支持与督导部 } // 最后一行处理 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; / 330 达内科技教学支持与督导部 } 【解释】无 【题目编号】 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; / 330 达内科技教学支持与督导部 } } } } 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++) { / 330 达内科技教学支持与督导部 char c = sourceStr.charAt(i); if (!String.valueOf(firstChar).equals(String.valueOf(c))) { 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 / 330 达内科技教学支持与督导部 【题目描述】 编写一个加密类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 s=new HashSet(); for(Short i=0;i<100;i++) { s.add(i); s.remove(i-1); } System.out.println(s.size()); } } 【选项】 A. 1 / 330 达内科技教学支持与督导部 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()); } } / 330 达内科技教学支持与督导部 【选项】 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 {} / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 【正确答案】 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 / 330 达内科技教学支持与督导部 【知 识 点】 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. / 330 达内科技教学支持与督导部 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 却是原来的一半。 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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 / 330 达内科技教学支持与督导部 ,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) + ":"+ / 330 达内科技教学支持与督导部 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 { / 330 达内科技教学支持与督导部 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(); publicvoid 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='0' && beforechars[i]<='9'){ afterchars[j++]=beforechars[i]; } } Arrays.sort(afterchars); for(int i=(afterchars.length-j);i0){ 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++; / 330 达内科技教学支持与督导部 } 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= 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"+ 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 { / 330 达内科技教学支持与督导部 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(); / 330 达内科技教学支持与督导部 } 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()); } } / 330 达内科技教学支持与督导部 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 【解释】 / 330 达内科技教学支持与督导部 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 【题目描述】 / 330 达内科技教学支持与督导部 路由器工作在 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 【题目描述】 / 330 达内科技教学支持与督导部 在一个办公室内,将 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-网络通信-通信原理 / 330 达内科技教学支持与督导部 【难易程度】 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.预防火灾 / 330 达内科技教学支持与督导部 【正确答案】 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 【解释】 序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。 / 330 达内科技教学支持与督导部 【题目编号】 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. 4. public ServerThread(Socket socketIn) { 5. this.socket = socketIn; 6. } 7. 8. public void run() { 9. try { 10. BufferedReader in = newBufferedReader( 11. new (socket.getInputStream())); / 330 达内科技教学支持与督导部 12. PrintWriter out = newPrintWriter( 13. socket.getOutputStream()); 14. while (true) { 15. String str = in.readLine(); 16. System.out.println(str); 17. out.println(str); 18. out.flush(); 19. if (str.equals("exit")) { 20. break; 21. } 22. } 23. } catch (IOException e) { 24. System.out.println(e.getMessage()); 25. } 26. 27. } 28. 29. public static void main(String[] args) throws IOException { 30. ServerSocket server = new ServerSocket(8009); 31. while (true) { 32. try { 33. Socket socket = server.accept(); 34. ServerThread th = new ServerThread(socket); 35. th.start(); 36. Thread.sleep(1000); 37. } catch (Exception e) { 38. e.printStackTrace(); 39. } 40. } 41. } 42. } 1)第11行空白部分,使用的Reader类是____________________ 2)第_____行代码,启动服务端来等 待接受客户端节请求 3)第_____行代码,服务端对客户端的请求进行响应 4)当客户端输入内容为______时,当前与客户连接的服务端处理线程断开 / 330 达内科技教学支持与督导部 【正确答案】 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(); / 330 达内科技教学支持与督导部 服务器端代码: 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 极其简单易于掌握和使用。 / 330 达内科技教学支持与督导部 【题目编号】 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 / 330 达内科技教学支持与督导部 【题目描述】 下面关于 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 / 330 达内科技教学支持与督导部 【知 识 点】 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 文件。 / 330 达内科技教学支持与督导部 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基础-设计模式-单例 / 330 达内科技教学支持与督导部 【难易程度】 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() { } /** * 静态工厂方法 */ / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 【正确答案】 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 / 330 达内科技教学支持与督导部 【题目描述】 表 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 * 0.8 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 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-Oracle SQL-SQL基础-排序 【难易程度】 60 【题目描述】 哪句可以实现显示id和description ,条件满足订单时间在January 1, 1997 以前的,且单价小于 1.00 或者大于 5.00 的, 结果用订单时间降序排列。 【选项】 A.SELECT id_number, description FROM inventoryWHERE 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 ORquantity > 1000); 【选项】 A 返回单价大于 8.00 且数量大于 1000 的存货的货号、种类、单价信息 B 返回单价大于 8.00 或者数量大于 1000 的存货的货号、种类、单价信息. C 返回单价大于8.00或者数量大于 1000且有制造商号的存货的货号、种类、单价信息. D 返回单价大于8.00或者数量大于1000的制造商的所有存货的货号、种类、单价信息. 【正确答案】 C 【解释】无 【题目编号】 jsd-02-201-1010 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-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 的部门信息 ? / 330 达内科技教学支持与督导部 【选项】 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. Unionall C.Union only D.connect by 【正确答案】 B 【解释】 Union 集合操作符返回两个查询所选择的去除重复行。 【题目编号】 jsd-02-201-1015 【知 识 点】 数据库-Oracle SQL-游标 【难易程度】 80 【题目描述】 在 Oracle 中,当需要使用显式游标更新或删除游标中的行时,UPDATE 或 DELETE 语句必须使用( )子句。 / 330 达内科技教学支持与督导部 【选项】 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 / 330 达内科技教学支持与督导部 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子句中。 / 330 达内科技教学支持与督导部 【题目编号】 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 语句正确的是? 其中 / 330 达内科技教学支持与督导部 表 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 / 330 达内科技教学支持与督导部 【题目描述】 从 “员工” 表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条 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,速度快一些。 / 330 达内科技教学支持与督导部 【题目编号】 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 number 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) _. 【选项】 / 330 达内科技教学支持与督导部 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 上有突出的表现,超过了他的主要竞争对手。 / 330 达内科技教学支持与督导部 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 :在巨型企业得到广泛的应用,向下兼容性好。风险小。 / 330 达内科技教学支持与督导部 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:开发工具较少,经验丰富的人员很少。 / 330 达内科技教学支持与督导部 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 安装完成后,如何用命令行启动和关闭数据库? / 330 达内科技教学支持与督导部 【正确答案】 打开: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)。事务 / 330 达内科技教学支持与督导部 通常由高级数据库操纵语言或编程语言(如 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. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。 / 330 达内科技教学支持与督导部 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 可以改为强制查询使用索引: / 330 达内科技教学支持与督导部 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=100*2 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 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-Oracle SQL-事务 【难易程度】 70 【题目描述】 请解释分布式事务管理? 【正确答案】 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息, IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。 【解释】无 【题目编号】 jsd-02-201-4008 【知 识 点】 数据库-Oracle SQL-索引 【难易程度】 70 【题目描述】 你认为在表上建立索引可以提高数据库系统的效率吗,为什么? 【正确答案】 不一定 建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的 where 子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。 【解释】无 【题目编号】 jsd-02-201-4009 【知 识 点】 数据库-Oracle SQL-数据库理论 【难易程度】 50 【题目描述】 什么是数据库的参照完整性? 【正确答案】 / 330 达内科技教学支持与督导部 数据库的参照完整性是指表与表之间的一种对应关系,通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格进行对照,从而阻止一些不正确的数据的操作。 【解释】无 【题目编号】 jsd-02-201-4010 【知 识 点】 数据库-Oracle SQL-数据库优化 【难易程度】 70 【题目描述】 如何优化数据库,如何提高数据库的性能? 【正确答案】 1) 硬件调整性能: 最有可能影响性能的是磁盘和网络吞吐量,解决办法扩大虚拟内存,并保证有足够可以扩充的空间; 把数据库服务器上的不必要服务关闭掉;把数据库服务器和主域服务器分开;把 SQL 数据库服务器的吞吐量调为最大;在具有一个以上处理器的机器上运行 SQL。 2)调整数据库: 若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操作,按照 where 选择条件建立索引,尽量为整型键建立为有且只有一个簇集索引,数据在物理上按顺序在数据页上,缩短查找范围,为在查询经常使用的全部列建立非簇集索引,能最大地覆盖查询;但是索引不可太多,执行 UPDATE DELETE INSERT 语句需要用于维护这些索引的开销量急剧增加;避免在索引中有太多的索引键;避免使用大型数据类型的列为索引;保证每个索引键值有少数行。 3)使用存储过程: 应用程序的实现过程中,能够采用存储过程实现的对数据库的操作尽量通过存储过程来实现,因为存储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应用可以简单地执行存储过程,并且只返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。 4)应用程序结构和算法: 建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。因为人们在使用 SQL 时往往会陷入一个误区,即太关注于所得的结果是否正确,特别是对数据量不是特别大的数据库操作时,是否建立索引和使用索引的好坏对程序的响应速度并不大,因此程序员在书写程序时就忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在数据量特别大时或者大型的或是复杂的数据库环境中(如联机事务处理 OLTP 或决策支持系统 DSS)中表现得尤为明显。在工作实践中发现,不良的 SQL 往往来自于不恰当的索引设计、不充份的连接条件和不可优化的 where 子句。在对它们进行适当的优化后,其运行速度有了明显地提高! 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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-事务 【难易程度】 【题目描述】 描述重做与回滚的认识。 【正确答案】 重做日志生成日志文件,是为将来恢复数据库使用的. 回滚段保存未提交数据,是为支持事务而起作用的。 / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 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 文件内容获得); / 330 达内科技教学支持与督导部 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 【题目描述】 删除表的列; 【正确答案】 / 330 达内科技教学支持与督导部 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数据库操作 / 330 达内科技教学支持与督导部 【难易程度】 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 / 330 达内科技教学支持与督导部 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-数据库理论 / 330 达内科技教学支持与督导部 【难易程度】 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 – 数据库打开 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 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 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-Oracle SQL-连接池 【难易程度】 70 【题目描述】 数据连接池的工作机制是什么? 【正确答案】 J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 【解释】无 【题目编号】 jsd-02-201-5001 【知 识 点】 数据库-Oracle SQL-SQL基础 【难易程度】 30 【题目描述】 消耗资源的 SQL 的定位方法。 【正确答案】 select sql_text from 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$sql 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分别代表课程编号,课程名称 / 330 达内科技教学支持与督导部 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( / 330 达内科技教学支持与督导部 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语句。 【正确答案】 / 330 达内科技教学支持与督导部 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-关联查询-外连接 / 330 达内科技教学支持与督导部 【难易程度】 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) / 330 达内科技教学支持与督导部 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数据库): / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-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 / 330 达内科技教学支持与督导部 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 / 330 达内科技教学支持与督导部 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) / 330 达内科技教学支持与督导部 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; 【解释】无 【题目编号】 jsd-02-201-5017 【知 识 点】 数据库-Oracle SQL-级联删除、左外连接、SQL基础 【难易程度】 50 【题目描述】 STOMERS表,字段为:ID:(非空,主键)bigint,NAME:(非空)varchar,AGE:int类型;创建ORDERS表,字段为:ID:(非空,主键,)bigint,ORDER_NUMBER:(非空) / 330 达内科技教学支持与督导部 varchar,PRICE:double,CUSTOMER_ID :(外键)bigint,设置级连删除; 1) 使用左外连接查询,ORDERS 和 CUSTOMERS 表, 2) delete from tablea & truncate table tablea的区别 【正确答案】 create table CUSTOMBERS( ID bigint not null, NAME varchar(15), AGE int, primary key (ID) ); create table ORDERS( ID bigint not null, ORDER_NUMBER varchar(15) not nulll, PRICE double precision, CUSTOMER_ID bigint, primary key(ID), ); alter table ORDERS add constraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID) on delete cascade; 1) select c.ID, o.CUSTOMER_ID,c.NAME, o.ID ORDER_ID,ORDER_NUMBER from CUSTOMERS c leftouter join ORDERS o no c.ID=o.CUSTOMER_ID; 2) truncate 语句执行速度快,占资源少,并且只记录页删除的日志; delete 对每条记录的删除均需要记录日志 【解释】无 【题目编号】 jsd-02-201-5018 【知 识 点】 数据库-Oracle SQL-高级查询-子查询、关联查询-内连接 【难易程度】 30 【题目描述】表1:book表,字段有id(主键),name (书名); 表2:bookEnrol表(图书借出归还登记),字段有id,bookId(外键),dependDate(变更时间),state(1.借出 2.归还)。 id name 1 English 2 Math 3 JAVA (表1) / 330 达内科技教学支持与督导部 id bookId dependDate State 1 1 2009-01-02 1 2 1 2009-01-02 2 3 2 2009-01-14 1 4 1 2009-01-17 1 5 2 2009-02-14 2 6 2 2009-02-15 1 7 3 2009-02-18 1 8 3 2009-02-19 2 (表2) 1) 要求查询结果应为:(查询出被借出的书和被借出的日期) id name dependDate 1 English 2009-01-17 2 Math 2009-02-15 2) 第二个表是用来登记的,不管你是借还是还,都要添加一条记录。 请写一个SQL语句,获取到现在状态为已借出的所有图书的相关信息。 【正确答案】 1) /*方案一*/   select a.id,a.name,b. dependDate from book a, bookEnrol b where     a.id=b.bookId      and      b. dependDate in(select max(dependDate) from bookEnrol group by bookId )     and b.State =1        /*方案二*/   select k.id,k.name,a. dependDate   from bookEnrol a, book k      where a.id in (select max(b.id) from bookEnrol b group by b.bookId)        and a.state = 1        and a.bookId = k.id;    2) select book.id,book.name,max(dependDate) from book inner join bookEnrol on book.id=bookEnrol.bookid AND booker.state=1 group by book.id ; / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 jsd-02-201-5019 【知 识 点】 数据库-Oracle SQL-SQL基础-分组 【难易程度】 10 【题目描述】 查询语句排名问题: 名次 姓名 月积分(char) 总积分(char) 1 WhatIsJava 1 99 2 水王 76 981 3 新浪网 65 96 4 牛人 22 9 5 中国队 64 89 6 北林信息 66 66 7 加太阳 53 66 8 中成药 11 33 9 西洋参 25 26 10 大拿 33 23 如果用总积分做降序排序,因为总积分是字符型,所以排出来是这样子(9,8,7,6,5...),要求按照总积分的数字大小排序。 【正确答案】 select * from tablename order by cast(总积分 as int) desc 【解释】无 【题目编号】 jsd-02-201-5020 【知 识 点】 数据库-Oracle SQL-SQL基础、高级查询 【难易程度】 40 【题目描述】 按要求写 SQL 语句:根据集团成员培训业务,建立以下三张表: 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 语句更新学号为‘S#1’的姓名为“Mike”; 3)使用嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位; 4)使用嵌套语句查询不选修课程编号为‘C5’的学员姓名和所属单位; 5)查询选修课程超过 5 门的学员学号和所属单位; / 330 达内科技教学支持与督导部 【正确答案】 1) select count(SN),avg(SA) from S where SD='技术一部'; 2) update S set SN='Mike' where S#='S#1'; 3) select SN,SD from S where S#=(select S# from SC where C#='C2'); 4) select SN,SD from S where S# not in(select S# from SC where C#='C5'); 5) select S#,SD from S where S#= (select S# from SC group by S# having count(S#)>=5); 【解释】无 【题目编号】 jsd-02-201-5021 【知 识 点】 数据库-Oracle SQL-关联查询 【难易程度】 50 【题目描述】 请根据以下四张表(其中 course_t 表的 teacher_id 字段是 teacher_t 表的 id 字段的外键引用), 拼写出相应的 sql 语句(oracle 语法)。 学生表:students_t id name sex 001 赵学生 Male 002 钱学生 Male 003 孙学生 Male 004 李学生 Female 005 周学生 Female ? ? ? 教师表:teacher_t id name sex 001 吴老师 Male 002 郑老师 Male 003 王老师 Male 004 刘老师 Female 005 张老师 Female 课程表:course_t id name credit teacher_id 001 语文 3 001 002 数学 3 002 003 英语 4 003 / 330 达内科技教学支持与督导部 004 物理 3 004 005 化学 2 005 006 政治 1 001 007 生物 1 005 008 计算机 2 005 选课表:student_course_t id student_id course_id 001 001 001 002 001 002 003 001 003 004 002 001 005 002 007 ? ? ? 1)统计每个学生选修的学分,并按学分降序排序 2)统计每个学生选修的所有课程和对应的任课老师;并按学生 Id 和课程 Id 排序 3)统计所有学生、所有课程和所有任课老师的对应关系;并按学生 Id 和课程 Id 排序 【正确答案】 1)select sc.student_id,count(c.credit) from students_t s, course_t c, student_course_t sc where s.id=sc.student_id and c.id=sc.course_id group by sc.student_id order by count(c.credit); 2) select s.name as s_name,c.name as c_name ,t.name as t_name from students_t s, course_t c, student_course_t sc,teacher_t t where s.id=sc.student_id and c.id=sc.course_id and t.id=c.teacher_id order by s.id,c.id; 3)与 2)相同 【解释】无 【题目编号】 jsd-02-201-5022 【知 识 点】 数据库-Oracle SQL-SQL基础-基本查询语句 【难易程度】 10 【题目描述】 已有“成绩”如下表所示: 学号 课程号 分数 S1 C1 80 S1 C2 75 S2 C1 null / 330 达内科技教学支持与督导部 S2 C2 55 S3 C3 90 1) 执行 SQL 语句:Select Count(学号)From 成绩 Where 分数〉60后的结果是什么? 2)请写出 SQL 语句来进行查询“成绩”表中学号为 S1、课程号为 C2 的学号和分数 【正确答案】 1)统计分数超过 60 的学生总数。 2)select 学号,分数 from 成绩 where 学号=‘S1 and 课程号=‘C2’; 【解释】无 【题目编号】 jsd-02-201-5023 【知 识 点】 数据库-Oracle SQL-索引 【难易程度】 20 【题目描述】 SAL 是 Product 表中的索引列,请优化如下 SQL 语句,并简述原因。原语句: SELECT* FROM Product WHERE SAL * 12 〉25000; 【正确答案】 Select * from product where sal>(25000/12); 【解释】无 WHERE 子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描. 【题目编号】 jsd-02-201-5024 【知 识 点】 数据库-Oracle SQL-SQL基础-分组 【难易程度】 20 【题目描述】 有一张表,字段有用户名、口令及备注,请用 SQL 选择出用户名和口令完全相同的记录(应包括用户名和数量的出现次数) T_USER(USER_NAME,PASSWORD) 显示 USER_NAME COUNT(*) QWE 4 WER 5 【正确答案】 select user_name,count(*) from t_user group by user_name,password; 【解释】无 【题目编号】 jsd-02-201-5025 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-Oracle SQL-关联查询-子查询 【难易程度】 40 【题目描述】 有一张表,T_MONEY,字段有 ID,FEE,请用 SQL 语言选择出 FEE 值为前三条记录。 T_MONEY(ID,FEE) 显示 ID FEE 2 100 1 90 2 80 【正确答案】 Select Id,fee from (Select id,fee from t_money order by fee desc) where rownum<=3; 【解释】无 【题目编号】 jsd-02-201-5026 【知 识 点】 数据库-Oracle SQL-高级查询-子查询、排序函数-RUWNUMBER 【难易程度】 40 【题目描述】 table_name temp Id name 1 a 2 b 3 a 4 a 结果为 Id name 1 a 2 b 写出 sql 语句。 【正确答案】 select rownum as id , name from(select distinct name from temp); 【解释】无 【题目编号】 jsd-02-201-5027 【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数 【难易程度】 50 【题目描述】 已知原表(t_salary) / 330 达内科技教学支持与督导部 year salary 2000 1000 2001 2000 2002 3000 2003 4000 先要实现显示结果(salary 为以前的工资和) year salary 2000 1000 2001 3000 2002 6000 写出 sql 语句。 【正确答案】 select t.year, sum(t.salary) over (order by t.year) as sum_salary from salary_t t; 【解释】无 【题目编号】 jsd-02-201-5028 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 【难易程度】 60 【题目描述】 有两个表 A 和 B,均有 key 和 value 两个字段,如果 B 的 key 在 A 中也有,就把 B 的 value 换为 A中对应的 value。这道题的 SQL 语句怎么写? 【正确答案】 merge into A a using B b on (a.key=b.key) when matched then update set a.value=b.value 【解释】无 【题目编号】 jsd-02-201-5029 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、SQL基础-聚合函数 【难易程度】 30 【题目描述】 创建一张数据表,并插入如下数据。 购物人 商品名称 数量 A 甲 2 B 乙 4 C 丙 1 A 乙 2 B 丙 5 1)写出创建表和插入内容的 sql 语句 / 330 达内科技教学支持与督导部 2)写出 sql 语句使其产生如下结果 购物人 商品甲 商品乙 商品丙 A 22 Null B Null 4 5 C Null Null1 【正确答案】 create table tb_order( customer varchar2(20), product_name varchar2(20), quantity number(2)) Insert into tb_order(customer,product_name,quantity)values(‘A’,’甲’,2); Insert into tb_order(customer,product_name,quantity)values(‘B’,’乙’,4); Insert into tb_order(customer,product_name,quantity)values(‘C’,’丙’,1); Insert into tb_order(customer,product_name,quantity)values(‘A’,’甲’,2); Insert into tb_order(customer,product_name,quantity)values(‘B’,’乙’,5); 2)select customer "购物人", sum(decode(product_name,'甲',quantity,0)) "商品甲", sum(decode(product_name,'乙',quantity,0)) "商品乙", sum(decode(product_name,'丙',quantity,0)) "商品丙" from tb_order group by customer; 【解释】无 【题目编号】 jsd-02-201-5030 【知 识 点】 数据库-Oracle SQL-关联查询-等值连接 【难易程度】 20 【题目描述】 有如下两张表:部门表和职员表,每个职员都属于一个部门,表结构如下: Dept 表 Deptno Deptname ? ? Emp 表 Empno Empname Deptno ? ? ? 请使用 SQL 语句查询每个部门有多少职员,要求查询结果包含两例(部门名称,人数)? 【正确答案】 select d.deptname,count(*) from dept d,emp e where d.deptno=e.deptno group by d.deptno,d.deptname; 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 jsd-02-201-5031 【知 识 点】 数据库-Oracle SQL-关联查询-内连接、等值连接 【难易程度】 50 【题目描述】 业务场景:存在下面的表及记录 GOODS(进货表) GOODSID(主键) GOODSNAME MEMO 1 青霉素 2 西瓜霜 3 创可贴 4 西洋参 SU(进货表) GOODSID(主键) SUQTY 1 60 2 70 SA(销售表) GOODSID(主键) SAQTY 3 80 4 90 要求一:进货记录,给出 SQL 达到以下结果 GOODSID(主键) GOODSNAME SUQTY 1 青霉素 60 2 西瓜霜 70 3 创可贴 0 4 西洋参 0 要求二:进销对比,给出 SQL 达到以下结果 GOODSID(主键) GOODSNAME SUQTY SAQTY 1 青霉素 60 0 2 西瓜霜 70 70 3 创可贴 0 80 要求三:将 GOODS.MEMO 更新为[进货数量 SU.SUQTY] 【正确答案】 / 330 达内科技教学支持与督导部 1)select g.goodsid,g.goodsname,s.quqty from goods g inner join su s on g.goodsid=s.goodsid; 2 ) select g.goodsid,g.goodsname,s.quqty,a.saqty From goods g, su s,sa a on g.goodsid=s.goodsid and g.goodsid=a.goodsid; 3)update goods set demo=(select s.suqty from su s where s.goodsId=goods.goodsId) 【解释】无 【题目编号】 jsd-02-201-5032 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、SQL基础-聚合函数、关联查询-内连接 【难易程度】 50 【题目描述】 表结构: 1) 表名:apply 字段(字段名/类型/长度): applyno varchar 8;//申请单号(关键字) applydate bigint 8;//申请日期 state varchar 2;//申请状态 2) 表名:applydetail 字段(字段名/类型/长度): applyno varchar 8;//申请单号(关键字) name varchar 30;//申请人姓名 idcard varchar 18;//申请人身份证号 state varchar 2;//申请状态 其中,两个表的关联字段为申请单号。 题目: 1)查询身份证号码为 440401430103082 的申请日期 2)查询同一个身份证号码有两条以上记录的身份证号码及记录个数 3)删除 applydetail 表中所有姓李的记录 【正确答案】 1) Select applydate from apply a join applydetail d on a.applyno=d.applyno and Idcard='440401430103082'; 2) select idcard,count(*) from applydetail group by idcard having count(*)>2; 3) delete from applydetail where name='李%'; 【解释】无 【题目编号】 jsd-02-201-5033 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 / 330 达内科技教学支持与督导部 【难易程度】 20 【题目描述】 在 system 方案中建立表 table1,表中包含如下字段 字段名称 数据类型 要求 name Varchar2 非空 id Number 非空 age Number sex Varchar2 salary Number 【正确答案】 Create table system.tablel1 ( Id number not null, Name varchar(8) not null, Age number, Sex varchar(2), Salary number); 【解释】无 【题目编号】 jsd-02-201-5034 【知 识 点】 数据库-Oracle SQL-SQL基础 【难易程度】 70 【题目描述】 某公司的机构结构为树型结构,对应的表结构为TableCompany(ComCode—机构代码, UpperComCode—上级机构代码),如何查询出总公司的所有下级机构?(java 或者 SQL 均可)。你觉得这种思维和设计是否合理?有什么好建议的? 【正确答案】 select t1.* from TableCompany t1, TableCompany t2 Where t1.ComCode = t2.UpperComCode 这种设计比较容易让人理解,但是表中的数据联系过于紧密,数据量很大,会给后期维护造成不便,如果根据第三范式要求,将每一子公司独立成一张表,对于关系的维护和数据的管理都会变得比较方便。 【解释】无 【题目编号】 jsd-02-201-5035 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 【难易程度】 40 【题目描述】 一个简单的论坛系统,以数据库存储如下数据: 用户名,发帖标题,发帖内容,回复标题,回复内容。 每天论坛访问量 200 万左右,更新帖子 10 万左右。 请给出数据库表结构设计,并结合范式简要说明设计思路。 【正确答案】 用户表:存储用户信息; 用户所发的帖子表:存储用户所发的帖子; 回复表:存储对帖子所做的回复。 设计: / 330 达内科技教学支持与督导部 User: Create table tb_user( id number(10) primary key, Uname varchar2(20) not null unique ); Comments: Create table tb_comments( id number(10), comments_id number(20) not null unique, title varchar2(20) not null, comments varchar2(255) not null, foreign key(id) references tb_user(id) ); Replay: Create table tb_replay( id number(10), comments varchar2(255) not null, foreign key(id) references tb_comments(comments_id) ); 思路:因为此应用所要存储的数据量比较大,所以为了避免数据的冗余,表的设计依托于第三范式。 【解释】无 【题目编号】 jsd-02-201-5036 【知 识 点】 数据库-Oracle SQL-高级查询-子查询 【难易程度】 40 【题目描述】 有一个数据表 userinfo,包含 userid,username 字段,其中 userid 是唯一的,username 可能 重复,请写一句 sql 查询语句,把重复的记录全部取出来。 userid username 1 老王 2 老王 3 老李 4 老李 5 小张 要求返回记录集 userid username / 330 达内科技教学支持与督导部 1 老王 2 老王 3 老李 4 老李 【正确答案】 select * from userinfo where username in (select username from userinfo group by username having count(username)>1); 【解释】无 【题目编号】 jsd-02-201-5037 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 【难易程度】 20 【题目描述】 数据库基础: 1)使用 SQL 语句创建学生表 students 字段: 学号:s_id 姓名:s_name 年龄:age 班级:class 辅导员:assistant (请设计各字段类型 与长度) 2)查询学生表中年龄大于 20 的所有学生的学号与姓名 3)删除 0201 班的所有同学 4)查询 0302 班姓李的学生的个数 5)将班编号以’02’开头的所有班级的辅导员修改为‘李四’ 【正确答案】 1)create table students(s_id number(10) primary key, s_name varchar(30) not null, age number(3) not null, class varchar(20) not null, assistant varchar(30)); 2)select s_id,s_name from students where age>20; 3)delete from students where class=’0201’; 4)select count(s_name) from students where s_name like ‘李%’ and class='0302'; 5)update students set assistant='李四' where class like '02%'; 【解释】无 【题目编号】 jsd-02-201-5038 【知 识 点】 数据库-Oracle SQL-SQL基础-分组 【难易程度】 30 【题目描述】 表名:高考信息表 students_info 准考证号 科目 成绩 no subject score / 330 达内科技教学支持与督导部 2006001 语文 119 2006001 数学 108 2006002 物理 142 2006001 化学 136 2006001 物理 127 2006002 数学 149 2006002 英语 110 2006002 语文 105 2006001 英语 98 2006002 化学 129 写出高考总分在 600 以上的学生准考证号的 SQL 【正确答案】 select no from students_info group by no having sum(score)>600; 【解释】无 【题目编号】 jsd-02-201-5039 【知 识 点】 数据库-Oracle SQL-高级查询-子查询 【难易程度】 50 【题目描述】 有一个表 LEANR,表里有三个字段分别是学号(student_id), 课程(kc),成绩(grade)。 1).查询每一门课程的前两名 2).查询以 Grade 降序排列的第 31 至 40 条记录(不需要区分课程) 3).查询表中存在课程重复 4 次以上的记录,显示课程和重复的次数,并且按照重复次数的降序排列 【正确答案】 1).select student_id,kc,grade from (select student_id,kc,grade, row_number() over(partition by kc order by grade desc)rn from LEANR) where rn<=2; 2)select student_id,grade from ( select lea.*,rownum rm from ( select * from LEANR order by grade desc ) lea where rownum < 41 / 330 达内科技教学支持与督导部 )where rm between 31 and 40; 3). select kc,count(kc) from LEANR group by kc having count(kc)>=2 order by count(kc) desc; 【解释】无 【题目编号】 jsd-02-201-5040 【知 识 点】 数据库-Oracle SQL-关联查询-等值连接 【难易程度】 【题目描述】 a 部门表 b 员工表 a 表字段( id --部门编号 departmentName-部门名称 ) b 表字段( id--部门编号 employee- 员工名称 ) 问题:如何一条 sql 语句查询出每个部门共有多少人 【正确答案】 create table a( id number primary key, departmentName varchar(20) ); create table b( id number, employee varchar(20) ); insert into a values(1,'部门 1'); insert into a values(2,'部门 2'); insert into a values(3,'部门 3'); insert into b values(1,'emp1'); insert into b values(1,'emp2'); insert into b values(1,'emp3'); insert into b values(2,'emp4'); insert into b values(2,'emp5'); insert into b values(3,'emp6'); select departmentName,count(employee) from a,b where a.id=b.id group by departmentName; 【解释】无 【题目编号】 jsd-02-201-5041 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-Oracle SQL-关联查询-等值连接、高级查询-子查询 【难易程度】 40 【题目描述】 为管理岗位业务培训信息,建立 3 个表: S (SID,SN,SD,SA) SID,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (CID,CN ) CID,CN 分别代表课程编号、课程名称 SC ( SID,CID,G ) SID,CID,G 分别代表学号、所选修的课程编号、学习成绩 1. 使用标准 SQL 嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 2. 使用标准 SQL 嵌套语句查询选修课程编号为’02’的学员姓名和所属单位 3. 使用标准 SQL 嵌套语句查询不选修课程编号为’03’的学员姓名和所属单位 4. 使用标准 SQL 嵌套语句查询选修全部课程的学员姓名和所属单位 5. 查询选修课程超过 5 门的学员学号和所属单位 【正确答案】 create table s( sid int(10) primary key, sn varchar(20) not null, sd varchar(20) not null, sa int(3) not null ); create table c( cid int(10) primary key, cn varchar(20) not null ); create table sc( sid int(10) references s(sid), cid int(10) references c(cid), g int(10), primary key(sid,cid) ); insert into s values(1,"zhangsan","project",25); insert into s values(2,"lisi","mis",26); insert into s values(3,"wangwu","manager",27); insert into s values(4,"zhaoliu","mis",26); insert into c values(01,"税收基础"); insert into c values(02,"Core Java"); insert into c values(03,"NetWork"); insert into sc values(1,01,70); insert into sc values(1,02,75); insert into sc values(1,03,80); insert into sc values(2,01,80); insert into sc values(2,03,69); insert into sc values(3,02,73); 1) / 330 达内科技教学支持与督导部 select s.sid,s.sn from s,c,sc where s.sid=sc.sid and c.cid=sc.cid and c.name='税收基础'; 2) select a.sn,a.sd from s a, c b where b.cid in(select c.cid from sc c where a.sid=c.sid and b.cid=c.cid) and b.cid=02; 3) select a.sn,a.sd from s a, c b where b.cid not in(select c.cid from sc c where a.sid=c.sid and b.cid=c.cid) and b.cid=03; 4) select sn,sd from s where sid in (select sid from sc group by sid having count(cid)=(select count(cid) from c)); 5) select sn,sd from s where sid in(select sid from sc group by sid having count(distinct cid)>5); 【解释】无 【题目编号】 jsd-02-201-5042 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、java代码 【难易程度】 60 【题目描述】 请根据以下要求来完成题目: 会议室预定模块:某公司有多个会议室,以房间号区分。如果某部门需要预定会议室,则会提交预定请求(包含预定开始使用时间、预定结束使用,所预定会议室房间号)。 设计一个表,保存会议室预定信息。 要求采用 SQL 语句及JAVA 代码段判断在 2003-3-10 下午 3:00~4:00 3 号会议室是否空闲。 请写出有关 SQL 语句以及相关 JAVA 的代码段。 【正确答案】 1)Sql 语句: create table meeting( id number primary key , room_id varchar(10), isUsed char, begin timestamp, end timestamp ); insert into meeting values( 1,'201',1,to_date('2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss') ,to_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss')); insert into meeting values( 2,'201',1,to_date('2003-03-10 17:00:00','yyyy-mm-dd hh24:mi:ss') / 330 达内科技教学支持与督导部 ,to_date('2003-03-10 22:00:00','yyyy-mm-dd hh24:mi:ss')); 2) package com.tarena; import java.sql.*; public class Test { public static void main(String[] args) { String driverName = "oracle.jdbc.OracleDriver"; String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String username = "scott"; String pwd = "tiger"; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName(driverName); con = DriverManager.getConnection(url, username, pwd); stmt = con.createStatement(); String sql = "select isUsed from " + "meeting " +"where ((begin between to_date( '2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss')) " +"or(end between to_date( '2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss') andto_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss')))" +" and room_id=201"; if (stmt.execute(sql)) { rs = stmt.getResultSet(); } StringBuffer sb = new StringBuffer(); while (rs.next()) { sb.append("isFree:" + rs.getInt(1) + " "); } System.out.print(sb.toString()); } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); / 330 达内科技教学支持与督导部 } catch (Exception e1) { e1.printStackTrace(); } } } } 【解释】无 【题目编号】 jsd-02-201-5043 【知 识 点】 数据库-Oracle SQL-关联查询-等值连接 【难易程度】 40 【题目描述】 下面是两个数据库表,分别记录员工姓名和工资 T_EMPLOYEE ID NAME 2 张三 3 李四 5 王五 ????? ????? T_SALARY ID SALARY 2 3400 3 4300 5 2500 ????? ????? 1.查询表 T_EMPLOYEE 中 id = 3 的员工记录 2.查询表 T_EMPLOYEE 中所有员工记录 3.联合查询表 T_EMPLOYEE 和 T_SALARY 中所有员工的姓名和工资记录,并按照薪水从高到低排列 【正确答案】 1).select * from t_employee where id = 3; 2).select * from t_employee; 3).select e.name,s.salary from t_employee e,t_salary s where e.id=s.id order by s.salary; 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 jsd-02-201-5044 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 【难易程度】 40 【题目描述】 有三张表,学生表 S,课程表 C,学生课程表 SC,学生可以选修多门课程,一门课程可能被多个 学生选修,通过 SC 表关联。 1)写出建表以及插入语句; 2)写出 SQL 语句,查询选修了所有选修课程的学生; 3)写出 SQL 语句,查询选修了至少 2 门以上的课程的学生 【正确答案】 1) create table student (id number(10) primary key,name varchar2(20)); create table course (id number(10) primary key,name varchar2(20)); create table sc(sid number(10) references student(id),cid number(10 references course(id),grade number(4,2)); insert into student values(1,'feifei'); insert into student values(2,'jingjing'); insert into student values(3,'nannan'); insert into student values(4,'yuanyuan'); insert into student values(5,'jiejie'); insert into course values(1,'corejava'); insert into course values(2,'c++');insert into course values(3,'jdbc'); insert into course values(4,'hibernate'); insert into sc values(1,1,98); insert into sc values(2,1,97); insert into sc values(3,1,94); insert into sc values(4,1,92); insert into sc values(5,1,93);insert into sc values(1,2,94);insert into sc values(2,2,92); insert into sc values(3,2,95); insert into sc values(5,2,97); insert into sc values(1,3,92); insert into sc values(2,3,92); insert into sc values(4,3,91); insert into sc values(1,4,99); insert into sc values(3,4,89); 2)select sid,count(*) from sc group by sid having count(*)=(select count(*) from course); 3)select sid,count(*) from sc group by sid having count(*)>=2; 【解释】无 【题目编号】 jsd-02-201-5045 【知 识 点】 数据库-Oracle SQL-SQL基础、关联查询 【难易程度】 50 【题目描述】 SQL 题 --操作员表 / 330 达内科技教学支持与督导部 select pkid,name,sys_corp_id '单位主键' from base_operator --角色表 select pkid,sys_corp_id '单位主键',name from base_role --角色与操作员的对应关系表 select pkid,base_role_id '角色主键',base_operator_id '操作员主键' from base_role_operator --单位表 select pkid,name from sys_corps --问题: --1.显示出'开发'公司所拥有的操作员 --2.显示出'开发'公司每个角色所对应的操作员信息 --3.显示出'开发'公司每个角色所对应的操作员的个数 【正确答案】 答:1).Select name from base_operator; 2).Select op.pkid,op.name,op.sys_corp_id From base_operator op,base_role_operator ro ,base_role br Where ro.base_operator_id =op.pkid And br.pkid=ro.base_role_id; 3).Select max(br.name) ,count(*) From base_role_operator ro,base_role br Where ro.base_role_id=br.pkid Group by br.base_role_id; 【解释】无 【题目编号】 jsd-02-201-5046 【知 识 点】 数据库-Oracle SQL-SQL基础-表操作 【难易程度】 30 【题目描述】 说明在一个系统中权限管理中应该有哪些表、表间关系、各表哪些功能? 【正确答案】 角色和权限表是 m:n 的关系 操作表和权限表是 1:m 的关系模块表和操作表是 1:m 的关系表的大体设计如下: / 330 达内科技教学支持与督导部 -- 角色表 create table roles ( id number primary key, name varchar2(20) ); -- 系统模块表 create table modules ( id number primary key, name varchar2(50), url varchar2(50) ); -- 模块操作表 create table operations ( id number primary key, name varchar2(20), mid number, constraint foreign key (mid) references modules(id) ); -- 权限表 create table rights ( id number primary key, name varchar2(20), url varchar2(50), operationid int references operations(id) ); -- 角色权限设置表 create table rolerights ( id number primary key, roleid number references roles(id), rightid number references rights(id) ); 【解释】无 【题目编号】 jsd-02-201-5047 【知 识 点】 数据库-Oracle SQL-高级查询-子查询 【难易程度】 30 【题目描述】 说出下面语句的作用: Selectrownum,last_name,salary From (select last_name,salary from s_emp order by salary desc) Where rownum<=10; 【正确答案】 / 330 达内科技教学支持与督导部 选出 s_emp 表中工资前 10 名员工的姓名和工资。 【解释】无 2.2 PLSQL 【题目编号】 jsd-02-202-1001 【知 识 点】 数据库-PLSQL-程序流程控制-条件结构、循环结构 【难易程度】 60 【题目描述】 判断这 PL/SQL 代码块:BEGIN FOR i IN 1..6 LOOP IF i = 2 OR i = 3 THEN null; ELSE INSERT INTO example(one) VALUES (i); END IF; ROLLBACK; END LOOP; COMMIT; END; 有多少行被插入到表 EXAMPLE ? 【选项】 A. 0 B. 1 C. 2 D. 3 【正确答案】 A 【解释】 在循环结束前执行了 ROLLBACK 语句,数据被回滚。 【题目编号】 jsd-02-202-1002 【知 识 点】 数据库-PLSQL-程序结构 【难易程度】 50 【题目描述】 关于 PL/SQL 块的执行部分下列说法正确的是? 【选项】 A.PL/SQL 表达式可以包含分组函数. B. PL/SQL 表达式不可以包含 SQL 函数. C. 在 SQL 语句中部分分组函数可用. D. 以上都不对 【正确答案】 A 【解释】无 【题目编号】 jsd-02-202-1003 【知 识 点】 数据库-PLSQL-程序结构 【难易程度】 50 【题目描述】 PL/SQL 的哪一部分实现对数据的操作? / 330 达内科技教学支持与督导部 【选项】 A. 头部分 B. 列外部分 C. 执行部分 D. 声明部分 【正确答案】 C 【解释】无 【题目编号】 jsd-02-202-1004 【知 识 点】 数据库-PLSQL-变量的声明与赋值 【难易程度】 60 【题目描述】 在 Oracle 中,执行如下 PL/SQL 语句后 CREATE TYPE car AS OBJECT ( id NUMBER, model VARCHAR2(25), color VARCHAR2(15) ); DECLARE myvar car.model%TYPE; BEGIN END; 变量 myvar 的数据类型为()。 【选项】 A.NUMBER B.car 类型 C.VARCHAR2 D.OBJECT 【正确答案】 C 【解释】 定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。 【题目编号】 jsd-02-202-1005 【知 识 点】 数据库-PLSQL-游标 【难易程度】 70 【题目描述】 表 CUSTOMER 包含如下列: CUSTOMER_ID NUMBER(9) ;LAST_NAME VARCHAR2(20) ;FIRST_NAME VARCHAR2(20) ;CREDIT_LIMIT NUMBER(9,2) 如下代码: DECLARE CURSOR cust_cursor IS SELECT customer_id, last_name, first_name FROM customer; cust_rec cust_cursor%ROWTYPE; 你如何操纵 CUST_REC 中的记录? 【选项】 A.添加一个 LOOP 到游标声明中. / 330 达内科技教学支持与督导部 B.在 PL/SQL 块的执行部分,使用 INSERT INTO 语句. C.在 PL/SQL 块的执行部分,使用一个 LOOP 和 FETCH 语句. D.在 PL/SQL 块的执行部分,使用 SELECT 语句使用 INTO 操作. 【正确答案】 D 【解释】 %ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致, 在这里就和游标查询语句中的数据结果保持一致。例如: DECLARE CURSOR cust_cursor IS SELECT CUSTOMER_ID, last_name, first_name FROM customer; cust_rec cust_cursor%ROWTYPE; begin open cust_cursor; LOOP FETCH cust_cursor INTO cust_rec; EXIT WHEN cust_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE(cust_rec.last_name); END LOOP; end; 【题目编号】 jsd-02-202-1006 【知 识 点】 数据库-PLSQL-存储过程 【难易程度】 70 【题目描述】 定义存储过程如下: CREATE OR REPLACE PROCEDURE INSERT_TEAM (V_ID in NUMBER,V_CITY in VARCHER2 DEFAULT 'AUSTIN', V_NAME in VARCHER2) IS BEGIN INSERT INTO TEAM (id, city,name) VALUES (v_id,v_city,v_name); COMMIT; END; 以下哪些 PL/SQL 语句能够正确调用该过程? 【选项】 A. EXECUTE INSERT_TEAM; B. EXECUTE INSERT_TEAM (V_NAME=.>"LONG HORNS"); C. V_CITY=>"AUSTIN"; D. EXECUTE INSERT_TEAM (3,"AUSTIN","LONG HORNS") / 330 达内科技教学支持与督导部 【正确答案】 D 【解释】无 【题目编号】 jsd-02-202-1007 【知 识 点】 数据库-PLSQL-存储过程 【难易程度】 50 【题目描述】 关于存储过程参数,正确的说法是( ) 【选项】 A. 存储过程的输出参数可以是标量类型,也可以是表类型。 A. 可以是表类型 B. 存储过程输入参数可以不输入信息而调用过程 C. 可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2)) D. 以上说法都不对 【正确答案】 b 【解释】无 【题目编号】 jsd-02-202-1008 【知 识 点】 数据库-PLSQL-基本命令 【难易程度】 30 【题目描述】 PL/SQL块中不能直接使用的SQL命令是( )。 【选项】 A.SELECT B.INSERT C.UPDATE D.DROP 【正确答案】 D 【解释】无 【题目编号】 jsd-02-202-1009 【知 识 点】 数据库-PLSQL-程序结构 【难易程度】 60 【题目描述】 以下不属于命名的PL/SQL块的是( )。 【选项】 A.程序包 B.过程 C.游标 D.函数 【正确答案】 C 【解释】 游标充当一个指示返回多条记录集合中某一条的指针。不能单独的使用,不能被声明它以外的程序。 【题目编号】 jsd-02-202-1010 【知 识 点】 数据库-PLSQL-存储过程 / 330 达内科技教学支持与督导部 【难易程度】 60 【题目描述】 ()包用于显示PL/SQL块和存储过程中的调试信息。 【选项】 A.DBMS_OUTPUT B.DBMS_STANDARD C.DBMS_INPUT D.DBMS_SESSION 【正确答案】 A 【解释】无 【题目编号】 jsd-02-202-1011 【知 识 点】 数据库-PLSQL-变量声明与赋值 【难易程度】 30 【题目描述】 在 PL/SQL 块的哪部分可以对初始变量赋予新值? 【选项】 A.结尾部分 B.开头部分 C.执行部分 D.声明部分 【正确答案】 C 【解释】无 【题目编号】 jsd-02-202-1012 【知 识 点】 数据库-JDBC、PLSQL-存储过程 【难易程度】 20 【题目描述】 用于调用存储过程的对象是。 【选项】 A.ResultSet B.DriverManager C.CallableStatemet D.PreparedStatement 【正确答案】 C 【解释】 ResultSet 是结果集对象;DriverManager 管理一组驱动程序;PreparedStatement 预编译的,用来发送和执行 SQL 语句的。 【题目编号】 jsd-02-202-2001 【知 识 点】 数据库-PLSQL-变量声明与赋值 【难易程度】 40 【题目描述】 在 PL/SQL 中使用哪几种语句来对变量进行赋值? 【选项】 A. := B. SELECT INTO C. FETCH INTO D. = 【正确答案】 ABC 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 jsd-02-202-2002 【知 识 点】 数据库-PLSQL-自定义函数 【难易程度】 60 【题目描述】 下列说法正确的是( ) 【选项】 A. 在PLSQL自定义函数中如果包含UPDATE、DELETE、INSERT语句,不必在函数体内给出COMMIT; B. 自定义函数可以在SQL语句中调用、也可以在PLSQL块中调用 C. 自定义函数可以返回表类型 D. 自定义函数中的参数可以是OUT类型 【正确答案】 ABCD 【解释】无 【题目编号】 jsd-02-202-2003 【知 识 点】 数据库-PLSQL-变量的声明与赋值 【难易程度】 50 【题目描述】 考虑下列声明,那些是不合法的: 【选项】 A. DECLARE v_name, v_dept VARCHAR2(14); B. DECLARE v_test NUMBER(5); C. DECLARE V_MAXSALARY NUMBER(7, 2) = 5000; D. DECLARE V_JOINDATE BOOLEAN := SYSDATE; 【正确答案】 ACD 【解释】 A.v_name 没有数据类型 C.:=是赋值 D.V_JOINDATE 是 boolean 类型,sysdate 是 Date 类型 【题目编号】 jsd-02-202-4001 【知 识 点】 数据库-PLSQL-程序结构 【难易程度】 60 【题目描述】 解释 TABLE Function 的用途 【正确答案】 TABLE Function 是通过 PL/SQL 逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和 ETL(ETL,Extraction-Transformation-Loading 的缩写,中文名称为数据提取、转换和加载)过程。 / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 jsd-01-202-4002 【知 识 点】 数据库-PLSQL-程序结构 【难易程度】 70 【题目描述】 创建过程语法 CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] { IS | AS } <类型.变量的说明> BEGIN <执行部分> EXCEPTION <可选的异常错误处理程序> END; 请问,IN、OUT、IN OUT分别表示什么。 【正确答案】 【解释】无 1) IN: 表示该参数不能被赋值(只能位于等号右边); 2) OUT:表示该参数只能被赋值(只能位于等号左边); 3) IN OUT: 表示该类型既能被赋值也能传值; 【题目编号】 jsd-01-202-4003 【知 识 点】 数据库-PLSQL-存储过程 【难易程度】 80 【题目描述】 如何调用存储过程 【正确答案】 存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、ORACLE开发工具或第三方开发工具中来调用运行。 ORACLE 使用EXECUTE 语句来实现对存储过程的调用: EXEC[UTE] Procedure_name( parameter1, parameter2…); 【解释】无 【题目编号】 jsd-01-202-4004 【知 识 点】 数据库-PLSQL-程序流程控制 【难易程度】 90 / 330 达内科技教学支持与督导部 【题目描述】 plSql循环遍历的几种方式? 【正确答案】 1).loop循环 declare v_i number; begin v_i:=1; loop v_i:=v_i+1; if v_i=10 then exit; --退出循环还可以 exit when v_i=10; end if; end loop; dbms_output.put_line(v_i); end; 2).while循环 Declare v_i number; v_sum number; begin v_i:=1;v_sum:=0; while v_i<=10 loop v_i:=v_i+1; v_sum:=v_i+v_sum; end loop; dbms_output.put_line(v_sum); end; 3).for循环 declare v_sum number:=0; begin for v_i in 1..10 loop v_sum:=v_i+v_sum; end loop; dbms_output.put_line(v_sum); end; / 330 达内科技教学支持与督导部 【解释】无 【题目编号】 jsd-01-202-4005 【知 识 点】 数据库-PLSQL-基本概念 【难易程度】 40 【题目描述】 plsql有什么用? 【正确答案】 plsql主要用来写存储过程的,它包含了SQL语句没有的那些逻辑的语句,像if end,while...之类的,可以实现更强大的功能。在某些情况下,比如说现在我要给某个表插入10000行的测试数据(有规律),写1000个insert 语句太麻烦,就用plsql实现。 【解释】无 【题目编号】 jsd-01-202-4006 【知 识 点】 数据库-PLSQL-序列 【难易程度】 60 【题目描述】 怎么用plsql创建序列 【正确答案】 create sequence 序列名 increment by 其实位置 start with 每次增加 Nomaxvalue nocycle 【解释】无 【题目编号】 jsd-01-202-4007 【知 识 点】 数据库-PLSQL-存储过程、自定义函数 【难易程度】 80 【题目描述】 存储过程和函数的区别 【正确答案】 从参数的返回情况来看: 如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数。 从调用情况来看:如果在 SQL 语句(DML 或 SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程, 但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,如果是在过程化语句中调用的话, 就要看你要实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些 DDL 语句等等),所以虽然他们的语法 上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。 【解释】无 【题目编号】 jsd-01-202-4008 / 330 达内科技教学支持与督导部 【知 识 点】 数据库-PLSQL-基本命令 【难易程度】 60 【题目描述】 你刚刚编译了一个 PL/SQL Package 但是有错误报道,如何显示出错信息? 【正确答案】 SHOW ERRORS 【解释】无 【题目编号】 jsd-02-202-5001 【知 识 点】 数据库-PLSQL-程序块编写、程序流程控制-条件结构 【难易程度】 50 【题目描述】 写出一个匿名的 SQL 程序块,完成如下任务:向表中插入 3000 条记录,在 salary 字段中有 500条记录的值为 1000,500 条记录的值为 1200,1000 条记录的值为 1500,1000 条记录的值为 1800,Id 字段的值来自序列 xl,其他字段的值任意。 【正确答案】 declare x number:=0; begin for x in 1..3000 loop If(x<=500) then Insert into system.test values(x1.nextval,'jim',24,'m',1000); elsif((x>500)and (x<1001)) then Insert into system.test values(system.xl1.nextval,'jim',24,'m',1200); elsif((x>1000)and (x<2001)) then Insert into system.test values(system.xl1.nextval,'jim',24,'m',1500); Else Insert into system.test values(system.xl1.nextval,'jim',24,'m',1800); end if; end loop; end; 【解释】无 【题目编号】 jsd-02-202-5002 【知 识 点】 数据库-PLSQL-存储过程 【难易程度】 30 【题目描述】 写出一个存储过程,这个存储过程的作用是修改特定 id 编号的记录,将该条记录的 salary 字 段的值加上 500; 【正确答案】 / 330 达内科技教学支持与督导部 Create or replace procedure system.update_age (vid in number) is Begin Update table1 set salary=salary+500 where id=vid; End; 【解释】无 【题目编号】 jsd-02-202-5003 【知 识 点】 数据库-PLSQL-自定义函数 【难易程度】 50 【题目描述】 创建一个 system 方案中的函数 fn1,函数作用为:将指定 ID 号的记录中的 salary 字段值乘以1.05。 【正确答案】 Create or replace function system.fn1(salary1 system.table1 salary &type) Return number as V1 numbre:=1.05; V2 numbre; Begin V2=v1*salary1; Return v2; End ; 【解释】无 【题目编号】 jsd-02-202-5004 【知 识 点】 数据库-PLSQL-存储过程 【难易程度】 70 【题目描述】 假设有以下的两个表: Cus_A ID* Name Address ? ? ? Cus_B ID* Name Address ? ? ? *主键 表 Cus_A 和表 Cus_B 的结构完全相同,表 Cus_A 和表 Cus_B 中既存在 ID 相同的记录,也存在 ID 不 同的记录。现要求将 ID 只存在于表表 Cus_A 中而不存在于表 Cus_B / 330 达内科技教学支持与督导部 中的记录全部插入到 Cus_B 表中, 并用表 Cus_A 中的记录更新 Cus_B 中相同的 ID 的记录,请写出完成这一功能的存储过程。 【正确答案】 create or replace procedure test is cust_record cus_a%rowtype ; cursor cust_cursor is select id,name,address from cus_a; Begin Open cust_cursor; LOOP Fetch cust_cursor into cust_record; EXIT WHEN cust_cursor %NOTFOUND; --先删除在插入 delete from cus_b where id=cust_record.id; insert into cus_b values(cust_record.id, cust_record.name, cust_record.address); END LOOP; end; 【解释】无 【题目编号】 jsd-02-202-5005 【知 识 点】 数据库-PLSQL- 程序流程控制 【难易程度】 60 【题目描述】 请用数据库语言求1-100之间的素数 【正确答案】 set serverout on create or replace procedure is_prime(inp number) as i number; j number; is_prim boolean; begin dbms_output.new_line; dbms_output.put(to_char(2)||' '); for i in 3..inp loop begin is_prim:=true; for j in 2..trunc(sqrt(i)) loop if mod(i,j)=0 then / 330 达内科技教学支持与督导部 begin is_prim:=false; exit; end; end if; end loop; if is_prim then dbms_output.put(to_char(i)||' '); end if; end; end loop; dbms_output.new_line; end; 【解释】无 【题目编号】 jsd-02-202-5006 【知 识 点】 数据库-PLSQL-自定义函数 【难易程度】 70 【题目描述】 完成以下PL/SQL块,功能是:创建一个函数dept_name,其功能是接受职员编号后返回职员所在部门名称。(注:部门名称在dept表中,而职员信息在emp表中,职员所在部门号的列名为deptno) 【正确答案】 CREATE OR REPLACE FUNCTION dept_name (emp_no NUMBER) RETURN VARCHAR2 AS dept_no NUMBER(2); result dept.dname%TYPE; BEGIN ____SELECT deptno INTO dept_no FROM emp WHERE empno=emp_no_______ SELECT dname INTO result FROM dept WHERE deptno = dept_no; ___RETURN result____; EXCEPTION WHEN OTHERS THEN RETURN NULL; END 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 jsd-02-202-5007 【知 识 点】 数据库-PLSQL-程序流程控制-循环结构、条件结构 【难易程度】 60 【题目描述】 对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理 【正确答案】 declare cursor c1 is select * from emp; c1rec c1%rowtype; v_loc varchar2(20); begin for c1rec in c1 loop select loc into v_loc from dept where deptno = c1rec.deptno; if c1rec.job = 'MANAGER' and v_loc = 'DALLAS' then update emp set sal = sal * 1.15 where empno = c1rec.empno; elsif c1rec.job='CLERK' and v_loc = 'NEW YORK' then update emp set sal = sal * 0.95 where empno = c1rec.empno; else null; end if; end loop; end; 【解释】无 【题目编号】 jsd-02-202-5008 【知 识 点】 数据库-PLSQL-程序流程控制、游标 【难易程度】 50 【题目描述】 对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪: 81年6月以前的加薪10% ;81年6月以后的加薪5% 【正确答案】 declare cursor c1 is select * from emp where mgr = (select empno from emp where ename='BLAKE'); --直接上级是'BLAKE'的所有员工 c1rec c1%rowtype; begin for c1rec in c1 loop if c1rec.hiredate < '01-6月-81' then update emp set sal = sal * 1.1 where empno = c1rec.empno; / 330 达内科技教学支持与督导部 else update emp set sal = sal * 1.05 where empno = c1rec.empno; end if; end loop; end; 【解释】无 【题目编号】 jsd-02-202-5009 【知 识 点】 数据库-PLSQL-程序流程控制-条件结构 【难易程度】 50 【题目描述】 编写一个触发器实现如下功能: 对修改职工薪金的操作进行合法性检查: a) 修改后的薪金要大于修改前的薪金 b) 工资增量不能超过原工资的10% c) 目前没有单位的职工不能涨工资 【正确答案】 create or replace trigger tr1 after update of sal on emp for each row begin if :new.sal <= :old.sal then raise_application_error(-20001,'修改后的薪金要大于修改前的薪金'); elsif :new.sal > :old.sal * 1.1 then raise_application_error(-20002,'工资增量不能超过原工资的10%'); elsif :old.deptno is null then raise_application_error(-20003,'没有单位的职工不能涨工资'); end if; end; 【解释】无 【题目编号】 jsd-02-202-5010 【知 识 点】 数据库-PLSQL-程序块编写 【难易程度】 50 【题目描述】 编写一个PL/SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。 【正确答案】 / 330 达内科技教学支持与督导部 DECLARE CURSOR c1 IS SELECT * FROM emp WHERE SUBSTR(ename,1,1)=′A′ OR SUBSTR(ename,1,1)=′S′ FOR UPDATE OF sal; BEGIN FOR i IN c1 LOOP UPDATE emp SET sal=NVL(sal,0)+NVL(sal,0)*0.1 WHERE CURRENT OF c1; END LOOP; END; 【解释】无 【题目编号】 jsd-02-202-5011 【知 识 点】 数据库-PLSQL-程序块编写 【难易程度】 40 【题目描述】 函数的helloworld:返回一个“helloworld”的字符串 【正确答案】 create or replace function hello_func return varchar2 is begin return "helloworld"; end; 执行函数 begin dbms_output.out_line(hello_func()); end; 或者: select hello_func() from dual; 【解释】无 【题目编号】 jsd-02-202-5012 【知 识 点】 数据库-PLSQL-程序流程控制-条件结构 【难易程度】 50 【题目描述】 更新指定员工工资,增加100;若该员工不存在则跑出用户自定义异常:no_result 【正确答案】 declare no_result exception; begin update employees set salary = salary+100 where employee_id=1001; if sql%notfound then / 330 达内科技教学支持与督导部 raise no_result; end if; exception when no_result then dbms_output.put_line("更新失败"); 【解释】无 【题目编号】 jsd-02-202-5013 【知 识 点】 数据库-PLSQL-程序流程控制-循环结构、条件结构 【难易程度】 60 【题目描述】 利用游标,调整公司中员工的工资: 工资范围 调整基数 0-5000 5% 5000-10000 3% 10000-150000 2% 15000- 1% 【正确答案】 declare cursor emp_sal_cursor is select salary,employee_if from employees; temp number(4,2); v_sal employees.salary%type; v_id employees.employee_id%type; begin open emp_sal_cursor; fetch emp_sal_cursor into v_sal,v_id; while emp_sal_cursor%found loop dbms_output.put_line(v_id || ':' v_sal); if v_sal <=5000 then temp :=0.05; elsif v_sal<=10000 then temp:=0.03; elsif v_sal<=15000 then temp:=0.02; else temp:=0.01; / 330 达内科技教学支持与督导部 end if; dbms_output.put_line(v_id||':'|| v_sal||','||temp); update employees set salary = salary*(1+temp) where employee_id=v_id; fetch emp_sal_cursor into v_sal,v_id; end loop; close emp_sal_cursor; end; update employees set salary = * (1 + decode(trunc(salary/5000), 0, 0.05,1, 0.03, 2, 0.02, 0.01)) 【解释】无 2.3 JDBC 【题目编号】 jsd-02-203-1001 【知 识 点】 数据库-JDBC-JDBC基础 【难易程度】 20 【题目描述】 提供 Java 存取数据库能力的包是() 【选项】 A.java.sql B.java.awt C.java.lang D.java.swing 【正确答案】 A 【解释】 java.sql 是 JDBC 的编程接口;java.awt 和 java.swing 是做图像界面的类库;java.lang: Java 编程语言进行程序设计的基础类。 【题目编号】 jsd-02-203-1002 【知 识 点】 数据库-JDBC-异常 【难易程度】 20 【题目描述】 下述哪个是JDBC编译的异常类型?( ) 【选项】 A SQLException B SQLError C SQLFatal D SQLTruncation 【正确答案】 A 【解释】无 【题目编号】 jsd-02-203-1003 【知 识 点】 数据库-JDBC-JDBC连接数据库 / 330 达内科技教学支持与督导部 【难易程度】 10 【题目描述】 JDBC 中,用于表示数据库连接的对象是。 【选项】 A.Statement B.Connection C. DriverManager D.PreparedStatement 【正确答案】 B 【解释】 Statement 和 PreparedStatement 都是用来发送和执行 SQL 语句的,DriverManager 管理一组驱动程序。 【题目编号】 jsd-02-203-4001 【知 识 点】 java基础-继承 【难易程度】 40 【题目描述】 写出执行下面代码后的正确结果 interface MyDB { public void getConnection(); } class MyDBDriver implements MyDB { public void getConnection() { System.out.println("getConnection()"); } } public class MyClass { public static void aMethod(MyDB db) { db.getConnection(); } public static void main(String args[]) { MyDBDriver db_driver = new MyDBDriver(); aMethod(db_driver); } } 【正确答案】 getConnection() 【解释】无 / 330 达内科技教学支持与督导部 【题目编号】 jsd-02-203-4002 【知 识 点】 数据库-JDBC-JDBC高级编程 【难易程度】 60 【题目描述】 Java 数据库编程包含哪些类?Java数据库编程的基本过程是什么? 【正确答案】 用到的类:Connection、ResultSet、错误!超链接引用无效。错误!超链接引用无效。Java 中访问数据库的步骤如下: 1)注册驱动; 2)建立连接; 3)创建 Statement; 4)执行 sql 语句; 5)处理结果集(若 sql 语句为查询语句); 6)关闭连接。 【解释】无 【题目编号】 jsd-02-203-4003 【知 识 点】 数据库-JDBC-PreparedStatement 【难易程度】 60 【题目描述】 Statement,PreparedStatement,CallableStatment 的区别。 【正确答案】 区别有以下几点: 1) Statement 是 PreparedStatement 和 CallableStatement 的父类; 2)Statement 是直接发送 Sql 语句到数据库,事先没有进行预编译。PreparedStatement 会将 sql 进 行预编译,当 sql 语句要重复执行时,数据库会调用以前预编译好的 sql 语句,所以 PreparedStatement 在性能方面会更好; 3)PreparedStatement 在执行 sql 时,对传入的参数可以进行强制的类型转换。以保证数据格式与底 层的数据库格式一致。 4)CallableStatement 适用与存储过程的查询表达语句 【解释】无 【题目编号】 jsd-02-203-4004 【知 识 点】 数据库-JDBC-事务处理 【难易程度】 50 【题目描述】 JAVA 中如何进行事务的处理? 【正确答案】 Connection 类中提供了 3 个事务处理方法: / 330 达内科技教学支持与督导部 setAutoCommit(Boolean autoCommit):设置是否自动提交事务,默认为自动提交,即为 true,通 过设置 false 禁止自动提交事务; commit():提交事务; rollback():回滚事务。 【解释】无 【题目编号】 jsd-02-203-5001 【知 识 点】 数据库-JDBC-JDBC连接数据库 【难易程度】 30 【题目描述】 请简单写出用 JAVA 连接 Oracle 数据库,并执行一条/SQL 语句。(只需要写关键几条语句即可,/SQL语句:SELECT*FROM t_users WHERE users_id=‘1111’) 【正确答案】 Class.forName("oracle.jdbc.OracleDriver"); String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String user = "scott"; String password = "tiger"; Connection con = DriverManager.getConnection(url, user, password); Statement stm = con.createStatement(); ResultSet rs = stm.executeQuery("SELECT*FROM t_users WHERE users_id='1111'"); while (rs.next()) { // 取值 } rs.close(); stm.close(); con.close(); 【解释】 / 330 第三部分:JavaWeb 3.1 Web基础 【题目编号】 jsd-03-301-1001 【知 识 点】 JavaWeb-Web基础-JavaScript-DHTML 【难易程度】 50 【题目描述】 在 DHTML 中把整个文档的各个元素作为对象处理的技术是:() 【选项】 A.HTML B.CSS C.DOM D.Script(脚本语言) 【正确答案】 C 【解释】 DOM:文档对象模型 【题目编号】 jsd-03-301-2001 【知 识 点】 JavaWeb-Web基础-HTML-HTML基本语法 【难易程度】 60 【题目描述】 在不指定特殊属性的情况下,哪几种 HTML 标签可以手动输入文本:() 【选项】 A. B. C. D.
【正确答案】 AB 【解释】无 【题目编号】 jsd-03-301-2002 【知 识 点】 JavaWeb-Web基础-HTML-标签-IFrame标签 【难易程度】 70 【题目描述】 关于 IFrame 表述正确的有:() 【选项】 A. 通过 IFrame,网页可以嵌入其他网页内容,并可以动态更改 B. 在相同域名下,内嵌的 IFrame 可以获取外层网页的对象 C. 在相同域名下,外层网页脚本可以获取 IFrame 网页内的对象 / 310 D. 可以通过脚本调整 IFrame 的大小 【正确答案】 CD 【解释】 IFRAME 元素也就是文档中的文档,或者好像浮动的框架(FRAME)。通过 iframe 对象所在页面的对象模型,你可以访问 iframe 对象的属性,但不能访问其内容。 【题目编号】 jsd-03-301-2003 【知 识 点】 JavaWeb-Web基础-HTML-表格 【难易程度】 60 【题目描述】 关于表格表述正确的有:() 【选项】 A. 表格中可以包含 TBODY 元素 B. 表格中可以包含 CAPTION 元素 C. 表格中可以包含多个 TBODY 元素 D. 表格中可以包含 COLGROUP 元素 E. 表格中可以包含 COL 元素 【正确答案】 ACDE 【解释】 caption 标签用于定义一个表格标题。标签只能出现在 table 标签中,且必须紧随 table标签之后。每个表格只能定义一个标题。使用 标签,可以将表格分为一个单独的部分。 标签可将表格中的一行或几行合成 一组。 利用标签可以把表格按列划分为若干组,每组可包含一列或几列,然后可以对各组分别设 置格式。 通常一个列组的各列格式是相同的,如果列与列有差异,可通过在组内加入标签进行设置。 标签只能在标签和标签中使用。 【题目编号】 jsd-03-301-2004 【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript内置对象 【难易程度】 60 【题目描述】 下面属于 javascript 对象的有:( ) 【选项】 A. Window B. Document C. FormD. String E. Navigator 【正确答案】 ACE 【解释】无 / 330 问答 【题目编号】 jsd-03-301-4001 【知 识 点】 JavaWeb-Web基础-HTML-表单 【难易程度】 70 【题目描述】 请写出一段表单提交的 HTML 代码,表单名称为 form1,提交方式为 post,提交地址为 submit.asp 【正确答案】 发邮件 【解释】无 【题目编号】 jsd-03-301-4003 【知 识 点】 JavaWeb-Web基础-HTML-标签-meta标签 【难易程度】 60 【题目描述】 请说明 meta 标签的作用。 【正确答案】 meta 是用来在 HTML 文档中模拟 HTTP 协议的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name 和 http-equiv。name 属性主要用于描述网 页,对应于 content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使 用网上机器人自动查找 meta 值来给网页分类)。这其中最重要的是 description(站点在搜索引擎上 的描述)和 keywords(分类关键词),所以应该给每页加一个 meta 值。比较常用的有以下几个: name 属性 1).<meta name="Generator" contect="">用以说明生成工具(如 Microsoft FrontPage 4.0)等; 2).<meta name="KEYWords" contect="">向搜索引擎说明你的网页的关键词; / 330 3).<meta name="DEscription" contect="">告诉搜索引擎你的站点的主要内容; 4).<meta name="Author" contect="你的姓名">告诉搜索引擎你的站点的制作的作者; 5).<meta name="Robots" contect= "all|none|index|noindex|follow|nofollow"> 其中的属性说明如下: 设定为 all:文件将被检索,且页面上的链接可以被查询; 设定为 none:文件将不被检索,且页面上的链接不可以被查询; 设定为 index:文件将被检索; 设定为 follow:页面上的链接可以被查询; 设定为 noindex:文件将不被检索,但页面上的链接可以被查询; 设定为 nofollow:文件将不被检索,页面上的链接可以被查询。 6).http-equiv 属性 A. <meta http-equiv="Content-Type" contect="text/html";charset=gbk">和 <meta http-equiv="Content-Language" contect="zh-CN">用以说明主页制作所使用的文字以及语言; B. <meta http-equiv="Refresh" contect="n;url=http://yourlink">定时让网页在指定的时 间 n 内,跳转到页面 http;//yourlink; C. <meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于设定 网页的到期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用 GMT 时间格式; D. <meta http-equiv="Pragma" contect="no-cache">是用于设定禁止浏览器从本地机的缓存 中调阅页面内容,设定后一旦离开网页就无法从 Cache 中再调出; E. <meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie 设定, 如果网页过期,存盘的 cookie 将被删除。需要注意的也是必须使用 GMT 时间格式; F. <meta http-equiv="Pics-label" contect="">网页等级评定,在 IE 的 internet 选项中有 一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过 meta 属性来设置的; G. <meta http-equiv="windows-Target" contect="_top">强制页面在当前窗口中以独立页面显示,可以防止自己的网页被别人当作一个 frame 页调用; H. <meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion=50)">和<meta http-equiv="Page-Exit" contect="revealTrans(duration=20,transtion=6)">设定进入和离开页面时的特殊效果,这个功能即 FrontPage 中的“格式/网页过渡”,不 过所加的页面不能够是一个 frame 页面。 【解释】无 【题目编号】 jsd-03-301-4004 【知 识 点】 JavaWeb-Web基础-HTML-表单-隐藏控件 【难易程度】 40 【题目描述】 请写出一个隐藏控件。 / 330 【正确答案】 【解释】无 【题目编号】 jsd-03-301-4005 【知 识 点】 JavaWeb-Web基础-HTML基本语法 【难易程度】 40 【题目描述】 如何将 HTML 页面的标题设置为“数字天堂”。 【正确答案】 数字天堂body 部分 【解释】无 【题目编号】 jsd-03-301-4006 【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript事件 【难易程度】 30 【题目描述】 请写出 JavaScript 中常用的三种事件。 【正确答案】 onclick,onblur,onChange 【解释】无 【题目编号】 jsd-03-301-4007 【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript基础语法 【难易程度】 70 【题目描述】 请写出一段 JavaScript 代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用户点击的是“确认”还是“取消”。 【正确答案】 / 330 click 【解释】无 【题目编号】 jsd-03-301-4008 【知 识 点】 JavaWeb-Web基础-JavaScript内置对象 【难易程度】 60 【题目描述】 JavaScript 如何实现计时功能。 【正确答案】 【解释】无 【题目编号】 jsd-03-301-4009 【知 识 点】 JavaWeb-Web基础-JavaScrip-定义数组 【难易程度】 40 / 330 【题目描述】 JavaScript 如何定义数组。 【正确答案】 var arrTest=new Array(); 【解释】无 【题目编号】 jsd-03-301-4010 【知 识 点】 JavaWeb-Web基础-JavaScript 【难易程度】 30 【题目描述】 JavaScript 能否操作 cookie 和 session? 【正确答案】 JavaScript 可以操作 cookie,但是不能操作 session 【解释】无 【题目编号】 jsd-03-301-4011 【知 识 点】 JavaWeb-Web基础-windows对象-窗口与对话框 【难易程度】 30 【题目描述】 JS 中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么? 【正确答案】 Alert confirm prompt 【解释】无 【题目编号】 jsd-03-301-4012 【知 识 点】 JavaWeb-Web基础-JavaScript-document对象 【难易程度】 50 【题目描述】 如何获得
This is first layer
中的值? 【正确答案】 【解释】无 3.2 Servlet与JSP 【题目编号】 jsd-03-302-1001 / 330 【知 识 点】 JavaWeb-Servlet与JSP- Session 【难易程度】 30 【题目描述】 以下哪些接口能够实现对 Web 访问者的身份认证( )? 【选项】 A. Http Servlet Request B. Http Servlet Response C. Http Session D. Http Servlet 【正确答案】 C 【解释】 Web访问者身份验证主要靠session进行身份识别,获得session的方法如下:HttpSession session = request.getSession(); 【题目编号】 jsd-03-302-1002 【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-获得请求参数 【难易程度】 40 【题目描述】 从以下哪一个选项中可以获得 Servlet 的初始化参数( )。 【选项】 A.Servlet B.ServletContext C.ServletConfig D.GenericServlet 【正确答案】 C 【解释】 servlet 的生命周期的方法中有一个 init 方法,其中一个重载的 init 方法的参数为 ServletConfig可以获取初始化参数。 【题目编号】 jsd-03-302-1003 【知 识 点】 JavaWeb-Servlet与JSP-servlet工作原理-获得请求参数 【难易程度】 20 【题目描述】 哪一个对象可以用于获得浏览器发送的请求( )。 【选项】 A.HttpServletRequest B.HttpServletResponse C.HttpServlet / 330 D.Http 【正确答案】 A 【解释】 HttpServletRequest 中有一些方法可以获取浏览器发送的请求信息。 【题目编号】 jsd-03-302-1004 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象 【难易程度】 30 【题目描述】 下列哪个为JSP 的隐含对象( )。 【选项】 A.env B.page C.jspinfo D.context 【正确答案】 B 【解释】 JSP 有九个隐藏对象。 request 对象:保存了很多客户端请求的信息; response 对象:生成服务器端响应,然后将响应结果发送到客户端; out 对象:表示输出流,此输出流将作为请求发送到客户端; session 对象:我们写个对象放在这个 session 对象中,这个对象就在我们的会话中都存在; application 对象:我们写个对象放在这个 application 对象中,这个对象就在整个应用程序中都存在; pageContext 对象:相当于当前页面的容器,可以访问当前页面的所有对象; paget 对象:一般我们使用 Page 指令来替代使用这个对象; exception 对象:用来处理异常的; config 对象:一样的我们在页面中是使用很少的,一般会在 Servlet 中使用这个。 【题目编号】 jsd-03-302-1005 【知 识 点】 JavaWeb-Servlet与JSP-EL表达式 【难易程度】 30 【题目描述】 哪一个不是 EL 定义的隐式对象? ( ) 【选项】 A.cookie B. pageContext C. attributes D. initParam 【正确答案】 C 【解释】 1)pageContext:JSP 页的上下文。它可以用于访问 JSP 隐式对象。 2)Param:将请求参数名称映射到单个字符串数(通过调用 ServletRequest.getParameter(String name) 获得)。getParameter (String) 方法返回带有特定名 / 330 称的参数。表达式 $(param.name)相当于 request.getParameter (name)。 3)paramValues:将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。 4)header 将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name)获得)。表达式 ${header.name} 相当于 request.getHeader(name)。 5)headerValues 将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获 得 )。 它 与 头 隐 式 对 象 非 常 类 似 。 表 达 式 ${headerValues.name} 相 当 于 request.getHeaderValues(name)。 6)cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个 同名的 cookie,则应该使用 ${headerValues.name} 表达式。 7)initParam 将上下文初始化参数名称映射到单个值 (通过调用ServletContext.getInitparameter(String name) 获得)。 8)pageScope 将页面范围的变量名称映射到其值。 例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。 9)requestScope 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL表达式可以使用 ${requestScope.objectName} 访问一个JSP请求范围的对象,还可以使用${requestScope.objectName.attributeName} 访问对象的属性。 10)sessionScope 将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例 11)applicationScope 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。 【题目编号】 jsd-03-302-1006 【知 识 点】 JavaWeb-Servlet与JSP-JSTL 【难易程度】 30 【题目描述】 下面哪些属于 JSTL 中的表达式操作标签。 【选项】 A. B. C. D. 【正确答案】 A 【解释】无 / 330 【题目编号】 jsd-03-302-1007 【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-请求方式 【难易程度】 40 【题目描述】 在 Servlet 处理请求的方式为。 【选项】 A. 以进程的方式 B. 以程序的方式 C. 以线程的方式 D. 以响应的方式 【正确答案】 C 【解释】 Servlet 采用多线程来处理多个请求同时访问,Servlet 容器维护了一个线程池来服务请求。 【题目编号】 jsd-03-302-1008 【知 识 点】 JavaWeb-Servlet与JSP-Servlet 【难易程度】 60 【题目描述】 javax.Servlet 的包中,属于类的是( )。 【选项】 A. Servlet B. GenericServlet C. ServletRequest D. ServletContext 【正确答案】 B 【解释】 ServletContext 和 ServletRequest 是该包下的接口 【题目编号】 jsd-03-302-1009 【知 识 点】 JavaWeb-Servlet与JSP-Cookie 【难易程度】 50 【题目描述】 如果没有指定 Cookie 的时效,那么默认的时效是。 【选项】 A.一天 B. 永不过期 C.会话级别 D.一分钟 【正确答案】 C 【解释】 这是 API 的原文:By default, -1 indicating the cookie will persist until browser shutdown. 【题目编号】 jsd-03-302-1010 【知 识 点】 JavaWeb-Servlet与JSP-Servlet容器 【难易程度】 70 / 330 【题目描述】 实现下列哪一种接口的对象,并不需要在 web.xml 文件内进行额外的设定,Servlet 容器就能够回应该对象加入 HTTP 会话所发生的事件? 【选项】 A.ServletContextListener B.HttpSessionListener C.HttpSessionAttributeListener D.HttpSessionBindingListener 【正确答案】 D 【解释】 HttpSessionListener 只 需 要 设 置 到 web.xml 中就可以监听整个应用中的所 有 session 。HttpSessionBindingListener 必须实例化后放入某一个 session 中,才可以进行监听 【题目编号】 jsd-03-302-1011 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP标签 【难易程度】 50 【题目描述】 下列哪个为 JSP 的小脚本的标签? 【选项】 A.<% %> B.<@ %> C.<%! %> D.<%-- %> 【正确答案】 A 【解释】无 【题目编号】 jsd-03-302-1012 【知 识 点】 JavaWeb-Servlet与JSP-JSP指令 【难易程度】 50 【题目描述】 以下不属于 JSP 的标准指令的是。 【选项】 A.Taglib B.Include C.Import D.Page 【正确答案】 C 【解释】 import 是 page 指令的一个属性。 【题目编号】 jsd-03-302-1013 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象 【难易程度】 60 【题目描述】 对于每一个网站访问用户都要访问的变量,应该将它设为变量( )。 【选项】 / 330 A. Session B. Reques C. Response D. Application 【正确答案】 D 【解释】 Application 应用程序级变量 【题目编号】 jsd-03-302-1014 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP页面中的java代码 【难易程度】 60 【题目描述】 察看下列 JSP 内容 <% for (int i=0;i<3;i++){ %> out.print(i*2); <% } %> 当这个 JSP 被运行时,其结果是什么? 【选项】 A.此 JSP 因为语法错误,无法运行 B.显示出 0,2,4 C.显示出 0,2,4,6 D.显示出 out.print(i*2) out.print(i*2) out.print(i*2) 【正确答案】 D 【解释】无 【题目编号】 jsd-03-302-1015 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象 【难易程度】 60 【题目描述】 假设 A.jsp 内设定一个元素: 下列哪一个为真? 【选项】 A.bean1 的存取范围(scope)默认为 application B.在 HTTP 会话内可以存取 bean1 C.只有在 A.jsp 内可以存取 bean1 D.在 A.jsp 所属的 Web 应用程序内均可存取 bean1 【正确答案】 C 【解释】 bean1 的存取范围(scope)默认为 page;(题有一点问题 javabean 的规则是要放在一 / 330 个包中) 【题目编号】 jsd-03-302-1016 【知 识 点】 JavaWeb-Servlet与JSP-Http协议 【难易程度】 30 【题目描述】 Http 缺省的请求方法是。 【选项】 A.PUT B.GET C.POST D.TRACE 【正确答案】 B 【解释】无 【题目编号】 jsd-03-302-1017 【知 识 点】 JavaWeb-Servlet与JSP-Servlet-请求方式 【难易程度】 30 【题目描述】 HttpServlet 中,用来处理 POST 请求的方法是 【选项】 A. doHead B. doGet C. doPost D. doPut 【正确答案】 C 【解释】无 【题目编号】 jsd-03-302-1018 【知 识 点】 JavaWeb-Servlet与JSP-Cookie 【难易程度】 50 【题目描述】 如何创建 Cookie? 【选项】 A. 使用 new Cookie 语句 B. 调用 response.addCookie 方法 C. 使用 Cookie 的 setMaxAge 方法 D. setCookie 方法 【正确答案】 B 【解释】无 【题目编号】 jsd-03-302-1019 【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-Servlet生命周期 【难易程度】 60 【题目描述】 有关 Servlet 的生命周期说法正确的有( )。 【选项】 / 330 A.Servlet 的生命周期由 Servlet 实例控制。 B .init() 方法在创建完Servlet实例后对其进行初始化,传递的参数为实现ServletContext 接口的对象。 C.service()方法响应客户端发出的请求。 D.destroy()方法释放 Servlet 实例。 【正确答案】 C 【解释】 Servlet 生命周期就是指创建 Servlet 实例后响应客户请求直至销毁的全过程。 Serlvet 生命周期的三个方法:init()-->service()-->destroy(),Servlet 生命周期的各个阶段: 实例化:Servlet 容器创建Servlet 类的实例对象;初始化:Servlet 容器调用 Servlet 的 init()方法;服务:如果请求 Servlet,则容器调用 service()方法;销毁:销毁实例之前调用 destroy()方法。 【题目编号】 jsd-03-302-1020 【知 识 点】 JavaWeb-Servlet与JSP-Servlet书写 【难易程度】 250 【题目描述】 以下 web.xml 片断( )正确地声明 servlet 上下文参数 【选项】 A MAX 100 B C D MAX 100 【正确答案】 A / 330 【解释】无 【题目编号】 jsd-03-302-1021 【知 识 点】 JavaWeb-Servlet与JSP-session 【难易程度】 40 【题目描述】 以下( )可用于检索 session 属性 userid 的值。 【选项】 A.session. getAttribute (“userid”); B.session. setAttribute (“userid”); C.request. getParameter (“userid”); D.request. getAttribute (“userid”); 【正确答案】 A 【解释】无 【题目编号】 jsd-03-302-1022 【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理 【难易程度】 70 【题目描述】 考虑下面两个 JSP 文件代码片断: test1.jsp: <% pageContext.setAttribute(”ten”,new Integer(10));%> //1 test2.jsp: 数字为:<%= pageContext.getAttribute(”ten”)%> 以下( )放置在 test1.jsp 中的//1 处,当请求 test1.jsp 时正确输出 test2.jsp 中的内容。 【选项】 A. B. C.<%@ include file=”test2.jsp” %> D.由于 pageContext对象的scope属性为page,所以test2.jsp不能访问test1.jsp定义的属性 【正确答案】 C / 330 【解释】 pageContext setAttribute(”ten”,new Integer(10));能取到的范围是 page,也就是当前页面。<%@includefile=””%>:编译时包含,静态的,JSP 引擎将对所包含的文件进行语法分析。 :运行时包含,静态和动态的都可以,JSP 引擎不对所包含的文件进行语法分析,只获得处理的结果 【题目编号】 jsd-03-302-1023 【知 识 点】 JavaWeb-Servlet与JSP- JSP书写 【难易程度】 50 【题目描述】 考虑下面 JSP 文件代码片断: 以下( )代码片断放置在 test2.jsp 中不会导致错误。 【选项】 A. B. C.<%=request.getParameter(“username”)%> D.<%=request.getAttribute(“username”)%> 【正确答案】 C 【解释】无 【题目编号】 jsd-03-302-1024 【知 识 点】 JavaWeb-Servlet与JSP-JSP书写 【难易程度】 70 【题目描述】 以下是 login.jsp 文件的代码片断: / 330 <%@ page isELIgnored="false"%>

用户名为: ${param.name} 以下( )描述正确。 【选项】 A.发生运行错误 B.页面会出现一文本框,并且文本框中内容为${param['name']} C.当用户输入名字并单击“提交”按钮时,在同一页面中的“用户名为:”字样后面会显示用户输入 的内容 D.当用户输入名字并单击“提交”按钮时,在同一页面中的“用户名为:”字样后面会显示${param.name} 【正确答案】 C 【解释】 在每个 JSP 中也可以指定是否该 JSP 使用 EL。在 page directive 中的 isELIgnored 属性用来指定是 否忽略。格式为:<%@ page isELIgnored="true|false"%> 如果设定为真,那么 JSP 中的表达式被当成字符串处理。 【题目编号】 jsd-03-302-1025 【知 识 点】 JavaWeb-Servlet与JSP-JSTL 【难易程度】 60 【题目描述】 下面代码片断在浏览器中输出结果为( )。 2+3 【选项】 A.0 B.5 C.2+3 D.无输出 【正确答案】 C / 330 【解释】 标签主要用来将变量保存到 JSP 的会话中或 JavaBean 的属性中。的语法格式为: 上述的表达式实现的功能是将value 的值储存至范围为scope的varName变量之中,还可以将value的值储存至target对象的属性中.如果题中 2+3 改成${2+3}那么结果就是5. 【题目编号】 jsd-03-302-1026 【知 识 点】 JavaWeb-Servlet与JSP-过滤器 【难易程度】 60 【题目描述】 编写一个 Filter,除继承 HttpServlet 类外还需要( )。 【选项】 A.继承 Filter 类 B.实现 Filter 接口 C.继承 HttpFilter 类 D.实现 HttpFilter 接口 【正确答案】 B 【解释】无 【题目编号】 jsd-03-302-1027 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP指令 【难易程度】 50 【题目描述】 在 jsp 中,page 指令的()属性用来引入需要的包或类。 【选项】 A. extends B. import C. language D. contentType 【正确答案】 B 【解释】无 【题目编号】 jsd-03-302-1028 【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理 【难易程度】 30 【题目描述】 Servlet 程序的入口点是?( ) 【选项】 A.init() B. main() C. service() D. doGet() 【正确答案】 C 【解释】无 【题目编号】 jsd-03-302-1029 / 330 【知 识 点】 JavaWeb-Servlet与JSP-Cookie 【难易程度】 50 【题目描述】 不能在不同用户之间共享数据的方法是?( ) 【选项】 A. 通过 cookie B. 利用文件系统 C. 利用数据库 D. 通过 ServletContext 对象 【正确答案】 A 【解释】无 【题目编号】 jsd-03-302-1030 【知 识 点】 JavaWeb-Servlet与JSP-servlet、Session 【难易程度】 70 【题目描述】 下面的哪个方法在 servlet 的 response 的输出流在 URL 中保存 Session ID。( )【选项】 A.The encodeURL method of the HttpServletRequest interface. B. The encodeURL method of the HttpServletResponse interface. C.The rewriteURL method of the HttpServletRequest interface. D. The rewriteURL method of the HttpServletResponse interface. 【正确答案】 B 【解释】无 【题目编号】 jsd-03-302-1031 【知 识 点】 JavaWeb-Servlet与JSP-Servlet 【难易程度】 90 【题目描述】 看下面这个类 public class IfAttributsChanged implements ServletContextAttributeListener{ public void attributeAdded(ServletContextAttributeEvent scab){ System.out.println(“加入一个属性”); } public void attributeRemoved(ServletContextAttributeEvent scab){ System.out.println(“删除一个属性”); } } 关于 IfAttributsChanged 类的叙述,下列哪一个为真? 【选项】 A. 此类可以成功编译 B.此类无法成功编译,原因是缺少 attributeChanged()方法。 / 330 C. 此类无法成功编译,原因是缺少 attributeReplaced()方法。 D. 此类无法成功编译,原因是缺少 attributeUpdated()方法。 【正确答案】 C 【解释】无 【题目编号】 jsd-03-302-1032 【知 识 点】 JavaWeb-Servlet与JSP-JSP书写 【难易程度】 60 【题目描述】 在a.jsp中有代码片段如下: loginName: 在b.jsp 中加入下列哪个代码,可以直接在界面上输出由a.jsp页面输入的loginName 的值。( ) 【选项】 A <%=(String) request.getParameter("loginName")%> B <%=(String) request.getAttribute("loginName")%> C <%String name=request.getParameter("loginName"); out.println(name);%> D <%String name=request.getAttribute ("loginName"); out.println(name);%> 【正确答案】 C 【解释】无 【题目编号】 jsd-03-302-1033 【知 识 点】 JavaWeb-Servlet与JSP-servlet书写 【难易程度】 50 【题目描述】 假设在helloapp应用中有一个HelloServlet类,它在web.xml文件中的配置如下:( ) HelloServlet org.javathinker.HelloServlet HelloServlet /hello 那么在浏览器端访问HelloServlet的URL是什么? / 330 【选项】 A. http://localhost:8080/HelloServlet B. http://localhost:8080/helloapp/HelloServlet C. http://localhost:8080/helloapp/org/javathinker/hello D. http://localhost:8080/helloapp/hello 【正确答案】 D 【解释】无 【题目编号】 jsd-03-302-1034 【知 识 点】 JavaWeb-Servlet与JSP-HTTP协议 【难易程度】 70 【题目描述】 以下哪一个HTTP协议的状态码,表示请求的网页不存在( ) 【选项】 A 200 B 400 C 500 D 404 【正确答案】 D 【解释】无 多选 【题目编号】 jsd-03-302-2001 【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理 【难易程度】 40 【题目描述】 运行 jsp 需要安装( )Web 服务器。 【选项】 A.Apache B.tomcat C.WebLogic D.IIS 【正确答案】 BC 【解释】 Apache 是 PHP 程序运行的服务器,IIS 是.net 程序运行的服务器。 【题目编号】 jsd-03-302-2002 【知 识 点】 JavaWeb-Servlet与JSP-URL重写 【难易程度】 40 【题目描述】 / 330 在服务器的网络编程中,解决会话跟踪的方法有( ): 【选项】 A. 使用 Cookie。 B. 使用 URL 重写。 C. 使用隐藏的表单域。 D. 以上方法都不能单独使用。 【正确答案】 ABC 【解释】 URL 重写就是首先获得一个进入的 URL 请求然后把它重新写成网站可以处理的另一个 URL 的过程 隐藏域是在页面级保存信息。与其他用户标准控件的区别是,隐藏域不被呈现在页面中。当页面提交 的时候,隐藏域中的值将被一同发送给服务端。 Cookie 是以文本存储于计算机中,使用 name-value 匹配。一般用户存储标识用户信息 【题目编号】 jsd-03-302-2003 【知 识 点】 JavaWeb-Servlet与JSP-监听器 【难易程度】 70 【题目描述】 与 HttpSessionListener 接口有关的方法是( )。 【选项】 A. sessionInitialized() B. sessionCreated() C. sessionFinialized() D. sessionDestroyed() 【正确答案】 BD 【解释】无 【题目编号】 jsd-03-302-2004 【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理-JSP生命周期 【难易程度】 40 【题目描述】 关于 JSP 生命周期的叙述,下列哪些为真?( ) 【选项】 A.JSP 会先解释成 Servlet 源文件,然后编译成 Servlet 类文件 B.每当用户端运行 JSP 时,jspInit()方法都会运行一次 C.每当用户端运行 JSP 时,_jspService()方法都会运行一次 D.每当用户端运行 JSP 时,jspDestroy()方法都会运行一次 【正确答案】 AC 【解释】无 / 330 【题目编号】 jsd-03-302-2005 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP页面中的java代码 【难易程度】 60 【题目描述】 下列 JSP 代码: <%for(int i = 0; i < 10; i++) { //1 }%> 以下( )可放置在//1 处,不会发生编译错误。 【选项】 A.<%= i %> B.i C. %><%= i %><% D. 不写任何内容 【正确答案】 CD 【解释】无 【题目编号】 jsd-03-302-2006 【知 识 点】 JavaWeb-Servlet与JSP-JSP隐式对象 【难易程度】 50 【题目描述】 有关 JSP 隐式对象,以下( )描述正确。 【选项】 A.隐式对象是 WEB 容器加载的一组类的实例,可以直接在 JSP 页面使用 B.不能通过 config 对象获取 ServletContext 对象 C.response 对象通过 sendRedirect 方法实现重定向 D.只有在出错处理页面才有 exception 对象 【正确答案】 ACD 【解释】 可以通过 config 对象获取 ServletContext 对象。 问答 【题目编号】 jsd-03-302-4001 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象 【难易程度】 40 / 330 【题目描述】 jsp 有哪些内置对象?作用分别是什么?(至少三个) 【正确答案】 1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于 获取 cookie, header 和 session 数据的有用的方法。 2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)。 3)out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 4)pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字 空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。 6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息。 7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。 8)page 表示从该页面产生的一个 servlet 实例。 9)exception 针对错误网页,未捕捉的例外 【解释】无 【题目编号】 jsd-03-302-4002 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象 【难易程度】 70 【题目描述】 JSP 页面之间传递参数的方法有哪些? 【正确答案】 1)request 2)session 3)application 4)提交表单 5)超链接 【解释】无 【题目编号】 jsd-03-302-4003 【知 识 点】 JavaWeb-Servlet与JSP-转发和重定向 【难易程度】 30 【题目描述】 forward 和 redirect 的区别 【正确答案】 forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL,把那 个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是 / 330 从哪儿来的,所以它的地址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码, 告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且从浏览器 的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward() 方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的 资源,则必须使用 sendRedirect()方法。 【解释】无 【题目编号】 jsd-03-302-4004 【知 识 点】 JavaWeb-Servlet与JSP-JSP、Servlet 【难易程度】 50 【题目描述】 描述 JSP 和 Servlet 的区别、共同点、各自应用的范围 【正确答案】 JSP 在本质上就是 SERVLET,但是两者的创建方式不一样.Servlet 完全是 JAVA 程序代码构成, 擅长于流程控制和事务处理,通过 Servlet 来生成动态网页很不直观.JSP 由 HTML 代码和 JSP 标签构 成,可以方便地编写动态网页.因此在实际应用中采用 Servlet 来控制业务流程,而采用 JSP 来生成 动态网页. 【解释】无 【题目编号】 jsd-03-302-4005 【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-Servlet生命周期 【难易程度】 60 【题目描述】 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别? 【正确答案】 Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候 调用其 destroy 方法。 与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可 以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销 毁,所以效率上低于 servlet。 【解释】无 【题目编号】 jsd-03-302-4006 【知 识 点】 JavaWeb-Servlet与JSP-get、post 【难易程度】 50 【题目描述】 get 和 post 的区别? / 330 【正确答案】 Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。 二者主要区别如下: 1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传数据; 2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者 使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按 照变量和值相对应的方式,传递到 action 所指向 URL; 3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说 都是不可见的; 4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在 上传文件只能使用 Post; 5)Get 限制 Form 表单的数据集必须为 ASCII 字符,而 Post 支持整个 ISO10646 字符集; 6)Get 是 Form 的默认方法。 【解释】无 【题目编号】 jsd-03-302-4007 【知 识 点】 JavaWeb-Servlet与JSP-Servlet线程安全 【难易程度】 60 【题目描述】 Servlet 是线程安全吗?以下代码中使用 synchronized 关键字的意义是什么? Synchronized (aList){ aList.remove (1); } 【正确答案】 默认不是线程安全的,但是 servlet 实现了 SingthreadModel 接口 就能单线程执行。此题中 代码的意思是给 aList 对象加同步锁,保证 aList 对象在多线程任务环境中,每次只能够有一个线程 调用 remove 方法。从而提高对 aList 对象操作的安全性和正确性 【解释】无 【题目编号】 jsd-03-302-4008 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法 【难易程度】 60 【题目描述】 JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? 【正确答案】 动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态 INCLUDE 用 include / 330 伪码实现,它不会检查所含文件的变化,适用于包含静态页面%@include file="head.htm" % 【解释】无 【题目编号】 jsd-03-302-4009 【知 识 点】 JavaWeb-Servlet与JSP-Session 【难易程度】 70 【题目描述】 Session 的基本原理是什么? 【正确答案】 Session 对象的原理在于,服务器可以为客户端创建并维护一个所谓的 Session 对象,用于存放 数据。在创建 Session 对象的同时,服务器将会为该 Session 对象产生一个唯一编号,这个编号称之 为 SessionID,服务器以 Cookie 的方式将 SessionID 存放在客户端。当浏览器再次访问该服务器时, 会将 SessionID 作为 Cookie 信息带到服务器,服务器可以通过该 SessionID 检索到以前的 Session 对象,并对其进行访问。需要注意的是,此时的 Cookie 中仅仅保存了一个 SessionID,而相对较多的 会话数据保存在服务器端对应的 Session 对象中,由服务器来统一维护,这样一定程度保证了会话数 据安全性,但增加了服务器端的内存开销。存放在客户端的用于保存 SessionID 的 Cookie 会在浏览 器关闭时清除。我们把用户打开一个浏览器访问某个应用开始,到关闭浏览器为止交互过程称为一个 “会话”。在一个“会话”过程中,可能会向同一个应用发出了多次请求,这些请求将共享一个 Session 对象,因为这些请求携带了相同的 SessionID 信息。Session 对象的正常使用要依赖于 Cookie。如果 考虑到客户端浏览器可能出于安全的考虑禁用了 Cookie,应该使用 URL 重写的方式使 Session 在客户端禁用 Cookie 的情况下继续生效。 【解释】无 【题目编号】 jsd-03-302-4010 【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP动作 【难易程度】 40 【题目描述】 jsp 有哪些动作?作用分别是什么? 【正确答案】 JSP 共有以下 6 种基本动作: jsp:include:在页面被请求的时候引入一个文件; jsp:useBean:寻找或者实例化一个 JavaBean。; jsp:setProperty:设置 JavaBean 的属性。; jsp:getProperty:输出某个 JavaBean 的属性; jsp:forward:把请求转到一个新的页面; jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。 【解释】无 【题目编号】 jsd-03-302-4011 / 330 【知 识 点】 JavaWeb-Servlet与JSP-Cookie、Session 【难易程度】 60 【题目描述】 解释四种会话跟踪技术? 【正确答案】 隐藏表单域、URL 重写,Cookie、Session。 1)隐藏表单域:,非常适合步需要大量数据存储的会话应用。 2)URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。 3)Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个 Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至 在客户端计算机重启后它仍可以保留其值。 4)Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话 【解释】无 【题目编号】 jsd-03-302-4012 【知 识 点】 JavaWeb-Servlet与JSP-Servlet结构 【难易程度】 70 【题目描述】 请画出Servlet 2.2以上Web Application的基本目录结构 【正确答案】 目录结构如下图所示: webapps | Applocation | __________________ | | JSP页面 WEB-INF | ___________________ | | | classes lib web.xml 【解释】无 【题目编号】 jsd-03-302-5001 【知 识 点】 JavaWeb-Servlet与JSP-JSP书写 / 330 【难易程度】 60 【题目描述】 在当前的 JSP 网页里,提交用户名和密码,提交给 post . jsp, post . jsp 打印出用户名和密码 并返回给浏览器。请写出 post . jsp 【正确答案】 假设页面用户名和密码在 login.jsp 里,login.jsp 页面代码如下:
post.jsp 页面代码: <% String userName=request.getParameter(“userName”); String pwd=request.getParameter(“pwd”); out.println(“用户名:”+userName+”,密码:”+pwd); %> 【解释】无 3.3 Ajax与Jquery 【题目编号】 jsd-03-303-4001 【知 识 点】 JavaWeb-Ajax与Jquery-Ajax 【难易程度】 50 【题目描述】 什么是 AJAX? 【正确答案】 Ajax 的全称是:AsynchronousJavaScript And XML。Ajax 不是一个技术,它实际上是几种技 术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。Ajax 包括: XHTML 和 CSS 使 用文档对象模型(Document Object Model)作动态显示和交互 使用 XML 和 XSLT 做数据交互和操作 使 用 XMLHttpRequest 进行异步数据接收 使用 JavaScript 将它们绑定在一起 。 3.4 Web应用 【题目编号】 jsd-03-304-1001 【知 识 点】 JavaWeb-web应用 / 330 【难易程度】 40 【题目描述】 假设 web 应用的文档根目录为 MyApp,那么可以从哪里找到 database.jar 文件( )。 【选项】 A. MyApp 目录下 B. MyApp\images 目录下 C. MyApp\WEB-INF 目录下 D. MyApp\WEB-INF\lib 目录下 【正确答案】 D 【解释】 Web 工程的 lib 是放置.jar 文件的地方。 【题目编号】 jsd-03-304-1002 【知 识 点】 JavaWeb-Web应用-MVC 【难易程度】 50 【题目描述】 在 MVC 设计模式中,JavaBean 的作用是。 【选项】 A. Controller B. Model C. 业务数据的封装 D. View 【正确答案】 B 【解释】 【题目编号】 jsd-03-304-1003 【知 识 点】 JavaWeb-Web应用-JNDI 【难易程度】 20 【题目描述】 如何取得数据源( )。 【选项】 A.通过 Http B.通过 ftp C.JNDI D.通过 Connection 对象 【正确答案】 C 【解释】 在服务器上配置好数据以后,通过 JNDI 技术获取到数据源。 JNDI:Java Naming and Directory Interface 一种标准的 Java 命名系统接口。 【题目编号】 jsd-03-304-1004 / 330 【知 识 点】 JavaWeb-Web应用-J2EE 【难易程度】 50 【题目描述】 在 J2EE 中属于 Web 层的组件有( ) A. HTML B. EJB C. Applet D. JSP 【正确答案】 D 【解释】无 【题目编号】 jsd-03-304-1005 【知 识 点】 JavaWeb-Web应用-J2EE 【难易程度】 50 【题目描述】 在 J2EE 的 Web 应用中,编译后的 class 文件存放的目录为 ( ) 【选项】 A. classes 目录 B. images 目录 C. jar 目录 D. 任意位置 【正确答案】 A 【解释】 【题目编号】 jsd-03-304-1006 【知 识 点】 JavaWeb-Web应用 【难易程度】 40 【题目描述】 关于 Web 应用程序,下列说法错误的是( )。 【选项】 A.WEB-INF 目录存在于 web 应用的根目录下 B. WEB-INF 目录与 classes 目录平行 C. web.xml 在 WEB-INF 目录下 D. Web 应用程序可以打包为 war 文件 【正确答案】 B 【解释】 classes 目录在 WEB-INF 目录下。 【题目编号】 jsd-03-304-1007 【知 识 点】 JavaWeb-Web应用-MVC 【难易程度】 10 【题目描述】 下面的那一个不属于 MVC 模式中的对象?( ) 【选项】 A. Model B. View C. Collection D. Controller 【正确答案】 C / 330 【解释】 MVC 是三个单词的缩写,分别为: 模型(Model),视图(View)和控制 Controller)。 MVC 模式的目的就 是实现 Web 系统的职能分工。 Model 层实现系统中的业务逻辑,通常可以用 JavaBean 或 EJB 来实现。 View 层用于与用户的交互,通常用 JSP 来实现。 Controller 层是 Model 与 View 之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 【题目编号】 jsd-03-304-1008 【知 识 点】 JavaWeb-Web应用-类图的概念 【难易程度】 30 【题目描述】 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。 【选项】 A.正确 B.不正确 【正确答案】 B 【解释】 类图是对系统静态结构的描述。 多选 【题目编号】 jsd-03-304-2001 【知 识 点】 JavaWeb-Web基础-J2EE 【难易程度】 10 【题目描述】 下列哪些是 J2EE 的体系( )。 【选项】 A. JSP B. JAVA C. Servlet D. WebService 【正确答案】 ACD 【解释】 J2EE 现在更多使用的名字是 Java EE JSP 是 JavaEE 设计模式 MVC 中的显示部分,Servlet 是控制部 分,WebService 是 JavaEE 的服务器。 【题目编号】 jsd-03-304-4001 【知 识 点】 JavaWeb-Web应用 【难易程度】 70 / 330 【题目描述】 简要说明 JVM、JSP、Servlet、Web Server、Web Browser 之间的关系。 【正确答案】 当用户在 JSP 页面上提交了需要服务器处理的数据后,通过 Web Browser 发送到服务器端, Servlet 会根据用户的请求产生必要的相应,如果需要还会通过 JVM 或 Web Server 来获取资源,最后 把服务器端的相应结果返回给用户。 【题目编号】 jsd-03-304-4002 【知 识 点】 JavaWeb-Web应用-Apache 【难易程度】 50 【题目描述】 说说对开源项目 Apache 的了解,说出其中你使用过的项目并给以评价 【正确答案】 Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大 多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。 它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编译到服务器中。 Apache 起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache Httpd 被开放源代码团体的成员不断的发展和加强。Apache Http 网站服务器拥有牢靠可信的美誉,已经在 全球超过半数的网站中被使用,特别是几乎所有最热门和访问量最大的网站。 Apache 支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证 方案。一些通用的语言接口支持 Perl,Python, Tcl, 和 PHP。流行的认证模块包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持(mod_ssl), 代理服务器 (proxy) 模块, 很有用的 URL 重写(由 mod_rewrite 实现),定制日志文件(mod_log_config),以及过滤支持(mod_include 和 mod_ext_filter)。Apache 日志可以通过网页浏览器使用免费的脚本 AWStats 或Visitors 来进行分析。 【题目编号】 jsd-03-304-4003 【知 识 点】 JavaWeb-Web应用- Web容器-Tomcat 【难易程度】 10 【题目描述】 Tomcat 服务器的默认端口是多少?怎样修改 tomcat 的端口? 【正确答案】 默认端口为 8080,可以通过 service.xml 的 Connector 元素的 port 属性来修改端口。 【题目编号】 jsd-03-304-4004 【知 识 点】 JavaWeb-Web应用-MVC / 330 【难易程度】 50 【题目描述】 MVC 的各个部分都有哪些技术来实现?如何实现? 【正确答案】 MVC 是 Model-View-Controller 的缩写,Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现),View 是应用的表示面(由 JSP 页面产生)Controller 是通过应用的处理过程控制,(一 般是一个 servert)通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些 组件可以进行交互和重用 【题目编号】 jsd-03-304-4005 【知 识 点】 JavaWeb-Web应用-B/S与C/S 【难易程度】 60 【题目描述】 什么是 B/S 结构,C/S 结构? 【正确答案】 C/S 是 Client/Server 的缩写。服务器通常采用高性能的 PC. 工作站或小型机,并采用大型数 据库系统,如 Oracle、Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端软件。 B/S 是 Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如 Netscape Navigator 或 Internet Explorer,服务器安装 Oracle、Sybase、Informix 或 SQL Server 等数据库。在这种结构 下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过 Web Server 同数据库进行数据交互。 【题目编号】 jsd-03-304-4006 【知 识 点】 JavaWeb-Web应用-Log4J 【难易程度】 70 【题目描述】 Log4J 是 Apache 组织的开源一个开源项目,通过 Log4J,可以指定日志信息输出的目的地,如 console、file 等。Log4J 采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。 【正确答案】 Log4J 分 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者您定义的级别。Log4j 建议 只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您 可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别, 则应用程序中 所有 DEBUG 级别的日志信息将不被打印出来。 【题目编号】 jsd-03-304-4007 【知 识 点】 JavaWeb-Web基础-J2EE 【难易程度】 50 / 330 【题目描述】 J2EE 是什么?它包括哪些技术? 【正确答案】 从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、 安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。 主要包括以下这些技术: 1) Servlet Servlet 是 Java 平台上的 CGI 技术。Servlet 在服务器端运行,动态地生成 Web 页面。与传统的 CGI 和许多其它类似 CGI 的技术相比,Java Servlet 具有更高的效率并更容易使用。对于 Servlet,重复 的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。 2)JSP JSP(Java Server Page)是一种实现普通静态 HTML 和动态页面输出混合编码的技术。从这一点来看, 非常类似 Microsoft ASP、PHP 等技术。借助形式上的内容和外观表现的分离,Web 页面制作的任务可 以比较方便地划分给页面设计人员和程序员,并方便地通过 JSP 来合成。在运行时态,JSP 将会被首 先转换成 Servlet,并以 Servlet 的形态编译运行,因此它的效率和功能与 Servlet 相比没有差别, 一样具有很高的效率。 3) EJB EJB 定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。 4)JDBC JDBC(Java Database Connectivity,Java 数据库连接)API 是一个标准 SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准 Java API 编写数据库 应用程序。JDBC API 主要用来连接数据库和直接调用 SQL 命令执行各种 SQL 语句。利用 JDBC API 可 以执行一般的 SQL 语句、动态 SQL 语句及带 IN 和 OUT 参数的存储过程。Java 中的 JDBC 相当于 Microsoft 平台中的 ODBC(Open Database Connectivity) 【题目编号】 jsd-03-304-4008 【知 识 点】 JavaWeb-Web应用-Web容器 【难易程度】 10 【题目描述】 什么是 Web 容器? 【正确答案】 容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处 / 330 理从客户端发出的请求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是这样的容器。 【题目编号】 jsd-03-304-4009 【知 识 点】 JavaWeb-Web应用-J2EE 【难易程度】 50 【题目描述】 描述 J2EE 框架的多层结构,并简要说明各层的作用。 【正确答案】 1) Presentation layer(表示层) a. 表示逻辑(生成界面代码) b. 接收请求 c. 处理业务层抛出的异常 d. 负责规则验证(数据格式,数据非空等) e. 流程控制 2) Service layer(服务层/业务层) a.封装业务逻辑处理,并且对外暴露接口 b.负责事务,安全等服务 3) Persistence layer(持久层) a.封装数据访问的逻辑,暴露接口 b.提供方便的数据访问的方案(查询语言,API,映射机制等) 4)Domain layer(域层) a. 业务对象以及业务关系的表示 b. 处理简单的业务逻辑 c. 域层的对象可以穿越表示层,业务层,持久层 软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。 【题目编号】 jsd-03-304-4010 【知 识 点】 JavaWeb-Web应用-名词解释 【难易程度】 50 【题目描述】 WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP、JAXM 的解释。 【正确答案】 Web Service 是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范, 这些规范使得 Web Service 能与其他兼容的组件进行互操作; JAXP(Java API for XML Parsing)定义了在 Java 中使用 DOM, SAX, XSLT 的通用的接口,这样在 你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码; / 330 JAXM(Java API for XML Messaging)是为 SOAP 通信提供访问方法和传输机制的 API; 第四部分:流行框架 4.1 Struts2 【题目编号】 jsd-04-401-1001 【知 识 点】 流行框架-Struts2-Struts简介 【难易程度】 10 【题目描述】 Struts 框架可以支持以下哪种程序开发语言? 【选项】 A.C B.C++ C.Java D.C# 【正确答案】C 【解释】 【题目编号】 jsd-04-401-4001 【知 识 点】 Struts2的工作流程 【难易程度】 20 【题目描述】 简述基于 Struts 框架 Web 应用的工作流程 【正确答案】 在 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件 中读取配置信息,把它们存放到各种配置对象中, 当 ActionServlet 接收到一个客户请求时,将执行 如下流程. 1) 检索和用户请求匹配的 ActionMapping 实例,如果不存在,就返回请求路径无效信息; 2) 如果 ActionForm 实例不存在,就创建一个 ActionForm 对象,把客户提交的表单数据保存到ActionForm 对象中; 3) 根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; 4) 如果 ActionForm 的 validate()方法返回 null 或返回一个不包含 ActionMessage 的 ActionErrors对象, 就表示表单验证成功; 5) ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给哪个 Action,如果相应的Action 实例不存在,就先创建这个实例,然后调用 Action 的 execute()方法; 6) Action 的 execute()方法返回一个 ActionForward 对象,ActionServlet 在把客户请求转发给ActionForward 对象指向的 JSP 组件; / 330 7) ActionForward 对象指向 JSP 组件生成动态网页,返回给客户; 【题目编号】 jsd-04-401-4002 【知 识 点】 流行框架-Struts2-MVC 【难易程度】 20 【题目描述】 MVC 模式中 M,V,C 每个代表意义,并简述在 Struts 中 MVC 的表现方式。 【正确答案】 MVC 是 Model-View-Controller 的缩写,Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件 实现),View 是应用的表示层(由 JSP 页面产生)Controller 是通过应用的处理过程控制,(一般是 一个 servert)通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些组件 可以进行交互和重用。 在 Struts 框架中 Controller 功能由 ActionServlet 和 ActionMapping 对象构成,核心是一个 Servlet 类型的对象 ActionServlet,它用来接收客户端的请求。ActionServlet 包括一组基于配置的 ActionMapping 对象,每个 ActionMapping 对象实现了一个请求到一个具体的 Model 部分的 Action 处理器对象之间的映射。Model 部分由 Action 和 ActionForm 对象构成。所有的 Action 处理器对象都 是开发者从 Struts 的 Action 类派生的子类。Action 处理器对象封装了具体的处理逻辑,调用业务逻 辑模块,并且把响应提交到合适的 View 组件以产生响应。Struts 提供的 ActionForm 组件对象可以通 过定义属性描述客户端表单数据,开发者可以从它派生子类对象,并利用它和 Struts 提供的自定义 标记库相结合,可以实现对客户端的表单数据的良好封装和支持,Action 处理器对象可以直接对它进 行读写,而不再需要和 request、response 对象进行数据交互。通过 ActionForm 组件对象实现了对 View 和 Model 之间交互的支持(View 部分是通过 JSP 技术实现的)。Struts 提供了自定义的标记库, 通过这些自定义标记库可以非常容易地和系统的 Model 部分交互,通过使用这些自定义标记库创建的JSP 表单,可以实现对 Model 部分中的 ActionForm 的映射,完成对用户数据的封装。 【题目编号】 jsd-04-401-4003 【知 识 点】 流行框架-Struts2-ApplicationContext 【难易程度】 20 【题目描述】 常用的获取ApplicationContext的方法: 【正确答案】 FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组。 ClassPathXmlApplicationContext:从classpath的xml配置文件创建,可以从jar包中读取配置文件。 / 330 WebApplicationContextUtils:从web应用的根目录读取配置文件,需要先在web.xml中配置,可以配置监听器或者servlet来实现。 org.springframework.web.context.ContextLoaderListener context org.springframework.web.context.ContextLoaderServlet 1 这两种方式都默认配置文件为web-inf/applicationContext.xml,也可使用context-param指定配置文件。 contextConfigLocation /WEB-INF/myApplicationContext.xml 【题目编号】 jsd-04-401-4004 【知 识 点】 流行框架-Struts2-OGNL 【难易程度】 30 【题目描述】 Struts2 包含哪些标签? 【正确答案】 A: -----超链接,类似于 html 里的 -----执行一个 view 里面的一个 action -----如果 action 的 errors 有值那么显示出来 -----如果 action 的 message 有值那么显示出来 -----添加一个值到 list,类似于 list.add(); -----自动完成标签的内容,这个是 ajax B: -----类似于 struts1.x 中的,JavaBean 的值 C: / 330 -----复选框 -----多选框 -----下拉框 -----图像符号 D: -----获取日期格式 -----日期输入框 -----显示错误信息 -----表示一个块,类似于 html 的

-----双下拉框 E: -----这 3 个标签一起使用,表示条件判断 F: -----显示文件错误信息 -----文件上传 -----获取相应 form 的值 G: ----和标签一起使用 H: -----在里使用,表示头文件结束 -----隐藏值 I: -----加载资源包到值堆栈 -----包含一个输出,servlet 或 jsp 页面 -----获取 form 的一个输入 -----用于遍历集合 L: -----只读的标签 M: -----合并遍历集合出来的值 O: -----获取标签组 -----左右选择框 P: -----为其他标签提供参数 -----密码输入框 -----得到'value'的属性 -----value 的值 push 到栈中,从而使 property 标签的能够获取 value的属性 R: -----单选按钮 -----重置按钮 S: -----单选框 -----赋予变量一个特定范围内的值 -----通过属性给 list 分类 -----提交按钮 -----为遍历集合输出子集 T: -----表格框 -----表格 -----I18n 文本信息 -----文本域输入框 -----文本输入框 -----拦截器 -----树 -----树的结构 U: -----多选择框 -----创建 url 【题目编号】 jsd-04-401-4005 【知 识 点】 流行框架-Struts2-OGNL、ValueStack 【难易程度】 40 【题目描述】 struts2 中,OGNL 访问值栈的时候查找的顺序是什么?请排序:模型对象、临时对象、固定名称 的对象、Action 对象。 【正确答案】 struts2 的值栈排列顺序为:1).临时对象;2).模型对象;3).Action 对象;4).固定名称 / 330 对象(如#application, #session, #request 等对象)。 【题目编号】 jsd-04-401-4006 【知 识 点】 流行框架-Struts2-参数传递 【难易程度】 20 【题目描述】 struts2 中,Action 通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的? 【正确答案】 1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范 set 和 get 方法)获取页 面表单数据。 2)会把处理好的数据成员放入值栈中,到页面可以使用 struts2 标签取值就可以了。 【题目编号】 jsd-04-401-4007 【知 识 点】 流行框架-Struts2-struts2国际化 【难易程度】 60 【题目描述】 struts 中如何实现国际化,涉及哪些文件? 【正确答案】 “国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同 而显示不同的用户界面。Struts 框架通过使用标记,以及使用 java.util 数据包中定 义的 Locale 和 ResourceBundle 类来支持国际化。java.text.MessageFormat 类定义的技术可以支持 消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。会涉 及到资源文件,不需了解这些类的细节就可进行国际化和设置消息的格式。会涉及到资源文件, struts-config.xml 配置文件,web.xml 配置文件。 【题目编号】 jsd-04-401-4008 【知 识 点】 流行框架-Struts2-MVC 【难易程度】 50 【题目描述】 请简单画出struts技术构建mvc的流程图 【正确答案】 / 330 【题目编号】 jsd-04-401-4009 【知 识 点】 流行框架-Struts2-视图 【难易程度】 40 【题目描述】 Struts 的控制器部分,视图部分包括哪些内容? 【正确答案】 控制器:在 struts 中,基本的控制器组件是 ActionServlet 类中的实例 servelt,实际使用的 servlet 在配置文件中由一组映射(由 ActionMapping 类进行描述)进行定义。对于业务逻辑的操作则主要由 Action、ActionMapping、ActionForward 这几个组件协调完成的,其中 Action 扮演了真正的业务逻辑的实现者, ActionMapping 与 ActionForward 则指定了不同业务逻辑或流程的运行方向。 struts-config.xml 文件配置控制器。 视图:视图主要由 JSP 建立,struts 包含扩展自定义标签库(TagLib),可以简化创建完全国际化用 户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及 Template Tags 等。 【题目编号】 jsd-04-401-5001 【知 识 点】 流行框架-Struts2-applicationContext 【难易程度】 50 【题目描述】 如何在web环境中配置applicationContext.xml文件? 【正确答案】 / 330 org.springframework.web.context.ContextLoaderListener 或: context org.springframework.web.context.ContextLoaderServlet 1 通过如下方法取出applicationContext实例: ApplicationContext ac= WebApplicationContextUtils.getWebApplicationContext(this.getServletContext); 4.2 Hibernate 【题目编号】 jsd-04-402-1001 【知 识 点】 流行框架-Hibernate-主键生成 【难易程度】 10 【题目描述】 以下哪个 Hibernate 主键生成策略是实现主键按数值顺序递增的? 【选项】 A. increment B. identity C. sequence D. native 【正确答案】A 【解释】 increment 生成策略:当 Hibernate 准备在数据库表中插入一条新记录时,首先从数据库表中获取当 前主键字段的最大值,然后在最大值基础上加 1,作为当前持久化对象的标识符属性值。这种策略即 increment 生成策略,用其生成的标识符属性的类型可以是 long、short、int 及其封装类的类型 identity 生成策略:在 MS SQL Server、MySQL 和 DB2 等数据库中可以设置表中某一个字段的数值自 动增长,identity 生成策略通过这种方式为当前记录获取主键值的同时为持久化对象赋予标识符属性值。 sequence 生成策略:在 Oracle、DB2 和 PostgreSQL 等数据库中创建一个序列(sequence),然后Hibernate 通过该序列为当前记录获取主键值,进而为持久化对象赋予 / 330 标识符属性值。 native 生成策略:由 Hibernate 根据所使用的数据库支持能力从 identity、sequence 或者等生成策 略中选择一种。 【题目编号】 jsd-04-402-1002 【知 识 点】 流行框架-Hibernate-延迟加载 【难易程度】 20 【题目描述】 在Hibernate中Customer类的orders集合属性,采用延迟检索策略,编译或运行以下程序,会出现什么情况:() Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); Customer customer = (Customer)session.get(Customer.class,new Long(1)); tx.commit(); session.close(); Iterator orderIterator = customer.getOrders().iterator(); 【选项】 A 编译出错 B 编译通过,并正常运行 C 编译通过,但运行时抛出异常 D 编译通过,并正常运行 【正确答案】C 【解释】无 【题目编号】 jsd-04-402-4001 【知 识 点】 流行框架-Hibernate-Hibernate简介 【难易程度】 70 【题目描述】 Hibernate 中:不看数据库,不看 XML 文件,不看查询语句,怎么样能知道表结构? 【正确答案】 可以看与 XML 文件对应的域模型。 【解释】无 【题目编号】 jsd-04-402-4002 【知 识 点】 流行框架-Hibernate-延迟加载、关联映射 【难易程度】 50 【题目描述】 请看如下片段: / 330 解释 lazy、inverse、cascade 以及 all-delete-orphan 属性的含义;并给出示例代码,说明在如下组合情况下,对于 save、update、delete一对多关系中的一方对象操作时的区别: inverse cascade true all-delete-orphan false all-delete-orphan true all false all true none false none 【正确答案】 (一)lazy:延迟加载 Lazy 的有效期:只有在 session 打开的时候才有效;session 关闭后 lazy 就没效了。 lazy 策略可以用在: a.标签上:可以取值 true/false b.标签上,可以取值 true/false,这个特性需要类增强 c./等集合上,可以取值为 true/false/extra d./等标签上,可以取值 false/proxy/no-proxy 1) get 和 load 的区别: a.get 不支持延迟加载,而 load 支持。 b.当查询特定的数据库中不存在的数据时,get 会返回 null,而 load 则抛出异常。 2) 类(Class)的延迟加载: a. 设置标签中的 lazy="true",或是保持默认(即不配置 lazy 属性) b. 如果 lazy 的属性值为 true,那么在使用 load 方法加载数据时,只有确实用到 数据的时候才会发出 sql 语句;这样有可能减少系统的开销。 3) 集合(collection)的延迟加载:可以取值 true,false,extra a.true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载 其集合元素的数据 b.false:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据 c.extra:一种比较聪明的懒加载策略,即调用集合的 size/contains 等方法的时候, / 330 hibernate 并不 会去加载整个集合的数据,而是发出一条聪明的 SQL 语句,以便获得需要的值,只有在真正需要用到 这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据。 4) Hibernate 单端关联懒加载策略:即在/标签上可以配置 懒加载策略。可以取值为:false/proxy/no-proxy a.false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对象 b.proxy:这是 hibernate 对单端关联的默认懒加载策略,即只有在调用到其关联对 象的方法的时候才 真正发出查询语句查询其对象数据,其关联对象是代理类 c.no-proxy:这种懒加载特性需要对类进行增强,使用 no-proxy,其关联对象不是代 理类注意:在 class 标签上配置的 lazy 属性不会影响到关联对象!!! (二)inverse inverse 是指的关联关系的控制方向,inverse=false 的 side(side 其实是指 inverse=false 所位 于的 class 元素)端有责任维护关系,而 inverse=true 端无须维护这些关系 (三) cascade cascade 指的是层级之间 的 连 锁 操 作 。 在 定 义 关 联 对 象 的 映 射 时 , 使 用 cascade="all" ,cascade="save-update",cascade="all-delete-orphan"或 cascade="delete" a. 如果父对象被保存,所有的子对象会被传递到saveOrUpdate()方法去执行 (cascade="save-update") b. 如果父对象被传递到 update()或者 saveOrUpdate(),所有的子对象会被传递到 saveOrUpdate()方 法去执行(cascade="save-update") c.如果一个临时的子对象被一 个持久化的父对象引用了,它会被传递到 saveOrUpdate()去执行 (cascade="save-update") c. 如果父对象被删除了,所有的子对象对被传递到 delete()方法执行 (cascade="delete") e. 如果临时的子对象不再被持久化的父对象引用,什么都不会发生(必要时,程 序应该明确的删除这 个子对象),除非声明了 cascade="all-delete-orphan",在这种 情况下,成为“孤儿”的子对象会被删除。 (四) save、update、delete 一对多关系中的一方对象操作时的区别 1)当一方设置 inverse=true 时,所有由一方发出的操作都不会关联到多方。 2)当一方设置 inverse=false, cascade=all-delete-orphan 时,将删除不再和一方对象关联 的所有多方对象。 3)当一方设置 inverse=false, cascade=all 时,当保存和删除一方对象时,级联保存和删 除所有关联的多方对象。 4)当一方设置 inverse=false, cascade=none 时,当对一方操作时,不级联到关联的多方 对象。 / 330 【题目编号】 jsd-04-402-4003 【知 识 点】 流行框架-Hibernate-延迟加载 【难易程度】 50 【题目描述】 对 hibernate 的延迟加载如何理解,在实际应用中,延迟加载与 session 关闭的矛盾是如何处理的? 【正确答案】 延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。那么 Hibernate 是怎么知识用户在什么时候使用数据了呢?又是如何加载数据呢?其实很简单,它使用了代理机制。 返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用 getter 方法时就会去数 据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。 这种情况就叫做未初始化的关系。 延迟加载与 session 关闭的矛盾一般可以这样处理: 1)、关闭延迟加载特性。 操作起来比较简单,因为 hibernate 的延迟加载特性是在 hbm 配置里面可控制的。默认 lazy="true", 具体配置可以查看一下相关文档,就不详细叙述了。使用这个解决办法带来的隐患是十分大的。 首先,出现 no session or session was closed 就证明了您已经在使用外键关联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果关联表越多,后果也可以想象得到。所以 不建议使用这个方法解决。 2)、在 session 关闭之前把我们想要查询的数据先获取了。 首先需要了解一下 session 什么时候关闭,也就是它的生命周期。通常情况下 hibernate 会在查询数 据关闭 session,而使用 getHibernateTemplate().get 方法查询后会延迟关闭的时间。会在事务结束 后才关闭。使用拦截器(Interceptor)或过滤器(Filter)控制 session。 spring 为解决 hibernate 这一特性提供的解决方案,可以有效的控制 session 生命周期。 【解释】无 【题目编号】 jsd-04-402-4004 【知 识 点】 流行框架-Hibernate-Hibernate简介 【难易程度】 40 【题目描述】 介绍一下 hibernate 的工作原理、优点以及如何优化? 【正确答案】 工作原理: 1)启动 Hibernate 构建 Configuration 实例,初始化该实例中的所有变量 Configuration cfg = new / 330 Configuration().configure(); 2).加载 hibernate.cfg.xml 文件至该实例内存,通过 hibernate.cfg.xml 文件中的 mapping 节点配置,加载 hbm.xml 文件至该实例内存; 3). 由上面得到的Configuration 实例构建一个 SessionFactory 实例 SessionFactory sf =cfg.buildSessionFactory(); 4).由上面得到的 SessionFactory 实例创建连接 Session s = sf.openSession(); 5).由上面得到的 Session 实例创建事务操作接口 Transaction 的一个实例 tx Transaction tx =s.beginTransaction(); 6).通过 Session 接口提供的各种方法操作数据库的访问 7).提交数据库的操作结果 tx.commit(); 8).关闭 Session 链接 s.close(); 优点: 1).对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2).Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他很大程度的简化 DAO层的编码工作 3).hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。 4).hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 优化: 1).使用双向一对多关联,不使用单向一对多 2).灵活使用单向一对多关联 3).不用一对一,用多对一取代 4).配置对象缓存,不使用集合缓存 5).一对多集合使用 Bag,多对多集合使用 Set 6).继承类使用显式多态 7).表字段要少,表关联不要怕多,可以利用二级缓存 【解释】无 【题目编号】 jsd-04-402-4005 【知 识 点】 流行框架-Hibernate-延迟加载-get和load 【难易程度】 50 【题目描述】 Hibernate 实现中,load 和 get 方法的区别,find 和 iterate 的区别? 【正确答案】 load 和 get 方法的区别:hibernate 对于 load 方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于 get 方法,hibernate 一定要获取到真实的数据,否则返回 null。 / 330 find 和 iterate 的区别:find 方法通过一条 Select SQL 实现了查询操作,而 iterate 方法要执 行多条 Select SQL.iterate 第一次查询获取所有符合条件的记录的 id,然后再根据各个 id 从库表中 读取对应的记录,这是一个典型的 N+1 次的查询问题,如果符合条件记录有 10000 条,就需要执行 10001条 Select SQL,性能会非常差。 【解释】无 【题目编号】 jsd-04-402-4006 【知 识 点】 流行框架-Hibernate-Hibernate核心接口 【难易程度】 30 【题目描述】 Hibernate 有哪 5 个核心接口? 【正确答案】 Configuration 接口:配置 Hibernate,根据其启动 hibernate,创建 SessionFactory 对象; SessionFactory 接口:初始化 Hibernate,充当数据存储源的代理,创建 session 对象, sessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存; Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享 同一个 session,是轻量级、一级缓存; Transaction 接口:管理事务; Query 和 Criteria 接口:执行数据库的查询。 【解释】无 【题目编号】 jsd-04-402-4007 【知 识 点】 流行框架-Hibernate-关联映射 【难易程度】 40 【题目描述】 什么是 ORM? 【正确答案】 对象关系映射(Object—Relational Mapping,简称 ORM)是一种为了解决面向对象与面向关 系数据库存在的互不匹配的现象的技术;简单的说,ORM 是通过使用描述对象和数据库之间映射的元 数据,将 java 程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外 一种形式。 【解释】无 【题目编号】 jsd-04-402-4008 【知 识 点】 流行框架-Hibernate-对象持久性-对象状态 【难易程度】 50 【题目描述】 hibernate 中的 java 对象有几种状态,其相互关系如何(区别和相互转换)。 / 330 【正确答案】 在 Hibernate 中,对象有三种状态:临时状态、持久状态和游离状态。 临时状态:当 new 一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内 存区域,如果没有变量引用这个对象,则会被 jre 垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过 Session 的 save 或者 SaveOrUpdate 把临时对象与数据库关联,并把数据 插入或者更新到数据库,这个对象才转换为持久对象; 持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID.。对持久化对象 进行 delete 操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关 系,持久化对象变成临时状态。 持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象 是脏的(Dirty)。 游离状态:当 Session 进行了 Close、Clear 或者 evict 后,持久化对象虽然拥有持久化标识符和与 数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。 【解释】无 4.3 Mybatis 【题目编号】 jsd-04-401-1001 【知 识 点】 流行框架-Mybatis-配置文件 【难易程度】 30 【题目描述】 不是Mybatis配置文件中的主要元素是( ) 【选项】 A.properties B.transactionManager C.mappers D.bean 【正确答案】D 【解释】无 【题目编号】 jsd-04-403-4001 【知 识 点】 流行框架-MyBatis-动态SQL 【难易程度】 20 【题目描述】 MyBatis中如何实现动态SQL的? 【正确答案】 使用动态sql的元素: if / 330 choose(when,otherwise) trim where set foreach 【题目编号】 jsd-04-403-4002 【知 识 点】 流行框架-MyBatis-动态SQL 【难易程度】 70 【题目描述】 MyBatis解决插入空值问题? 【正确答案】 MyBatis 插入空值时,需要指定JdbcType jdbcType=NUMERIC 【题目编号】 jsd-04-403-4003 【知 识 点】 流行框架-Mybaties-XML配置文件 【难易程度】 80 【题目描述】 Mybaties中#与$的区别? 【正确答案】 1)#是把传入的数据当作字符串,如#field#传入的是id,则生成sql语句:order by “id”; 2)$传入的数据直接生成在sql里,如$field$传入的是id,则sql语句生成是这样,order by id ; 3)#方式能够很大程度防止sql注入, 但$方式无法防止sql注入; 4)$方式一般用于传入数据库对象.例如传入表名; 5)一般能用#的就别用$ ; 【题目编号】 jsd-04-403-4004 【知 识 点】 流行框架-Mybaties-xml配置文件 【难易程度】 40 【题目描述】 Mybaties中使用like ‘%#filedName#%’ 时,有什么问题? 【正确答案】 在xml映射文件中,如果直接按如上写法,会报异常:java.sql.SQLException: Invalid argument in JDBC call: parameter index out of range: 1。 所以一般会采用如下两种方式: 1) 将#换成$,如like ‘%$ filedName $%’,这样就没有问题了.. 2) 采用字符串联接符||,如:like ‘%’||# filedName #||’%’ / 330 【题目编号】 jsd-04-403-4005 【知 识 点】 流行框架-Mybaties-Mybaties工作原理 【难易程度】 40 【题目描述】 MyBatis原理,为什么使用,优点是什么 【正确答案】 封装了JDBC操作,将SQL查询结果映射为对象,将对象属性值映射到SQL. 步骤: 1)解析SqlMapConfig.xml和SqlMap.xml(定义SQL) 2)将解析出的SQL生成MappedStatement(预编译Statement) 3)将传入的SQL参数给Statement绑定,参数类型可以为 java对象,Map类型,int,String类型 4)执行mappedstatement,返回sql结果 5)将返回的SQL结果转为Java对象,Map,int,String类型返回 优点:简化数据库访问操作,便于实现DAO操作 【题目编号】 jsd-04-403-4006 【知 识 点】 流行框架-Mybaties-mybatis与ibatis 【难易程度】 50 【题目描述】 mybatis 和 ibatis比较 【正确答案】 1)Mybatis实现了接口绑定,使用更加方便。在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。 注意: 虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置,不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在 2)对象关系映射的改进,效率更高 相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。不过这种方式存在“N+1查询问题”。概括地讲,N+1查询问题可以是这样引起的: 你执行了一个单独的SQL语句来获取结果列表(就是+1)。对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是 / 330 N)。这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。 而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。 具体实现方法请自行参考Mybatis官方使用手册,不在此累述. 不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler里34行),而实际项目中需要分页的情况又特别多…… 仔细一想,一对多映射确实不能通过配置文件来分页,因为这时查询出的记录数并不等于实际返回对象的size,不过一对一映射为什么也不允许就不太明白了。可能是因为一对一是一对多的特例,而在设计框架的时候并没有考虑去处理或是难于处理这一特例吧。 17. MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。 熟悉struts2的人应该对OGNL表达式不会感到陌生, MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。 【题目编号】 jsd-04-403-4007 【知 识 点】 流行框架-Mybaties- Mybatis与Hibernate 【难易程度】 50 【题目描述】 Mybatis和Hibernate的区别 【正确答案】 共同点:Hibernate和Mybatis都是orm对象关系映射框架,都是用于将数据持久化的框架技术。 区别:1. Hiberante较深度的封装了jdbc,对开发者写sql的能力要求的不是那么的高,我们只要通过hql语句操作对象即可完成对数据持久化的操作了。 2. hibernate可移植性好,使用hibernate只需改变一下数据库方言即可搞定。用hibernate框架,数据库的移植变的非常方便。 3 .hibernate生成的sql语句耗费程序资源,优化起来也不是很方便,且对存储过程支持的也不够太强大。 4. Mybatis 是对jdbc的封装,但是封装的没有hibernate那么深,我们可以再配置文件中写sql语句,可以根据需求定制sql语句,数据优化起来较hibernate容易很多。 5. Mybatis要求程序员写sql的能力要相对使用hibernate的开发人员要高的多,且可移植性也不是很好。 6. 处理大数据时使用Mybatis比较好,因为优化较方便。 【题目编号】 jsd-04-403-4008 / 330 【知 识 点】 流行框架-Mybaties- Mybatis错误 【难易程度】 50 【题目描述】 Mybatis中1111错误是什么错误,怎么解决? 【正确答案】 在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111。 通过观察,如果是参数是Map类型或者Java Object类型,如果Map或者Object里面的属性类型不一致,如有些属性是String类型,有些属性是Integer类型,那么MyBatis解析的时候,就会出现问题,类型无法识别。 当然,如果传入参数不是Map或者Java Object,而是多个参数列表的形式,如果参数类型一致,那么不会出现问题,如果参数类型不一致,如既有String类型,也有Integer类型,那么解析的时候同样会出错。或者因为传入的参数的字段为null对象无法获取对应的jdbcType类型,而报的错误。 解决方法:如果有类型不一致的情况,在值后面使用jdbcType加上类型, 例: passWord = #{passWord,jdbcType=VARCHAR} enable = #{enable,jdbcType=NUMERIC} 【解释】无 4.4 Spring 【题目编号】 jsd-04-404-1001 【知 识 点】 流行框架-Spring-Spring简介 【难易程度】 50 【题目描述】 Spring的组成一共有( )块组成。 【选项】 A.1 B.3 C.5 D.7 【正确答案】D 【解释】无 【题目编号】 jsd-04-404-1002 【知 识 点】 流行框架-Spring-Spring简介 【难易程度】 40 【题目描述】 Spring核心模块的作用( ) 【选项】 A.做AOP的 B.做IOC的,用来管理Bean的 / 330 C.是用来支持Hibernete D.是用来支持Struts的 【正确答案】B 【解释】无 【题目编号】 jsd-04-404-1003 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 70 【题目描述】 看下面的代码,说法正确的是( ) ACCP 【选项】 A.其中的userName是UserTable中的属性,可以不要get、set方法。 B.其中的userName是UserTable中的属性,可以不要get方法,但是一定要有set方法 C.其中的userName是UserTable中的属性,可以不要set方法,但是一定要有get方法 D.其中的userName是UserTable中的属性,一定要有get和set方法 【正确答案】B 【解释】无 【题目编号】 jsd-04-404-1004 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 70 【题目描述】 看下面的代码,说法正确的是() / 330 .* 【选项】 A.这段代码是在定义目标对象 B.这段代码是在定义切入点 C.这段代码是在定义代理 D.这段代码是在定义织入 【正确答案】B 【解释】无 【题目编号】 jsd-04-404-1005 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 20 【题目描述】 在web.xml文件中配置Spring框架,下面配置正确的是( ) 【选项】 A. config /WEB-INF/classes/applicationContext.xml B. servletConfig /WEB-INF/classes/applicationContext.xml C. contextconfig /WEB-INF/classes/applicationContext.xml D. contextConfigLocation /WEB-INF/classes/applicationContext.xml 【正确答案】D 【解释】无 【题目编号】 jsd-04-404-1006 【知 识 点】 流行框架-Spring-Spring核心类-BeanFactory / 330 【难易程度】 10 【题目描述】 下面关于BeanFactory接口说法正确的是( ) 【选项】 A. BeanFactory是单例模式的实现,负责创建和管理bean B. BeanFactory是工厂模式的实现,负责创建和管理bean C. ApplicationContext类是它的实现类 D. 以上说法都不对 【正确答案】B 【解释】无 【题目编号】 jsd-04-404-1007 【知 识 点】 流行框架-Spring-IOC-构造器注入 【难易程度】 10 【题目描述】 下面关于构造注入优点说法错误的是( ) 【选项】 A. 构造期即创建一个完整、合法的对象 B. 不需要写繁琐的setter方法的 C. 对于复杂的依赖关系,构造注入更简洁,直观 D. 在构造函数中决定依赖关系的注入顺序 【正确答案】C 【解释】无 多选 【题目编号】 jsd-04-404-2001 【知 识 点】 流行框架- Spring-Spring简介 【难易程度】 50 【题目描述】 下面关于Spring的说话正确的是( ) 【选项】 A.Spring是一个重量级的框架 B.Spring是一个轻量级的框架 C.Spring是一个IOC和AOP容器 D.Spring是一个入侵式的框架 【正确答案】BC 【解释】无 / 330 【题目编号】 jsd-04-404-2002 【知 识 点】 流行框架- Spring-IOC 【难易程度】 40 【题目描述】 下面关于IOC的理解,正确的是( ) 【选项】 A.控制反转 B.对象被动的接受依赖类 C.对象主动的去找依赖类 D.一定要用接口 【正确答案】 AB 【解释】无 【题目编号】 jsd-04-404-2003 【知 识 点】 流行框架- Spring-AOP 【难易程度】 50 【题目描述】 下面关于AOP的理解,正确的是( ) 【选项】 A.面向纵向的开发 B.面向横向的开发 C.AOP关注是面 D.AOP关注的是点 【正确答案】BC 【解释】无 【题目编号】 jsd-04-404-2004 【知 识 点】 流行框架-Spring-Spring简介 【难易程度】 20 【题目描述】 Spring各模块之间关系( ) 【选项】 A.Spring各模块之间是紧密联系的,相互依赖的 B.Spring各模块之间可以单独存在 C.Spring的核心模块是必须的,其他模块是基于核心模块 D.Spring的核心模块不是必须的,可以不要 【正确答案】BC 【解释】无 / 330 【题目编号】 jsd-04-404-2005 【知 识 点】 流行框架-Spring-AOP-通知 【难易程度】 20 【题目描述】 Spring的通知类型有( ) 【选项】 A.Before通知 B.After return通知 C.Throws通知 D.Around通知 【正确答案】ABCD 【解释】无 【题目编号】 jsd-04-404-2006 【知 识 点】 流行框架-Spring-AOP-切入点 【难易程度】 30 【题目描述】 下面关于切入点的说法正确的是( ) 【选项】 A.是AOP中一系列连连接点的集合 B.在做AOP时定义切入点是必须的 C.在做AOP时定义切入点不是必须的 D.可以用正则表达式来定义切入点 【正确答案】ACD 【解释】无 【题目编号】 jsd-04-404-2007 【知 识 点】 流行框架-Spring-依赖注入 【难易程度】 30 【题目描述】 下面是Spring依赖注入方式的是( ) 【选项】 A.set方法注入 B.构造方法的注入 C.get方法的注入 D.接口的注入 【正确答案】AB 【解释】无 【题目编号】 jsd-04-404-2008 / 330 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 50 【题目描述】 下面关于在Spring中配置Bean的id属性的说法正确的是( ) 【选项】 A.id属性是必须,没有id属性就会报错 B.id属性不是必须的,可以没有 C.id属性的值可以重复 D.id属性的值不可以重复 【正确答案】BD 【解释】无 【题目编号】 jsd-04-404-2009 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 50 【题目描述】 下面关于在Spring中配置Bean的name属性的说法正确的是( ) 【选项】 A.name属性是必须,没有name属性就会报错 B.name属性不是必须的,可以没有 C.name属性的值可以重复 D.name属性的值不可以重复 【正确答案】BD 【解释】无 【题目编号】 jsd-04-404-2010 【知 识 点】 流行框架-Spring-IOC 【难易程度】 60 【题目描述】 下面是IOC自动装载方法的是( ) 【选项】 A.byName B.byType C.constructor D.byMethod 【正确答案】AB 【解释】无 【题目编号】 jsd-04-404-2011 【知 识 点】 流行框架-Spring-配置文件 / 330 【难易程度】 20 【题目描述】 看下面的代码,说法正确的是( ) accp 【选项】 A.必须要有一个接受字符串的构造方法 B.可以没有接受一个字符串的构造方法 C.这个类有且只能有一个只接受一个字符串的构造方法 D.这个类可以有多个构造方法,但是一定要有一个只接受一个字符串的构造方法 【正确答案】AD 【解释】无 【题目编号】 jsd-04-404-2012 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 20 【题目描述】 看下面的代码,说法正确的是( ) com.xfaccp.before.BeforeInterface beforeAdvisor 【选项】 A.这段代码是做IOC B.这段代码是做AOP / 330 C.这段代码是在做代理 D.这段代码是在做置入 【正确答案】BD 【解释】无 【题目编号】 jsd-04-404-2013 【知 识 点】 流行框架-Spring-AOP 【难易程度】 50 【题目描述】 下面关于AOP的理解正确的是( ) 【选项】 A. 能够降低组件之间的依赖关系 B. 将项目中的公共的问题集中解决,减少代码量,提高系统的可维护性 C. AOP是面向对象的代替品 D. AOP不是面向对象的代替品,是面向对象很好的补充 【正确答案】BC 【解释】无 问答 【题目编号】 jsd-04-404-4001 【知 识 点】 流行框架-Spring-Spring简介 【难易程度】 40 【题目描述】 为什么要使用Spring框架,它有什么优点? 【正确答案】 (1) 轻量级的框架 (2) 非侵入性的 (3) 可以整合其它的框架,比如Struts, Hibernate等 (4) 可以提供事务管理 【解释】无 【题目编号】 jsd-04-404-4002 【知 识 点】 流行框架-Spring-Spring事务 【难易程度】 70 【题目描述】 spring 有几种事务管理,spring 的事务管理接口是什么? 【正确答案】 Spring 提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码 / 330 量大,存在重复的代码比较多;而声明式的比编程式的更灵活方便。 接口:其中最重要的三个接口:TransactionDefinition、PlatformTransactionManager 、 TransactionStatus 。 在Spring中 ,事务是通过TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法,TransactionDefinition 接口中定义了五个表示隔离级别的常量、代表传播行为的常量,在TransactionDefinition 中以int的值来表示超时时间, PlatformTransactionManager.getTransaction( ? ) 方法返回一个TransactionStatus 对象。返回的 TransactionStatus 对象可能代表一个新的或已经存在的事务(如 果在当前调用堆栈有一个符合条件的事务)。TransactionStatus 接口提供了一个简单的控制事务执 行和查询事务状态的方法。 【解释】无 【题目编号】 jsd-04-404-4003 【知 识 点】 流行框架-Spring-springMVC 【难易程度】 70 【题目描述】 介绍一下 springMVC 的工作原理、为什么用 spring? 【正确答案】 springMVC 工作原理: 1).spring mvc 请所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责负责 对请求进行真正的处理工作。 2).DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller. 3).DispatcherServlet 请请求提交到目标 Controller 4).Controller 进行业务逻辑处理后,会返回一个 ModelAndView 5).Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象 6).视图对象负责渲染返回给客户端。 为什么用 spring: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境,然后向这些 对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使 用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一 个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring 既是一个 AOP 框架,也是一 IOC 容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的 协作对象。 【解释】无 / 330 【题目编号】 jsd-04-404-4004 【知 识 点】 流行框架-Spring-AOP-注解 【难易程度】 30 【题目描述】 spring常用注解 【正确答案】 @Repository、 @Service、 @Controller @Controller对应表现层的Bean,也就是Action @Service对应的是业务层Bean @Repository对应数据访问层Bean 【解释】无 【题目编号】 jsd-04-404-4005 【知 识 点】 流行框架-Spring-Spring事务 【难易程度】 80 【题目描述】 怎么使用Spring配置事务 ? 【正确答案】 Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。 声明式事务管理的配置方式,通常有以下4种: (1) 使用TransactionProxyFactoryBean为目标Bean生成事务代理的配置。此方式是最传统、配置文件最臃肿、最难以阅读的方式。 (2) 采用Bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。 (3) 采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。 (4) 采用DefaultAdvisorAutoProxyCreator,直接利用Spring的AOP框架配置事务代理的方式,效果非常不错,只是这种配置方式的可读性不如第3种方式。 【解释】无 【题目编号】 jsd-04-404-4006 【知 识 点】 流行框架-Spring-Spring MVC 【难易程度】 80 【题目描述】 简述Spring MVC的处理流程。 【正确答案】 a.浏览器发送HTTP请求,请求到达DispatcherServlet主控制器 b.主控制器调用HandlerMapping,解析请求寻找相应的Controller组件处理请求. / 330 c.执行Controller约定方法,调用Service,DAO处理请求,处理完毕,返回一个ModelAndView对象 d.主控器调用ViewResoler,解析ModelAndView结果,寻找相应的View组件 e.调用View组件,解析标签和EL表达式,生成响应HTML界面 f.输出HTML流,为客户浏览器响应 【解释】无 【题目编号】 jsd-04-404-4007 【知 识 点】 流行框架-Spring-Spring与JDBC 【难易程度】 70 【题目描述】 Spring里面如何配置数据库驱动? 【正确答案】 使用“org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下: org.hsqldb.jdbcDriver jdbc:hsqldb:db/appfuse sa 【解释】无 【题目编号】 jsd-04-404-4008 【知 识 点】 流行框架-Spring-Spring核心类-applicationContext 【难易程度】 70 【题目描述】 Spring里面applicationContext.xml文件能不能改成其他文件名? 【正确答案】 ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个元素名字为”contextConfigLocation”来改变Spring配置文件的位置。示例如下: / 330 org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/xyz.xml 【解释】无 【题目编号】 jsd-04-404-4009 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 60 【题目描述】 如何在web应用里面配置spring? 【正确答案】 在web.xml中加入如下同容,在启动web服务器时加载/WEB-INF/applicationContext.xml中的内容。 context org.springframework.web.context.ContextLoaderServlet 1 通过如下类得到ApplicationContext实例 WebApplicationContextUtils.getWebApplicationContext 【解释】无 【题目编号】 jsd-04-404-4010 【知 识 点】 流行框架-Spring-配置文件 【难易程度】 60 【题目描述】 Spring里面如何定义hibernate mapping? 【正确答案】 添加hibernate mapping 文件到web/WEB-INF目录下的applicationContext.xml文件里面。示例如下: / 330 org/appfuse/model/User.hbm.xml 【解释】无 【题目编号】 jsd-04-404-4011 【知 识 点】 流行框架-Spring- Spring核心类-applicationContext、BeanFactory 【难易程度】 80 【题目描述】 spring中的BeanFactory与ApplicationContext的作用有哪些? 【正确答案】 1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。 2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能: a. 国际化支持 b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”), “file:c:/config.properties” c. 事件传递:通过实现ApplicationContextAware接口 【解释】无 【题目编号】 jsd-04-404-4012 【知 识 点】 流行框架-Spring-Spring核心类 【难易程度】 20 【题目描述】 spring中的核心类有那些,各有什么作用? 【正确答案】 BeanFactory:产生一个新的实例,可以实现单例模式 BeanWrapper:提供统一的get及set方法 ApplicationContext:提供框架的实现,包括BeanFactory的所有功能 【解释】无 【题目编号】 jsd-04-404-4013 【知 识 点】 流行框架-Spring-AOP 【难易程度】 50 【题目描述】 AOP里面重要的几个名词概念解释: / 330 【正确答案】 切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以@Aspect 注解(@AspectJ风格)来实现。 连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。 通知(Advice): 在切面的某个特定的连接点(Joinpoint)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。 通知的类型将在后面部分进行讨论。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。 切入点(Pointcut): 匹配连接点(Joinpoint)的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。 引入(Introduction): (也被称为内部类型声明(inter-type declaration))。声明额外的方法或者某个类型的字段。 Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。 目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做 被通知(advised) 对象。 既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。 AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 注意:Spring 2.0最新引入的基于模式(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。 织入(Weaving): 把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象。 这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。 Spring和其他纯Java AOP框架一样,在运行时完成织入。 通知的类型: 前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。 返回后通知(After returning advice): 在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。 抛出异常后通知(After throwing advice): 在方法抛出异常退出时执行的通知。 后通知(After (finally) advice): 当某连接点退出的时候执行的通知(不论是正常返回 / 330 还是异常退出)。 环绕通知(Around Advice): 包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。 环绕通知是最常用的一种通知类型。大部分基于拦截的AOP框架,例如Nanning和JBoss4,都只提供环绕通知。 切入点(pointcut)和连接点(join point)匹配的概念是AOP的关键,这使得AOP不同于其它仅仅提供拦截功能的旧技术。 切入点使得定位通知(advice)可独立于OO层次。 例如,一个提供声明式事务管理的around通知可以被应用到一组横跨多个对象中的方法上(例如服务层的所有业务操作)。 【解释】无 【题目编号】 jsd-04-404-4014 【知 识 点】 流行框架-Spring-Spring简介 【难易程度】 40 【题目描述】 Spring框架的优点都有什么? 【正确答案】 Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分; Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高; 依赖注入和IoC使得JDBC操作简单化; Spring是开源的免费的; Spring使得对象管理集中化合简单化。 【解释】无 【题目编号】 jsd-04-404-4015 【知 识 点】 流行框架-Spring-IOC-依赖注入 【难易程度】 50 【题目描述】 描述一下Spring中实现DI(Dependency Injection)的几种方式 【正确答案】 方式一:接口注入,在实际中得到了普遍应用,即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中。 方式二:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去 方式三:Type3 IoC: Constructor injection对象创建时,被依赖对象以构造方法参数的方式注入Spring的方式 【解释】无 / 330 【题目编号】 jsd-04-404-4016 【知 识 点】 流行框架-Spring-IOC-Spring容器 【难易程度】 60 【题目描述】 Spring容器中存储的是对象么?容器中为什么要存放对象? 【正确答案】 是对象。要对象与对象之间的依赖不需要通过实现类实现,而是利用容器来管理,spring根据配置文件,通过java的反射机制去动态的组装对象,相对于一般建立对象是用的new用spring建立对象,降低了代码的耦合。 【解释】无 【题目编号】 jsd-04-404-4017 【知 识 点】 流行框架-Spring-IOC、AOP 【难易程度】 50 【题目描述】 说明反转控制(IOC)和面向方向编程(AOP)在 spring 中的应用 【正确答案】 Spring 核心容器(Core)提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory, 它是工厂模式的实现。BeanFactory 使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际 的应用代码程序分开。Spring 的声明式事务基于 AOP 实现,却并不需要程序开发者成为 AOP 专家,亦 可轻易使用 Spring 的声明式事务管理。 【题目编号】 jsd-04-405-4018 【知 识 点】 流行框架-Spring-Spring与Ajax 【难易程度】 70 【题目描述】 在项目中用过 Spring 的哪些方面?及用过哪些 Ajax 框架? 【正确答案】 在项目使用过 Spring IOC ,AOP,DAO,ORM,还有上下文环境。 在项目使用过 Ext,Juery 等 Ajax 框架. 4.5 框架整合 【题目编号】 jsd-04-405-1001 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 50 【题目描述】 对Hibernate的支持主要用到Spring的那个模块( ) 【选项】 / 330 A.Spring核心模块 B.Spring ORM模块 C.Spring MVC模块 D.Spring Web模块 【正确答案】B 【解释】无 【题目编号】 jsd-04-405-1002 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 50 【题目描述】 对Struts的支持主要用到Spring的那个模块( ) 【选项】 A.Spring核心模块 B.Spring ORM模块 C.Spring MVC模块 D.Spring Web模块 【正确答案】D 【解释】无 【题目编号】 jsd-04-405-1003 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 60 【题目描述】 Spring包装Hibernate之后的Hibernate的DAO应该继承那个类( ) 【选项】 A.HibernateDAO B.SessionFactory C.HibernateDAOSuport D.Session 【正确答案】C 【解释】无 【题目编号】 jsd-04-405-1004 【知 识 点】 流行框架-框架整合-Hibernatea与Spring 【难易程度】 60 【题目描述】 Spring包装Hibernate之后,关于findByExample方法说法正确的是() 【选项】 A.是根据对象来找,对象中有的属性都作为条件,包括主键,根据对象来动态的查询 / 330 B.是根据对象来找,对象中有的属性都作为条件,不包括主键,根据对象来动态的查询 C.是根据SQL语句来找 D.是根据HQL来找 【正确答案】B 【解释】无 【题目编号】 jsd-04-405-1005 【知 识 点】 流行框架-框架整合-struts与Spring 【难易程度】 40 【题目描述】 在struts1.2同Spring集成的中,需要在struts-config.xml文件中配置一个请求处理器,下面配置办法正确的是() 【选项】 A. B. C. D. 【正确答案】B 【解释】无 【题目编号】 jsd-04-405-1006 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 60 【题目描述】 关于Spring 与 Hibernate集成,下面说法错误的是( ) 【选项】 A. Spring提供了HibernateDaoSupport类来简化Hibernate的使用 B. 在Spring配置文件种可以通过Spring提供的LocalSessionFactoryBean,来获得SessionFactory的实例 C. 通过集成Spring和Hibernate,用Spring管理程序的依赖关系,将SessionFactory注入到DataSource中 / 330 D. 通过Spring,可以在Biz层代码中无需直接实例化DAO类,而是通过注入得到 【正确答案】C 【解释】无 【题目编号】 jsd-04-405-1007 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 60 【题目描述】 Spring和Hibernate整合过程中各对象注入的顺序是( ) 【选项】 A. DataSource->SessionFactory-> Biz -> DAO B. SessionFactory -> DataSource ->DAO->Biz C. DataSource->SessionFactory->DAO->Biz D. SessionFactory -> DataSource -> Biz -> DAO 【正确答案】C 【解释】无 多选 【题目编号】 jsd-04-405-2001 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 50 【题目描述】 下面对Spring包装Struts1.2的说法正确的是( ) 【选项】 A.Spring包装Struts的ActionServlet B.Spring包装Struts的Action C.主要是利用Spring的依赖注入 D.主要利用Spring的面向方面的编程 【正确答案】BC 【解释】无 【题目编号】 jsd-04-405-2002 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 50 【题目描述】 Spring包装Struts时那些Spring模块是必须的( ) 【选项】 A.Spring核心模块 B.Spring AOP模块 / 330 C.Spring MVC模块 D.Spring WEB模块 【正确答案】AD 【解释】无 【题目编号】 jsd-04-405-2003 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 50 【题目描述】 Spring包装Struts的动作说法正确的是() 【选项】 A.Action配置的type属性还是指向自己的Action类 B.Action配置的type属性不需要指向自己的Action类,但是Action要在Spring配置文件中配置 C.Action配置的type属性一定要指向Spring提供的代理类,但是Action要在Spring配置文件中配置 D.Action配置的type属性可以不指向Spring提供的代理类,可以利用Spring提供的中央处理器来处理,但是Action要在Spring配置文件中配置 【正确答案】BD 【解释】无 【题目编号】 jsd-04-405-2004 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 20 【题目描述】 Struts2同Spring集成的说法正确的是() 【选项】 A. 可以在struts.properties中增加一个配置:struts.beanFactory=spring B. 可以在struts.xml中配置一个的配置 C. 可以在struts.xml中增加一个 D. 可以在struts.xml中增加一个插件 【正确答案】AC 【解释】无 【题目编号】 jsd-04-405-2005 / 330 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 10 【题目描述】 Spring包装Hibernate之后,能够来保存数据的方法有( ) 【选项】 A.save B.load C.saveOrUpdate D.merge 【正确答案】AC 【解释】无 问答 【题目编号】 jsd-04-405-4001 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 30 【题目描述】 说出几个与 spring 同类型的开源框架,说出几个与 hibernate 同类型的开源框架,说出几个与struts 同类型的开源框架 【正确答案】 1)与 spring 同类型的开源框架:JUIDE、EJB3.0、picoContainer 2)与 hibernate 同类型的开源框架 :ibatis,jdo,JPA 3)几个与 struts 同类型的开源框架:webwork,tapestry,JSF 【解释】无 【题目编号】 jsd-04-405-4002 【知 识 点】 流行框架-框架整合- Hibernate与Spring、Struts与Spring 【难易程度】 50 【题目描述】 简要描述如何结合 struts、hibernate、spring 开发 Web 应用? 【正确答案】 Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这样的 话,在 action 中你再也不需要使用传统的 request.getParameter("name");还有 struts 有一个控制器, 你在 struts 编程中的控制器(XxxAction)都是继承总的 ActionServlet,它能集中处理请求,然后转到 相关的页面。还有 struts 的表单验证组件,不用你写 js 验证了,只需要你配置一下文件就可以了。另 外 struts 的令牌机制可以防表单重复提交。 Spring 是一个轻量级容器,非侵入性.包含依赖注入,AOP 等。它是为了解决企业应用程序开发复 杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用 / 330 哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 Hibernate:它可以让我们以 OO 的方式操作数据库,这让我们看到了 hibernate 的强大之处,体验到操作数据的方便。但 hibernate 最耀眼之处是 hibernate 的缓存机制,而不是以 OO 的方式操作 数据库。Hibernate 的缓存机制不外乎是一级缓存 session,二级缓存 sessionFactory,和第三方缓 存如 ehcache。也就是 hibernate 的最强大的地方是它的缓存,理解了这个才能真正的理解 hibernate,Hibernate 的命名查询/命名参数查询,就是将 hql 语句放在一个单独的 xml 文件之中,它 仍然让人们以面向对象的方式去操纵数据,而不用在以 OO 的方式写着代码的同时,然后再转变思维, 用面向关系的方式去写那些 sql 语句。但 hibernate 不仅做了这些,它的 native sql 查询方式,完 全满足 sql 语句的偏爱者,它像 ibatis 一样,将 sql 语句放在配置文件之中。 【解释】无 【题目编号】 jsd-04-405-4003 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 70 【题目描述】 Spring的MVC和Struts的MVC的区别 【正确答案】 相同点: 1.都是mvc框架; 2.感觉struts的action类似于spring的ioc,都是使用java反射机制来实现的依赖注入; 3.struts2的拦截器使用也类似于spring的aop,都是通过动态代理实现的; 不同点: 1.配置不一样 2.spring的控制器对象的处理请求方法需要带有HttpServletRequest和HttpServletResponse参数,这样不于调试; 3.参数的接收,在struts2中通过set方法就实现了,而spring则从request中获取,另外参数的传递也比较方便; 4.struts2处理请求的返回页比较方便,通过action的返回的结果名称,定位返回的页面或者重定向到另一个action 5.struts2同时提供了对于请求变量的校验和类型的转换; 6.spring在mvc框架中相对于struts2的优势在于它的IOC,struts2只是注入action,而spring可以将更多的bean注入到这个action中; 综上所述,springmvc较struts2更轻量,但是没有struts2在mvc方面功能强大; 【解释】无 【题目编号】 jsd-04-405-4004 / 330 【知 识 点】 流行框架-框架整合-Struts与Spring 【难易程度】 40 【题目描述】 如何配置spring+struts? 【正确答案】 在struts-config.xml加入一个插件,通过它加载applicationContext.xml ? 在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy ? 通过DelegateActionProxy进入一spring的环境。 ? 在spring的applicationContext.xml加入 【解释】无 【题目编号】 jsd-04-405-4005 【知 识 点】 流行框架-框架整合-Hibernate与Spring 【难易程度】 50 【题目描述】 spring+hibernate的配置文件中的主要类有那些?如何配置? 【正确答案】 dataSource sessionFactory:hibernate.cfg.xml transactionManager userDao (extends HibernateDaoSupport) sessionFactory facade proxy sessionFactory transactionManager facade 在myeclipse中先加入spring环境再加入hibernate环境。 思考,如果spring与hibernate结合在一起可以不需要hibernate.cfg.xml文件是否正确? 【解释】无 【题目编号】 jsd-04-405-4006 【知 识 点】 流行框架-框架整合-Spring-Hibernate与Spring 【难易程度】 80 【题目描述】 Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。 【正确答案】 在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承 / 330 HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor 【解释】无 4.6 其他框架、其他 【题目编号】 jsd-04-406-1001 【知 识 点】 流行框架-Struts1 【难易程度】 40 【题目描述】 在 Struts 中实现页面跳转主要通过什么方法来实现? 【选项】 A. server.transfer B. response.redirect C. mapping.findForward D. response.sendRedirect 【正确答案】 C 【解释】 该题是struts1内容,与struts2传参机制不同。 【题目编号】 jsd-04-406-1002 【知 识 点】 其他-模块内聚度 【难易程度】 70 【题目描述】 模块内聚度越高,说明模块内各成分彼此结合的程度越( ) 【选项】 A 松散 B 紧密 C 无法判断 D 相同 【正确答案】B 【解释】 内聚度是指模块内部各成分之间的联结强度.内聚度越高,越容易理解、修改和维护.但内聚度本身是 主观的、非形式化的概念,程序设计人员很难客观地评估一个模块的内聚度.为此,人们开发出许多度 量准则用于量化模块的内聚度[1~3],为程序设计人员开发出高内聚度的模块提供指南. 【题目编号】 jsd-04-406-1003 【知 识 点】 流行框架-EJB 【难易程度】 70 【题目描述】 / 330 无状态会话 Bean、有状态会话 Bean、CMP 与 BMP 中,哪一种 Bean 不需要自己书写连接数据库的代码?( ) 【选项】 A. 无状态会话 Bean B. 有状态会话 Bean C. CMP D. BMP 【正确答案】C 【解释】 BMP 是在 Bean 中完成对数据库 JDBC 的各种调用; CMP 是由 EJB 容器自动完成对数据库的操作 会话 Bean 主要处理业务逻辑。 【题目编号】 jsd-04-406-1004 【知 识 点】 流行框架-EJB 【难易程度】 70 【题目描述】 下列哪一个接口定义了用于查找、创建和删除 EJB 实例( ) 【选项】 A.Home B.Remote C.Local D.Message 【正确答案】A 【解释】 remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。 home 接口是 EJB 工厂用于创建和移除 查找 EJB 实例。 【题目编号】 jsd-04-406-1005 【知 识 点】 流行框架-EJB 【难易程度】 70 【题目描述】 EJB 类库存在于 Java 的哪个版本中?。( ) 【选项】 A.J2SE B.J2EE C. J2ME D. J2NE 【正确答案】B 【解释】 Java 分为三个体系,JavaSE(Java2 Platform Standard Edition,java 平台标准版), JavaEE(Java 2 Platform,Enterprise Edition,java 平台企业版), JavaME(Java 2 Platform Micro Edition,java 平台微型版)。EJB 属于 JavaEE 版本。 【题目编号】 jsd-04-406-2001 【知 识 点】 流行框架-EJB 【难易程度】 70 【题目描述】 要创建一个 EJB,必须要至少编写哪些 Java 类和接口?( ) 【选项】 / 330 A. 定义远程(或业务)接口 B. 定义本地接口 C. 定义 Bean 接口 D. 编写 Bean 的实现 【正确答案】ABC 【解释】无 【题目编号】 jsd-04-406-4001 【知 识 点】 其他-SOA 【难易程度】 90 【题目描述】 请谈谈对 SOA 的认识。 【正确答案】 面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程 序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立 的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这 样的系统中的服务可以一种统一和通用的方式进行交互。 【解释】无 【题目编号】 jsd-04-406-4002 【知 识 点】 流行框架-设计模式 【难易程度】 80 【题目描述】 常用的设计模式有哪些?说明工厂模式。 【正确答案】 Java 中的 23 种设计模式: Factory(工厂模式), Builder(建造模式),Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式), Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式), Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式), Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式), Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式), Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一 组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法 针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类 中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例 后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 / 330 【解释】无 【题目编号】 jsd-04-406-4003 【知 识 点】 流行框架-EJB 【难易程度】 50 【题目描述】 EJB 包含哪 3 种 bean。 【正确答案】 session bean(会话 bean), entity bean(实体 bean), message bean(消息 bean) 【解释】无 【题目编号】 jsd-04-406-4004 【知 识 点】 其他-混淆(obfuscate) 【难易程度】 40 【题目描述】 什么是混淆(obfuscate)?有什么好处?有哪些工具可以混淆 jar 文件? 【正确答案】 混淆是指通过对 class 文件中的变量名和部分方法名进行处理,来提高代码反编译的难度。 好处主要有 2 个:1、提高反编译以后代码阅读的难度 2、降低 class 文件的大小。 常见的混淆器有 Proguard 和 RetroGuard 两种。 【解释】无 【题目编号】 jsd-04-406-4005 【知 识 点】 其他-状态机 【难易程度】 20 【题目描述】 什么是状态机?游戏开发中有那些地方能用到状态机? 【正确答案】 状态机(State Machine)是根据对应状态进行处理的一种机制,在游戏开发中最典型的应用是游戏人工智能(AI)等地方。 【解释】无 【题目编号】 jsd-04-406-4006 【知 识 点】 其他-计算机名词 【难易程度】 20 【题目描述】 请根据你的知识,对以下计算机名词进行尽量简单的描述 【正确答案】 1)J2ME 是一种使用 Java 语言进行嵌入式设备开发的技术。 2) Python 是一种语法简单的面对对象的程序设计语言 3)Ant 是 Java 的生成工具。 / 330 4)Javac 是 Java 语言的编译程序 5)Subversion 是新一代的版本工具 6)OpenGL 是一套开发的图形界面开发库标准 【解释】无 【题目编号】 jsd-04-406-4007 【知 识 点】 其他框架-EJB 【难易程度】 50 【题目描述】 J2EE,EJB,JDBC 是一回事吗,它们之间有什么关系? 【正确答案】 不是一回事,J2EE(Java 2 Platform,Enterprise Edition)是一套全然不同于传统应用开发 的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE 核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循 J2EE 架构的不同平台之间,存在良好的兼容性。其中,EJB 和 JDBC 都 属于 J2EE 的一部分。 【解释】无 【题目编号】 jsd-04-406-4008 【知 识 点】 其他-java开源软件 【难易程度】 40 【题目描述】 请写出十种以上你知道的 java 开源软件,并用一句话说明功能。 【正确答案】 Ibatis:持久层框架 Hibernate:持久层框架,它对 JDBC 进行了非常轻量级的对象封装 Struts:是一个基于 Sun J2EE 平台的 MVC 框架 Spring:是一个解决了许多在 J2EE 开发中常见的问题的强大框架 Tomcat:实现了 servlet、struts 框架的 web 服务器 WebWork:组件化和代码重用的拉出式 MVC 模式 J2EE Web 框架 Rose:系统分析和设计的工具 JUnit:用于单元测试 ANT:用于辅助开发 Eclipse:IDE 集成开发工具 【解释】无 【题目编号】 jsd-04-406-4009 【知 识 点】 其他-web的部署 【难易程度】 70 【题目描述】 部署一个 web 应用的步骤是什么? / 330 【正确答案】 1.将 web 应用放到 Tomcat 服务器的 Webapps 包下, 2.启动服务器 3.在地址栏中输入 http://localhost:8080/应用名/ 【解释】无 【题目编号】 jsd-04-406-4010 【知 识 点】 其他-UDDI、SOAP、WSDL 【难易程度】 60 【题目描述】 什么是 UDDI、SOAP、WSDL? 【正确答案】 UDDI 是一套基于 Web 的、分布式的、为 Web Service 提供的、信息注册中心的实现标准规范, 同时也包含一组使企业能将自身提供的 Web Service 注册,以使别的企业能够发现的访问协议的实现 标准。 SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML 编码信息的轻 量级协议。 WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向 过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协 议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。 【解释】无 【题目编号】 jsd-04-406-4011 【知 识 点】 其他框架-EJB、JAVA BEAN 【难易程度】 50 【题目描述】 EJB 与 JAVA BEAN 的区别? 【正确答案】 Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat)的,所以 Java Bean应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久 性。Java Bean 实际上相当于微软 COM 模型中的本地进程内 COM 组件,它是不能被跨进程访问的。 Enterprise Java Bean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用(RMI)技术的, 所以 EJB 可以被远程访问(跨进程、跨计算机)。但 EJB 必须被布署在诸如 Webspere、WebLogic 这样 的容器中,EJB 客户从不直接访问真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代 理,EJB 组件由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。 / 330 【解释】无 【题目编号】 jsd-04-406-4012 【知 识 点】 其他-JDO 【难易程度】 40 【题目描述】 Jdo 是什么? 【正确答案】 JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一个用于存取某种数据 仓库中的对象的标准化 API。JDO 提供了透明的对象存储,因此对开发人员来说,存储数据对象完全 不需要额外的代码(如 JDBC API 的使用)。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使 开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何数据 底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比 如关系数据库、文件、XML 以及对象数据库(ODBMS)等等,使得应用可移植性更强。 【解释】无 【题目编号】 jsd-04-406-4013 【知 识 点】 其他-WEB2.0 【难易程度】 60 【题目描述】 就 WEB2.0 相关信息做一下描述,谈谈你对这些技术概念的认识。 【正确答案】 一些 WEB2.0 产品,就可以理解以上观点。 Blog:用户织网,发表新知识,和其他用户内容链接,进而非常自然的组织这些内容。 RSS:用户产生内容自动分发,定阅。 Podcasting:个人视频/声频的发布/定阅。 SNS:blog+人和人之间的链接。 WIKI:用户共同建设一个大百科全书。 从知识生产的角度看,WEB1.0 的任务,是将以前没有放在网上的人类知识,通过商业的力量,放到网上去。 WEB2.0 的任务是,将这些知识,通过每个用户的浏览求知的力量,协作工作,把知识有机的组织起来, 在这个过程中继续将知识深化,并产生新的思想火花; 从内容产生者角度看,WEB1.0 是商业公司为主体把内容往网上搬,而 WEB2.0 则是以用户为主,以简便随意方式,通过 blog/podcasting 方式把新内容往网上搬; 从交互性看,WEB1.0 是网站对用户为主;WEB2.0 是以 P2P 为主。 从技术上看,WEB 客户端化,工作效率越来越高。 我们看到,用户在互联网上的作用越来越大;他们贡献内容,传播内容,而且提供了这些内容之间的 链接关系和浏览路径。在 SNS 里面,内容是以用户为核心来组织的。WEB2.0 是以用户为核心的互联网 【解释】无 / 330 【题目编号】 jsd-04-406-4014 【知 识 点】 其他-OOAD 【难易程度】 60 【题目描述】 OOAD 中的 Association(联合)、Aggregation(聚合)、Composition(组合)的区别? 【正确答案】 三者从概念上来讲:Association 是一般的关联,有”use-a”的含义。Aggregation 和 Composition 都有整体和部分的关系,其中 Aggregation 中的部分脱离了整体,部分仍然有意义,有”has a”的 含义,是共享式的。而 Composition 中的部分脱离了整体,部分将没有任何意义,是独占式的。 从代码实现的角度上讲:三者都是以属性出现,其中 Association 中作为属性出现时,不需要对 其进行强制赋值,只要在使用是对其进行初始化即可。Aggregation 中作为属性出现时,需要在构造 器中通过传递参数来对其进行初始化。Composition 中 作为属性出现时,需要在整体的构造器中创 建部分的具体实例,完成对其的实例化。 从数据库的层面上来讲:Association 不需要被级联删除,Aggregation 不需要被级联删除,Composition 是需要被级联删除的。 【解释】无 【题目编号】 jsd-04-406-4015 【知 识 点】 其他-内存泄露 【难易程度】 60 【题目描述】 java 中会存在内存泄露吗?请简单描述。 【正确答案】 内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。Java 存在内存 泄露。Java 中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。自己实现堆栈的数据结构时有可能会出现内存泄露。 【解释】无 【题目编号】 jsd-04-406-4016 【知 识 点】 其他-应用程序域、托管代码、强类型系统、CTS/CLS/CLR 【难易程度】 80 【题目描述】 什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释? 【正确答案】 应用程序域:一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立 / 330 (即, 从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中 创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可 以存在多个应用程序域。 托管代码:由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获 得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立 于平台和语言的、统一的托管代码应用程序行为。 强类型系统:通过运行时类型识别(RTTI)(Run-Time Type Identification),程序能够使用基类的 指针或引用来检查这些指针或引用所指的对象的实际派生类型。 装箱、拆箱:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 重载:是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。 CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。 【解释】无 【题目编号】 jsd-04-406-4017 【知 识 点】 其他-程序注释 【难易程度】 50 【题目描述】 程序注释的用途有哪些?带注释的程序有什么缺点? 【正确答案】 注释可以说明程序,给自己或他人在阅读程序时提供帮助,使程序更容易理解,也就是增强程 序代码的可读性。过多的代码注释会使程序结构变得不清晰。 【解释】无 【题目编号】 jsd-04-406-4018 【知 识 点】 其他框架-Struts1 【难易程度】 60 【题目描述】 Struts1 中 actionform 和 action 属于 MVC 哪一层,为什么? 【正确答案】 actionform 和 action 属于 MVC 的 Model 层,Action 用来处理业务逻辑,actionform 保存用户 表单数据以便于在不同页面间传递。而 MVC 中的 model 层就是业务逻辑层,该层用于实现具体的业务 逻辑、状态维护及管理。 【解释】无 / 330

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档