一份超详细的IBM公司JAVA基础面试题附答案以及解析(题库)

第一章 Java概述
笔试题
一、填空题
1.【基础题】Java是一种先 编译 后 解释 运行的语言。
二、选择题
三、名词解释
1.【基础题】J2SE:Java 2 Standard Edition Java标准版
2.【基础题】J2EE:Java 2 Enterprise Edition Java企业版
3.【基础题】J2ME:Java 2 Micro Edition Java微型版
4.【基础题】JDK:Java Development Kit Java开发工具包
5.【基础题】JRE:Java Runtime Environment Java运行环境
四、问答题
1.【基础题】Java的优点有哪些(回答六个以上)?
1)简单(Simple)
2)安全(Secure)
3)可移植(Portable)
4)面向对象(Object-oriented)
5)健壮(Robust)
6)多线程(Multithreaded)
7)体系结构中立(Architecture-neutral)
8)解释执行(Interpreted)
9)高性能(Highperformance)
10)分布式(Distributed)
11)动态(Dynamic)
2.【基础题】假设JDK安装在d:\java目录中。写出JAVA环境变量的设置方法。
答:
JAVA_HOME=d:\java
CLASSPATH=.;d:\java\lib
PATH=d:\java\bin
3.【中等题】GC是什么? 为什么要有GC?
答:
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
4.【中等题】垃圾回收的优点和原理。并考虑2种回收机制。
答:
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
5.【提高题】heap和stack有什么区别。
答:
(stack)栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。(heap)堆是栈的一个组成元素

第二章 基本词汇、数据类型、变量
笔试题
一、填空题
1.【基础题】Java中数据类型包括 基本数据类型 和 引用类型 。
二、选择题
1.【基础题】可作为Java标识符的是( A )
A.identifier
B.User.name
C.Not/ok
D.user-name
2.【基础题】以下选项中,合法的赋值语句是( D )
A.a == 1;
B.++i;
C.a = a + 1 = 5;
D.y = (int)I;
三、名词解释
四、问答题
1.【基础题】Java有没有goto?
答:
goto是java中的保留字,现在没有在java中使用。
2.【基础题】写出JAVA的基本数据类型。
答:
byte,short,int,long,char, float,double,boolean
3.【基础题】什么是常量?什么是变量?
答:
常量能在任何地方被它所允许的类型使用,代表的是所属类型的一个值。变量是JAVA程序的一个基本存储单元。变量是有一个标识符,类型及一个可选初始值的组合定义
4.【基础题】Java代码注释有几种?分别起什么作用?举例写出来。
答:
有3种;单行注释、多行注释和文档注释;//、/* /、/* /
5.【基础题】字节型(byte)、短整形(short)、整形(int)、单精度浮点型(float)的取值范围是多少?
答:
字节型(byte):它是有符号的8位类型,数的范围是-128~127。
短整形(short):short是有符号的16位类型,数的范围是 –32,768~32,767 。
整形(int):它是有符号的32位类型,数的范围是-2,147,483,648~2,147,483,647。
单精度浮点型(float):单精度浮点型(float)专指占用32位存储空间的单精度(single-precision)值。数的范围是3.4E–038~3.4E+038。
6.【中等题】简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
答:
区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路
第三章 数据类型转换和运算符
笔试题
一、填空题
1.【中等题】int x = 5; int y = 4; y = x++; y的值是 5 。
二、选择题
1.【基础题】int类型不可以与下列那些数据类型进行数据类型转换( C )
A.char
B.byte
C.boolean
D.double
2.【基础题】请选择以下运算优先级别:1()、2>、3++、4+=、5&&。( C )
A.12345
B.32154
C.13254
D.52134
3.【中等题】int i=2;i+=i-=i
i的值为( A )
A.0
B.2
C.4
D.2
4.【中等题】
boolean bool = true;
if(bool = false) {
System.out.println(“a”);
} else if (bool) {
System.out.println(“c”);
} else if (!bool) {
System.out.println(“c”);
} else {
System.out.println(“d”);
}

What is the result? ( C )
A.a
B.b
C.c
D.d
E.Compilation fails
5.【中等题】
public class Delta {
static boolean foo(char c) {
System.out.print©;
return true;
}
public static void main( String[] argv ) {
int i =0;
for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){
i++ ;
foo(‘D’);
}
}
}

What is the result? ( A )
A.ABDCBDCB
B.ABCDABCD
C.Compilation fails.
D.An exception is thrown at runtime.
6.【 提高题】
public class Alpha1 {
public static void main( String[] args ) {
boolean flag; int i=0;
do {
flag = false;
System.out.println( i++ );
flag = i < 10;
continue;
} while ( (flag)? true:false );
}
}
What is the result? ( B )
A.000000000
B.0123456789
C.Compilation fails.
D.The code runs with no output.
E.The code enters an infinite loop.
F.An exception is thrown at runtime.
三、名词解释
四、问答题
1.【基础题】请阐述=运算符和==运算符的区别。
答:
=是赋值运算符, 用于给变量赋值
==是比较运算符, 用于逻辑比较
第四章 流程控制
笔试题
一、填空题
1.【基础题】Java程序控制语句中的循环语法分 for , while 和 do…while 三种。
二、选择题
2.【基础题】下列程序在执行完循环后的结果为 ( D )
int i=1,j=10;
do{
if(i++>–j)
continue;
} while(i<5);
A.i = 6 j = 5
B.i = 5 j = 5
C.i = 6 j = 4
D.i = 5 j = 6
3.【基础题】以下选项中,那一个是结束本次循环关键字 ( B )
A.break
B.continue
C.go
D.do
4.【基础题】
int i = 0;
for (; i <4; i += 2) {
System.out.print(i + “”);
}
System.out.println(i);
What is the result? ( A )
A.0 2 4
B.0 2 4 5
C.0 1 2 3 4
D.Compilation fails.
E.An exception is thrown at runtime.
5.【基础题】
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 result? ( F )
A.value = 3
B.value = 4
C.value = 5
D.value = 6
E.value = 7
F.value = 8
6.【基础题】
int i = 1,j = -1;
switch (i) {
case 0, 1:j = 1;
case 2: j = 2;
default; j = 0;
}
System.out.println(“j=”+j);
What is the result? ( E )
A.j = -1
B.j = 0
C.j = 1
D.j = 2
E.Compilation fails.
7.【基础题】
switch(x) {
default:
System.out.println(“Hello”);
}
Which two are acceptable types for x? (Choose two) ( A、C )
A.byte
B.long
C.char
D.float
E.Short
F.Long
三、名词解释
四、问答题

第五章 Eclipse使用
笔试题
一、填空题
1.【基础题】Eclipse中代码助手的快捷键是 alt+/ ,格式化的快捷键是 ctrl+shift+f 。
二、选择题
1.【基础题】Eclipse目录下,插件jar包放在什么文件夹里( B )
A.configuration
B.plugins
C.links
D.features
三、名词解释
1.【基础题】IDE:Integrated Development Environment集成开发环境。
四、问答题
1.【基础题】常用的Java IDE都有哪些?
答:
JBuilder
NetBeans
Eclipse
2.【基础题】MyEclipse是JAVA IDE吗?
答:
不是,MyEclipse是Eclipse的一个插件。
3.【中等题】Eclipse安装插件的方法。
答:
一般来说,安装插件都是直接拷贝到Plugins子目录下,但是这样有个缺陷,若插件太多,会使内容非常混乱,而且分不清哪个是系统自带的,哪个是以后安装的。这里提供一个办法:
在Eclipse安装目录下新建一个子目录links,里面新建一个文件abcd.link,文件名随便取,文件里的内容为path=D:/MyPlugins(目录可换成自己的),而在Path中指定的目录,即刚才的D:/MyPlugins目录下,一定要有一个eclipse子目录,在此子目录下再有features及plugins子目录(同Eclipse安装目录一样),新插件在安装时即可以拷贝到此plugins目录下,这样就避免了所有插件都放在一起的缺点。而且links目录下可以建多个*.link文件,每个.link文件中的内容可有多行path=…,极大的方便了将插件按照功能来进行分门别类。
第六章 String
笔试题
一、填空题
1.【基础题】字符串的下标从 0 开始。
2.【基础题】String的取子串的方法是 substring() , 取某个位置上字符的方法是 charAt() 。
二、选择题
1.【基础题】比较两个字符串引用地址是否相等用那个方法 ( C )
A.contact()
B.charAt()
C.equals()
D.substring()
2.【基础题】取出字符串的长度是以下那个( B )
A.String.length
B.String.length()
C.String.long
D.String.long()
3.【中等题】
String a = “ABCD”;
String b = a.toLowerCase();
b.replace(‘a’, ‘d’);
b.replace(‘b’, ‘c’);
System.out.println(b);
What is the result? ( A )
A.abcd
B.ABCD
C.dccd
D.dcba
E.Compilation fails.
F.An exception is thrown at runtime.
4.【中等题】
public class Foo {
public static void main (String [] args) {
StringBuffer a = new StringBuffer (“A”);
StringBuffer b = new StringBuffer (“B”);
operate (a,b);
System.out.println(a + “,” +b);
}
static void operate (StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
}
}
What is the result? ( D )
A.The code compiles and prints “A,B”.
B.The code compiles and prints “A,A”.
C.The code compiles and prints “B,B”.
D.The code compiles and prints “AB,B”.
E.The code compiles and prints “AB,AB”.
F.The code does not compile because “+” cannot be overloaded for StringBuffer.

三、名词解释
四、问答题
1.【中等题】equals()和==比较两个字符串是否相同有什么区别。
答:
equals()比较的是两个字符串的值,==比较的是两个字符串的地址。
2.【中等题】简述String 和StringBuffer的区别。
答:
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
3.【中等题】String s = new String(“xyz”);创建了几个String Object?
答:
2个,1个在String池中,一个在堆内存中。
4.【基础题】是否可以继承String类?
答:
String类是final类故不可以继承。
第七章 数组及算法
笔试题
一、填空题
1.【基础题】字符串的下标从 0 开始,数组的下标从 0 开始。
2.【基础题】int[] c1 = new int[10]; int[] c2 = {1,2,3,4,5,6,7,8,9,0}; 数组c1中的元素有__10__个;c2中的元素有__10__个;已初始化赋值的是__C2__;当执行System.out.println(c2[12])代码会产生__数组下标越界 错误.
二、选择题
1.【基础题】以下选项中,请选出数组声明错误的 (C、D)
A.String[] seasons = {“winter”, “spring”, “summer”, “fall”};
B.int[] intArray = new int[5];
C.String []StrArray = new String(“abc”,“123”);
D.int[] anArray = {3,x,9,2};
2.【基础题】以下关于数组的描述有误的是 ( D )
A.整型数组中的各元素的值必须是整型
B.数组是有序数据的集合
C.如数组名为ab,即ab.length可以取得该数组的长度
D.数组的下标从1开始
3.【基础题】请选择不正确的描述 ( C )
A.可以声明任何类型的数组──包括原始类型或类类型
B.数组的下标从0开始
C.数组中的元素可以自动增长
D.用数组的属性length可以得到数组的长度
三、名词解释
1.【基础题】数组:数组是一种数据结构,用来存储同一类型值的集合.通过一个整形下标可以访问数组中的每一个值.一旦创建了数组就不能再改变它的大小了.
四、问答题
1.【基础题】数组有没有length()这个方法? String有没有length()这个方法?
答:  
数组没有length()这个方法,有length的属性。
  String有length()这个方法。

第八章 类和对象
笔试题
一、填空题
1.【基础题】抽象类的关键字是abstract
2.【基础题】子类的构造中显示调用父类默认构造方法的代码是 super() 父类有参构造中显示调用自身默认构造方法的代码是 this() 。
3.【基础题】final关键字可以修饰在 类 、 属性 和 方法 前面
二、选择题
1.【基础题】面向对象的特征有(ABC)
A.继承
B.多态
C.封装
D.抽象
2.【基础题】请选择下面程序中正确的选项 (B C)
A.int i=0;
if (i) {
System.out.println(“Hi”);
}
B.boolean b=true;
boolean b2=true;
if(bb2) {
   System.out.println(“So true”);
   }
C.int i=1;
  int j=2;
  if(i
1|| j2)
   System.out.println(“OK”);
D.int i=1;
int j=2;
if (i
1 &| j==2)
  System.out.println(“OK”);
3.【基础题】方法重载必须的条件为 (A B)
A.参数不同
B.参数类型不同
C.返回值不同
D.参数顺序不同
三、名词解释
1.【基础题】重载:如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载
2.【基础题】OOA: 面向对象分析方法(Object-Oriented Analysis)
3.【基础题】OOD: 面向对象设计方法(Object-Oriented design)
4.【基础题】OOP: 面向对象编程方法(Object-Oriented programming)
四、问答题
1.【中等题】abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
  答:
  都不能
2.【中等题】是否可以在静态(static)方法内部调用非静态(static)方法?
答:
不可以,如果其中包含对象的method();不能保证对象初始化。
3.【中等题】面向对象的特征有哪些方面
1)抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性, 新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3)封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4)多态:
多态是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

第九章 构造方法
笔试题
一、填空题
1.【基础题】构造方法 能 ( 能或者不能)被public、private、protected修饰
二、选择题
1.【基础题】下列说法正确的有( C)
A.类中的构造函数不可省略
B.构造函数必须与class同名,但方法不能与class同名
C.构造函数在一个对象被new时执行
D.一个class只能定义一个构造函数
2.【中等题】下面哪个关键字可以用在构造方法中? ( E)
A.final
B.static
C.synchronized
D.native
E.都不行
(解析:构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。)
三、名词解释
1.【基础题】constructor: 构造器
四、问答题
1.【基础题】构造方法必须满足哪些条件?
答:
方法名必须与类名称完全相匹配;
不要声明返回类型;
不能被static、final、synchronized、abstract、native修饰。

第十章 变量的生命周期、作用域、参数传递
笔试题
一、填空题
1.【基础题】Java中的静态声明包括 变量 方法 和 块
2.【基础题】final类可以修饰在 类 , 属性 和 方法 前面
3.【基础题】Java的访问控制有四种: private 、 protected、 public 、 默认
4.【基础题】封装一个类通常将属性设为 private ,如果属性名称为speed,该属性的setter方法的应该写成 public void setSpeed(String speed).。
二、选择题
1.【基础题】下面那个是用声明静态方法的关键字 (D)
A.String
B.switch
C.final
D.static
2.【基础题】那个可以作为方法的参数传递 (A、B、C)
A.基本数据类型
B.数组
C.类实例化的对象
D.常量
三、名词解释
四、问答题
1.【中等题】简述final, finally, finalize的含义
答:
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
2.【中等题】当类被加载时,请简述一下类中的静态声明执行顺序
答:
首先初始化静态属性值
然后执行静态块
最后执行类加载时的构造函数
3.【中等题】简述final和finalize的区别
答:
1)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。
2)将变量或方法声明为final,可以保证它们在使用中不被改变。
3)被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
4)被声明为final的方法也同样只能使用,不能重载。
finalize()方法名,不是关键字,它在Object中定义的。Java技术允许使用 finalize是方法名;在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4.【中等题】Java语言里,一个类中静态变量与非静态变量有什么区别?
答:
静态变量或方法, 就是以static修饰的变量或方法, 如static int count; 它的意义是让系统分配一个静态空间给这个变量count, 那么包含这个变量的类的全部实例就会共用这个变量, 任何一个改变了count都会对其余的实例产生影响, 它是在文件编绎时就被初始化的, 比一切其它non-static 变量都要早;
而non-static 变量就是每一个类实例都有自己的count, 任何实例的改变都不会影响到其它的实例的count(也就是分配了各自的空间), 它们是第一次使用的时候才被初始化的
5.【中等题】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:
是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第十一章 常用系统类使用、包和访问控制符
笔试题
一、填空题
二、选择题
1.【基础题】下面导入包语法正确的是( B)
A.import util.Date;
B.import java.util.;
C.package java.util.
;
D.package java.util.Date
2.【基础题】属于访问控制的关键字是( D)
A.import
B.final
C.static
D.protected
3.【基础题】对成员的访问控制保护最强的是( B)
A.public
B.private
C.默认
D.protected
4.【基础题】Math类哪个方法是求绝对值( A)
A.abs
B.random
C.exp
D.print
三、名词解释
1.【基础题】包:Java中的包(package)指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface)。包是类的容器,用于分隔类名空间
四、问答题
1.【中等题】简述包的用途
答:
1)包允许你将类文件组织起来,便于查找和使用合适的类。
2)包不仅包含类和接口,还能包含其它包,从而形成有层次的包空间。
3)包有助于避免命名冲突。当你使用很多类时,确保类和方法名称的唯一性是非常困难的。
4)包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。
2.【基础题】定义包和引入包有什么区别?请各写一个标准语法例子
答:
定义包就是用户自己定义一个类文件夹路径来管理编写的类,不需要对包中的类进行定义说明!而引用一个包就是把系统或者用户一个已经定义好的包直接用,其中包括包里面的类!
package user
import java.io.*
3.【基础题】请描述访问控制符的各自作用域与区别
访问控制 private成员 缺省的成员 protected成员 public成员
同一类中
同一包中其他类
不同包中子类
不同包中非子类
答:
访问控制 private成员 缺省的成员 protected成员 public成员
同一类中 √ √ √ √
同一包中其他类 × √ √ √
不同包中子类 × × √ √
不同包中非子类 × × × √

第十二章 继承
笔试题
一、填空题
1.【基础题】 继承 是一种软件重用形式,在这种形式中,新类获得现有类的数据和方法,并可增加新的功能。
2.【基础题】派生类构造方法可以通过关键字 super 调用基类构造方法
3.【基础题】在Java中继承的关键字是 extends
二、选择题
1.【基础题】如果任何包中的子类都能访问超类中的成员,那么应使用哪个关键词( A)
A.public
B.private
C.protected
D.final
2.【提高题】有关类Demo,那些描述是正确的 (AC)????AD
public class Demo extends Base{
private int count;
public Demo(){
System.out.println(“A Demo object has been created”);
}
protected void addOne() {
count++;
}
}
A.当创建一个Demo类的实例对象时,count的值为0。
B.当创建一个Demo类的实例对象时,count的值是不确定的。
C.超类对象中可以包含改变count 值的方法。
D.Demo的子类对象可以访问count。
三、名词解释
1.【基础题】uses-a: 依赖
2.【基础题】has-a: 聚合
3.【基础题】is-a: 继承
四、问答题
1.【基础题】通过继承,子类可以获得哪些好处?
答:
扩展自己,获得父类的属性和方法。
获取父类的数据和对数据的操作
2.【基础题】简述方法覆盖
答:
方法覆盖是指子类中存在和父类完全同名(方法名相同、返回类型相同、参数表相同)的方法
3.【基础题】简述Super关键词的好处和使用方法、访问范围
答:
super关键字用来解决如何直接访问或初始化从父类继承来的成员。
在写子类无参数构造方法时,不用显式调用父类无参数构造方法,系统会自动提供 ,但在写子类带参数构造方法时,应在第一句写super(参数)来初始化父类成员变量;访问范围包括父类属性、一般方法和构造方法。
4.【中等题】请描述继承中的访问权限控制
答:
本类访问权限
本类方法可访问本类所有变量
本类对象不可访问本类private变量
子类访问权限
子类方法不可访问父类private变量
子类对象不可访问父类private变量
父类对象引用可指向它的任何子类对象,不论是直接还是间接子类,反之不行

第十三章 多态
笔试题
一、填空题
二、选择题
1.【基础题】下列哪种说法是正确的(D )
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法对象?
2.【中等题】请在下题XXXXXX中选择正确的代码填入(D)
public class Parent{
public Parent(){
System.out.println(“good”);
}
public Parent(int j){
System.out.println(“bad”);
}
}

public class Example extends Parent{
public static void main(String[] args){
new Example();
}

public Example(){
XXXXXX
}
}

A.this
B.super
C.Parent
D.什么都不填
3.【基础题】class BaseClass{
private float x=1.0f;
private float getVar(){return x;}
}
class SubClass extends BaseClass{
private float x=2.0f;
//insert code
}
下面哪个构成getVar() 方法的覆盖 ( B )
A.float getVar(){
B.public float getVar(){
C.public double getVar(){
D.protected float getVar(){
E.public float getVar(float f){
4.【中等题】下列说法正确的有(C )
A.类中的构造函数不可省略
B.构造函数必须与class同名,但方法不能与class同名
C.构造函数在一个对象被new时执行
D.一个class只能定义一个构造函数
三、名词解释
四、问答题
5.【基础题】简述什么是多态现象?
答:
是允许将父对象设置成为和一个和多个它的子对象相等的技术,
举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果
6.【中等题】简述方法覆盖重载有什么区别
答:
在继承中,如果子类的一个方法与父类中的方法有相同的名字并具有相同数量和类型的参数,这种情况称为方法覆盖
覆盖是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖
7.【基础题】final有哪三种用法?每种用法是什么含义?
答:
1)当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变
2)将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用
3)当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展

第十四章 抽象类
笔试题
一、填空题
1.【基础题】抽象类的关键字是abstract 。
2.【基础题】抽象类 可以 实现接口,可以继承实体类。
3.【基础题】抽象类不能被实例化,抽象类可以有构造函数 。
4.【基础题】如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法也必须声明为抽象方法 。
二、选择题
三、名词解释
四、问答题
1.【中等题】什么是抽象类?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。==========================
2.【中等题】抽象类为什么不能实例化?
答:
抽象类就是类里面含有了抽象的方法。抽象的方法就是没有实现的方法
有抽象的方法当然不能实例化,如果它能实例 那么这个实例调用那个没有实现的抽象类会有什么结果。所以抽象类不能实例化
3.【中等题】抽象类的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:
抽象方法不可被上述三个中的任意一个修饰,抽象方法只能被public或protected修饰,其他修饰符皆不可以。抽象类的一般就是没有什么具体的实现,主要是让子类来帮助他实现。如果在再abstract之前加static,native,synchronized这些修饰符没有任何意义
4.【中等题】Java中的抽象类有没有对象?
答:
抽象类可以声明对象,但是不能使用自身的构造方法创建对象,但是可以使用子类的构造方法进行创建。
public abstract class A{}
public class B extends A{}
A a = new B();

第十五章 接口
笔试题
一、填空题
二、选择题
1.【中等题】下列那些选项符合接口的特征(A C D )
A.接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法
B.接口有构造方法,可以被实例化。
C.一个接口不能实现另一个接口,但可以继承多个其他接口
D.接口中的方法默认都是public、abstract类型的
2.【基础题】下列哪种定义接口的方式是正确的 ( A )
A.public interface A{ int a(); }
B.public interface A implement B{}
C.interface C { int a; }
D.private interface D{}
E.abstract interface E{}
3.【提高题】请指出下列代码错误的地方 (D)
interface Playable {
     void play();
}
interface Bounceable {
     void play();
}

interface Rollable extends Playable, Bounceable {
     Ball ball = new Ball(“PingPang”); A
}
class Ball implements Rollable { B
    private String name;
     public String getName() {
         return name;
     }
     public Ball(String name) {
         this.name = name;        
     }
   public void play() { C
        ball = new Ball(“Football”); D
         System.out.println(ball.getName());
     }
}
三、名词解释
四、问答题
1.【中等题】抽象类和接口有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
2.【中等题】接口里定义的成员变量都是使用final static修饰的,为什么?
答:
接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。所以接口不能定义变量。

第十六章 异常处理
笔试题
一、填空题
1.【基础题】在“异常”类最上层的类叫Throwable,它有两个直接的子类:Exception和Error。
二、选择题
2.【基础题】程序员将可能发生异常的代码放在(A )块中,后面紧跟着一个或多个(B )块。
A.try
B.catch
C.try、exception
D.exception、try
三、名词解释
四、问答题
1.【中等题】运行时异常与一般异常有何异同?
答:
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常
2.【基础题】throw和throws关键字有什么区别?
答:
throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。throw 用于方法块里面的代码,比throws的层次要低,比如try…catch …语句块,表示它抛出异常,但它不会处理它,而是由方法块的throws Exception来调用异常处理类来处理。throw用在程序中,明确表示这里抛出一个异常。  throws用在方法声明的地方,表示这个方法可能会抛出某异常。throw是抛出一个具体的异常类,产生一个异常。throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。
3.【中等题】JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
答:
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
4.【中等题】请说出Java中的异常处理机制的简单原理和应用?
答:
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

第十七章 集合框架
笔试题
一、填空题
二、选择题
1.【基础题】下面哪个类是实现的Set接口 ( C )
A.Vector
B.LinkedList
C.HashSet
D.Hashtable
2.【基础题】下列哪个集合可以存放重复数据 ( A B)
A.Collection
B.List
C.Map
D.Set
3.【基础题】List中能存放一个NULL值吗? (A )
A.可以
B.可以,不过仅仅当List是一个有序的集合的时候
C.可以,当List为空的时候
D.不可以
4.【中等题】下列程序运行结果是 ( C )
Class Question{
public static void main(String args[]){
TreeMap map = new TreeMap();
map.put(“one”,”1”);
map.put(“two”,”2”);
map.put(“three”,”3”);
displayMap(map);
}

static void displayMap(TreeMap map){
Collection c = map.entrySet();
Iterator i = c.iterator();
while(i.hasNext()){
Object o = i.next();
System.out.print(o.toString());
}
}
}
A.onetwothree
B.123
C.ont = 1 three = 3 two=2
D.one three two
5.【提高题】下列哪个类实现了Collection接口 (B D)
A.Dictionary
B.List
C.Map
D.Set
三、名词解释
四、问答题
1.【中等题】请说出 ArrayList和Vector的区别
答:
主要从二方面来说.
同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半
2.【中等题】请说出HashMap和Hashtable的区别
答:HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
3.【基础题】Collection 和 Collections的区别
答:
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口

第十八章 输入输出
笔试题
一、填空题
1.【基础题】File对象的isFile()方法作用是判断是否是文件,getAbsolutePath() 方法作用是获取文件或目录的绝对路径。
2.【基础题】BufferedReader和BufferedWriter以字符流的方式读写文本文件,且效率更高。
3.【基础题】FileInputStream和FileOutputStream以字节流的方式读写文本文件。
二、选择题
1.【基础题】下列哪个类是实体类(BC )
A.InputStream
B.PrintStream
C.Socket
D.Reader
E.DataInput
2.【提高题】请选择下列程序的运行结果(A)
public class TestIOapp{
public static void main(String [] args) throws IOException{
StringReader stingin = new StringReader(“test”);
LineNumberReader in = new LineNumberReader(stingin);
PrintWriter out = new PrintWriter(System.out);
out.println(in.readLine());
out.flush();
}
}
A.test
B.test:1
C.1:test
D.1 test
3.【提高题】请选择下列程序的运行结果 ( B )
public class TestIOapp{
public static void main(String [] args) throws IOException{
RandomAccessFile file = new RandomAccessFile(“test.txt”,“rw”);
file.writeBoolean(true);
file.writeInt(123456);
file.writeInt(7890);
file.writeLong(1000000);
file.writeInt(777);
file.writeFloat(.0001f);
file.seek(5);
System.out.println(file.readInt());
}
}
A.123456
B.7890
C.1000000
D.777
E.0001
三、名词解释
四、问答题
1.【中等题】请说出java.io.reader和java.io.inputstream的区别
答:
java.io.Reader 和 java.io.InputStream 组成了 Java 输入类。Reader 用于读入16位字符,也就是 Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。
2.【中等题】java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
答:
字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于Reader Writer。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。
3.【中等题】请简述什么是流?
答:
流是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道, 流分为输入流和输出流,输入输出流是相对于计算机内存来说的,如果数据输入到内存,则称为输入流,如果从内存中流出则称为输出流

第十九章 JDBC
笔试题
一、填空题
二、选择题
三、名词解释
1.【基础题】 ODBC:Open Database Connectivity 开放数据库互连
2.【基础题】 JDBC:Java DataBase Connectivity Java数据库连接
3.【基础题】 DBMS:Data Base Management System数据库管理系统
4.【基础题】 URL:Uniform Resource Locator 统一资源定位器
URL组成:协议名和资源名
protocol://resourceName
四、问答题
1.【中等题】Class.forName()的作用?
答:
调用该方法返回一个以字符串指定类名的类的对象。此对象用来与特定的数据库连接。
2.【中等题】简述Statement和PreparedStatement 的区别?
答:
无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译,使用PreparedStatement对象比使用Statement对象的速度更快。
3.【中等题】在connection类中提供了3个控制事务的方法,分别是:
答:
setAutoCommit(boolean bln)
commit():提交事务
rollback():撤销事务
4.【提高题】请简述元数据。
答:
在SQL中,描述数据库或其组成部分的数据称为元数据(区别于那些存在数据库中的实际数据)。我们可以得到三类元数据:关于数据库的元数据、关于结果集的元数据以及关于预备语句参数的元数据。
5.【提高题】 ResultSet 类中的Cursor 方式主要有
ResultSet.TYPE_FORWARD_ONLY,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.TYPE_SCROLL_INSENSITIVE等方式,你能详细说明吗。
答:
ResultSet.TYPE_FORWARD_ONLY(为缺省设置):游标只能前进不能后退,也就是只能从第一个一直移动到最后一个。
ResultSet.TYPE_SCROLL_SENSITIVE :允许游标前进或后退并感应到其它ResultSet 的光标的移动情形。
ResultSet.TYPE_SCROLL_INSENSITIVE :允许游标前进或后退并不能感应到其它ResultSet 的光标的移动情形。

第二十章 XML
笔试题
一、填空题
1.【基础题】XML 是一种 标记 语言。
2.【基础题】XML 的设计宗旨是 传输数据 ,而非显示数据。
3.【基础题】XML 文档必须有一个元素是所有其他元素的父元素。该元素称为 根元素 。
二、选择题
三、名词解释
1.【基础题】XML:EXtensible Markup Language 可扩展标记语言
2.【基础题】DTD:Document Type Definition 文档类型定义
3.【基础题】W3C:World Wide Web Consortium 万维网联盟
4.【基础题】CSS:Cascading Style Sheets 层叠样式单
5.【基础题】XSL:EXtensible Stylesheet Language可扩展样式单语言
四、问答题
1.【中等题】XML文档定义有几种形式?它们之间有何本质区别?
答:
1)两种形式 dtd schema。
2)本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)。
2.【中等题】格式良好的XML文档的标准是必须遵守XML 1.0规范中的语法规则,应满足的条件主要包括:
答:
文档应包含一个或多个元素
文档中只有一个根元素,该元素无任何部分出现在其它元素中
元素必须正确关闭
元素不得交叉
属性值必须加引号

3.【中等题】XML 与 HTML 的主要差异(难度:中)
答:
XML 不是 HTML 的替代。XML 和 HTML 为不同的目的而设计:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。

第二十一章 Java+XML应用
笔试题
一、填空题
二、选择题
三、名词解释
1.【基础题】 DOM:Document Object Model文档对象模型
2.【基础题】 SAX:Simple API for XML 文档边读入边解析
四、问答题

  1. 【提高题】请描述出DOM和SAX解析XML文档各有什么有缺点?
    答:
    DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
    SAX:是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。
  2. 【中等题】你在项目中用到了xml技术的哪些方面?举例说明
    答:
    用到了数据存储,信息配置两方面。
    数据存储:可以将数据库中的数据保存成一个xml文件以方便网络传输.
    信息配置:struts-config.xml是struts框架的核心配置文件, 该文件由struts应用程序启动时自动加载, struts会从中读取ActionForm, Action等相关配置

第二十二章 多线程
笔试题
一、填空题
二、选择题
三、名词解释
四、问答题
1.【提高题】请谈谈进程和线程有什么区别?
答:
进程一般是对操作系统而言的。例如,你打开word编辑文档,同时打开outlook收取邮件。我们可以说这时系统内有两个进程在运行。即多个程序几乎在同一时间执行多个任务。
线程一般是对某一程序而言的。如上例,你打开outlook收新邮件的同时,还可以看已下载的邮件,这两件事没有相互干扰,那么我们说此时这一程序中至少有两个线程在运行。即每一个程序在同一时间内执行多个任务。
2.【中等题】多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
3.【中等题】sleep() 和 wait() 有什么区别?
答:
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
4.【中等题】启动一个线程是用run()还是start()?
答:
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
5.【中等题】请说出你所知道的线程同步的方法。
答:
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
6.【提高题】请描述出线程存在的几种状态?
答:
1)线程可以正在运行(running)。只要获得CPU时间它就可以运行。
2)运行的线程可以被挂起(suspend),并临时中断它的执行。
3)一个挂起的线程可以被恢复(resume,允许它从停止的地方继续运行。
4)一个线程可以在等待资源时被阻塞(block)。
5)在任何时候,线程可以终止(terminate),这立即中断了它的运行。一旦终止,线程不能被恢复。
7.【提高题】当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:
不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十三章 网络编程
笔试题
一、填空题
二、选择题
三、名词解释
1.【中等题】TCP:Transmission Control Protocol传输控制协议
是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
2.【中等题】UDP:User Datagram Protocol用户数据报协议
UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单的说,如果一个主机向另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备接收数据。如果另外一台主机收到了数据,它不会确认收到与否。
3.【基础题】IP:Internet Protocol互联网协议
4.【基础题】LAN:local area network局域网
5.【基础题】WAN:wide area network广域网
四、问答题

  1. 【提高题】什么是网络通信协议
    答:
    计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
  2. 【提高题】 网络通信接口
    答:
    为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间 能进行信息交换。接口包括两部分:
    硬件装置:实现结点之间的信息传送
    软件装置:规定双方进行通信的约定协议

3.【提高题】你能说出TCP/IP的7层协议吗?
答:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

第二十四章 J2EE和Servlet概述
笔试题
一、填空题
1.【基础题】我们常用的Servlet的版本是 2.4 。
2.【基础题】Tomcat的核心配置文件是 server.xml。
3.【基础题】Tomcat中发布一个WEB应用时,通常把Web应用发布在 webapps 目录下。
4.【基础题】Tomcat将Jsp生成的Servlet源文件和和字节码文件放在work 目录下。
5.【基础题】Tomcat的内置编码就是使用了 ISO-8859-1。
二、选择题
三、名词解释
1.【基础题】Java EE:Java Platform Enterprise Edition
2.【基础题】HTTP:Hypertext Transfer Protocol
四、问答题
1.【提高题】C/S和B/S之比较
答:
C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S是美国Borland公司最早研发,B/S是美国微软公司研发。
1) C/S架构软件的优势与劣势
a)应用服务器运行数据负荷较轻。
b)数据的储存管理功能较为透明。
c)C/S架构的劣势是高昂的维护成本且投资大。
d)传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。
2) B/S架构软件的优势与劣势
a)维护和升级方式简单。
b)成本降低,选择更多。
c)应用服务器运行数据负荷较重。
2.【提高题】J2EE规范了服务器端应用系统的开发框架,其中最核心的思想就是分层和组件的思想,那么分层是哪几层,分别有哪些组建?
答:
分层:共分为四层,数据层,业务层,表述层,客户层。
组件:三大类,即业务逻辑组件(EJB/JavaBean组件)、Web组件(JSP和Servlet组件)和客户端组件(应用程序客户端组件或Applet组件)。
3.【提高题】J2EE是技术还是平台还是框架?
答:
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
4.【提高题】JAVA13种核心技术,你能说出来吗?
答:
J2EE基础技术XML、RMI、JNDI 、JMS
J2EE主要技术JDBC、Servlet、JSP、EJB
J2EE其它技术JTA、JTS、Java IDL、Java Mail、JAF
5.【基础题】你能说出哪些J2EE开发工具和服务器
答:
开发工具:
Borland公司的JBuilder
Sun公司的SunJavaStudio
开源的IDE Eclipse
服务器:
Apache的Tomcat
IBM的WebSphere
BEA的WebLogic
6.【中等题】说一说Servlet的生命周期?
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
7.【中等题】什么是Web容器?
答:实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.

第二十五章 Servlet
笔试题
一、填空题
二、选择题
三、名词解释
四、问答题
1.【中等题】什么是Web容器?
答:
实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括: 并发性,安全性,生命周期管理等等.
2.【中等题】说一说Servlet的生命周期?
答:
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
3.【中等题】 JAVA SERVLET API中forward() 与redirect()的区别?(中等)
答:
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的 地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的 链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
4.【基础题】 写出Servlet类的基本结构?
答:
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
5.【基础题】什么情况下调用doGet()和doPost()?
答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。

第二十六章 JSP
笔试题
一、填空题
二、选择题
1.【基础题】在Jsp指令中errorPage(“url”)的意思是(C)
A.将本页面设置为错误的页面
B.将本页面中所有的错误的信息保存到url变量中
C.为本页面指定一个错误页面
D.没有具体的含义

三、名词解释
1.【基础题】JSP: Java Server Page
2.【基础题】JS: Java Script
四、问答题
1.【中等题】 JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?(中等)
答:
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet 主要用于控制逻辑。
2.【中等题】 jsp的四种范围是什么?(中等)
答:
pageContext否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关 系)
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整 个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
3.【中等题】 JSP中动态INCLUDE与静态INCLUDE的区别?(中等)
答:
动态INCLUDE用jsp:include动作实现 <jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可 以带参数。静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用 于包含静态页面<%@ include file=“included.htm” %>
4.【中等题】 jsp有哪些动作?作用分别是什么?(中等)
答:
JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
5.jsp如何使用注释?
 答:

  1. <%-- --%> 2); //; 3)/** **/; 4) ;
    6.【中等题】 get和post的区别?(难)
    答:
    Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
    1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
    2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单 中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
    3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
    4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
    5)Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
    6)Get是Form的默认方法。

第二十七章 JSP内置对象
笔试题
一、填空题
二、选择题
三、名词解释
1.【基础题】 JSP:Java Server Pages,JSP是在Servlet技术上发展起来的,已经成为J2EE技术应用中非常重要的一个组成部分。JSP是结合HTML、Java代码、JavaScript代码等内容一起处理信息的动态网页技术,在B/S开发架构中主要用于处理客户端的信息。(简单)
四、问答题
1.【中等题】 Request对象的主要方法有哪些? (中等)
答:
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚
举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果
是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
&&&getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
2.【基础题】 JSP中动态INCLUDE与静态INCLUDE的区别?(简单)
答:
动态INCLUDE用jsp:include动作实现
  它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
  静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态 页面
3.【基础题】 JSP有哪些内置对象?作用和分别是什么?
答:
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
  request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的异常
.
第二十八章 EL表达式和JSTL标记库
笔试题
一、填空题
1.【基础题】 EL 表达式的格式是:用 美元符号($) 定界,内容包括在 花括号({}) 中。
2.【基础题】 JSTL由四个定制标记库 core 、 format 、 xml 、 sql 和一个 函数库 组成。
二、选择题
三、名词解释
1.【基础题】 EL表达式:Expression Language 表达式语言,它是为了便于存取数据而定义的一种语言,JSP2.0之后才成为一种标准。
2.【基础题】 JSTL:JSP Standard Tag Library JSP标准标签库
四、问答题
1.【中等题】JSTL与传统JSP开发手段的区别和优势是什么?
答:
传统的JSP开发会使用脚本元素在页面中嵌入程序源代码(通常是 Java 代码), 对于这样的 JSP 页面,其软件维护任务的复杂度大大增加了。
JSTL 使 JSP 作者可以减少对编制脚本元素的需求,甚至可以不需要它们,并避 免了相关的维护成本。
2.【中等题】EL表达式的隐含对象及其作用(至少说出4个)?
答:
1)applicationScope   应用程序范围内的scoped变量组成的集合
2)cookie   所有cookie组成的集合
3)header  HTTP请求头部,字符串
4)headerValues  HTTP请求头部,字符串集合
5)initParam   全部应用程序参数名组成的集合
6)pageContext   当前页面的javax.servlet.jsp.PageContext对象
7)pageScope  页面范围内所有对象的集合
8)param  所有请求参数字符串组成的集合
9)paramValues   所有作为字符串集合的请求参数
10)requestScope  所有请求范围的对象的集合
11)sessionScope  所有会话范围的对象的集合
第二十九章 Web监听器和过滤器
笔试题
一、填空题
1.【基础题】Web监听器的种类可以分为: Servlet上下文(ServletContext)监听 、 Http 会话(HttpSession)监听 和 请求(ServletRequest)监听 。
2.【基础题】如果要编写一个过滤器,需要实现 javax.servlet.Filter 接口。
二、选择题
三、名词解释
四、问答题
1.【基础题】过滤器的作用是什么?
答:
截取从客户端发过来的请求,并进行处理,对数据进行重新编码,过滤掉客户的某 些不应出现的词汇,可以验证用户是否已经登陆。

第三十章 会话跟踪
笔试题
一、填空题
1.【基础题】在Servlet中,我们可以使用 HttpServletRequest 对象的 getSession() 方法获取 session对象。
2.【基础题】使用Session进行数据传递时,调用session对象的getAttribute()方法需要传入的参数类 型是 String ,返回的数据类型是 Object 。
二、选择题
1.【基础题】从session中获取数据的方法是:(D)
getParameter();
getCreationTime();
getAttributeNames();
getAttribute();
三、名词解释
四、问答题
四种会话跟踪技术 (中等)
答:
会话作用域ServletsJSP 页面描述
page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这 既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可
能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关 系)
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整 个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域

第三十一章 MVC
笔试题
一、填空题
1.【基础题】 DAO类属于MVC中的 模型 层, Servlet类属于MVC中的 控制 层, JSP属于MVC中的 视图 层
二、选择题
三、名词解释
1.【基础题】 MVC:MVC是Model-View-Controller三个英文单词的所写,是一种流行的软件设计模式。即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
2.【基础题】 DAO: Data Access Object数据访问接口.
3.【基础题】 VO: value object值对象.
四、问答题
1.【中等题】 简述MVC三个层次的作用。
1)视图(View):代表用户交互界面,一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理。
2)模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心部分。
业务模型包含一个很重要的模型——数据模型。数据模型主要指实体对象的数据保存(持久化),所有有关数据库的操作只限制在该模型中。
3)控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。控制层并不做任何的数据处理。
2.【中等题】 简述MVC的优缺点。
优点:
开发效率高。
松耦合,程序灵活性和扩展性好。
代码重用度更高。
易于人员分工。
缺点:
1)代码复杂度增加。
2)代码数量增加。
3)不适合开发小型项目。

第三十二章 国际化
笔试题
一、填空题
1.【基础题】资源文件的后缀名是 properties 。
2.【基础题】一个资源文件的名称是appenUS.properties, 其中app是指 基本名称 , en是指 语言编码 , US是指 国家编码 。
3.【基础题】资源文件中可以添加不同国家的语言字符, 编写完成后需要转换称 Unicode 编码。
二、选择题
1.【基础题】资源文件通常放置在WEB工程的(A)中。
A.classes 目录
B.WEB根目录
C.tomcat根目录
D.WEB-INF目录
三、名词解释
1.【基础题】I18N:国际化(internationalization)的简称。指的是在软件设计阶段,就应该使软件具有支持多种语言和地区的功能。
四、问答题

第三十三章 上传与下载
笔试题
一、填空题
1.【中等题】如果tomcat的安装路径是c:/tomcat5, 已经将一个名称为test的WEB应用程序发布到tomcat中, 在一个servlet中使用 this.getServletContext().getRealPath("/")方法得到的路径是 c:/tomcat5/webapps/test/ 。
2.【基础题】文件上传功能中, 页面表单的请求方式应设成 POST 表单类型应设成 multipart/form-data, 使用<input type=” file ” />表单元素
二、选择题
3.【中等题】如果需要在url中传递中文参数, 需要对中文进行编码, 应该采取以下哪个方法(A)。
A.URLEncode.encode()
B.URLDecoder.decode()
C.request.setCharacterEncoding()
D.response.setCharacterEncoding()
三、名词解释
四、问答题

第三十四章 Struts
笔试题
一、填空题
1.【基础题】 Struts的核心配置文件名称是 struts-config.xml 。
2.【基础题】 Struts的标记库有 struts-html标记库, struts-bean标记库, struts-logic 标记库, struts-nested标记库, struts-tiles标记库。
3.【基础题】 Struts中使用 html:errors 标记显示错误消息,使用 bean:message/ 标记显示资源文件中的数据, 使用 struts-logic 标记库执行页面逻辑处理。
4.【基础题】在ActionForm中定义 FormFile 类型的属性可以方便的处理上传。
5.【基础题】一个Action通常可以配置一个或多个ActionForard, ActionForward必须配置 name 和 path 两个属性。
二、选择题
三、名词解释
1.【基础题】 Strtus: Struts是一个非常流行的MVC框架, 是Apache软件基金会Jakarta项目中的一个子项目Struts采用JSP作为MVC的视图, 采用JavaBean充当模型部分, 由ActionServlet具体指定的Action动作类作为控制器,负责视图与模型之间的交互。
四、问答题
1.【中等题】简述Struts的工作流程。
1)控制器读取配置文件进行初始化工作。
2)控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面。
3)在控制器调用具体的Action的execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
4)执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。

第三十五章 Hibernate
笔试题
一、填空题
1.【基础题】Hibernate关注应用程序的 持久 层。
2.【基础题】ORM指的是 对象 和 关系 的映射。
3.【基础题】面向关系概念中的表 对应与面向对象概念中的 类 , 表中的行对应与 对象 , 表中的字段对应与 属性 。
4.【基础题】Hibernate的核心配置文件名称通常是 hibernate.cfg.xml , 对象关系映射文件名称通常是类名加上 .hbm.xml 组成。
5.【中等题】Hibernate 对象的三种状态 瞬时状态 , 持久状态 , 脱管状态。
6.【中等题】Hibernate的对象检索方式有 OID检索方式,HQL检索方式, QBC检索方式, 本地SQL检索方式。
二、选择题
三、名词解释
1.【基础题】名词解释—Hibernate: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。
四、问答题

第三十六章 AJAX
笔试题
一、填空题
1.AJAX的核心对象是 XMLHttpRequest 。
2.AJAX中发送请求的方法是 send() , 服务器返回数据如果是文本用 responseText 属性访问,如果是xml用 responseXML 属性访问。
3.通常要判断XMLHttpRequest对象的readyState等于 4 并且服务器的状态码 等于 200 时进行后续处理。
二、选择题
三、名词解释
1.AJAX: AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。
四、问答题
1.简述AJAX应用和传统WEB应用的区别。
传统WEB应用是页面完全刷新, 简单操作也导致重新加载页面全部数据。AJAX应用是部分刷新页面,只作必要的数据交换,并且可以异步访问服务器端。

第三十七章 Spring
笔试题
一、填空题
二、选择题
三、名词解释
1.Spring—Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。
2.轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
3.控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
4.面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
5.容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
6.框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
四、问答题

QUESTION NO: 1
publicclass Test1 {

public static void changeStr(String str){
str=“welcome”;
}
publicstaticvoid main(String[] args) {

String str=“1234”;
changeStr(str);
System.out.println(str);
}
}
//输出结果:1234
//这里虽然是一个静态方法,但是里面的变量是一个局部变量,
//所以这里不因为是静态方法,就误认为里面的变量也是静态变量了

QUESTION NO:2
publicclass Test2 {
static boolean foo(char c) {
System.out.print©;
Return true;
}
publicstaticvoid main(String[] argv) {
int i = 0;
//for(65;88&&(i<2);67)
for (foo(‘A’); foo(‘B’) && (i < 2); foo(‘C’)) {
i++;
foo(‘D’);
}
}
}
/*
What is the result
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
//输出结果是:ABDCBDCB
分析:FOR循环里面讲究的条件要为真,与你的判断式是什么没有关系
就像这里,虽然是打印的字母,但是却不是false,所以可以执行
第一次进行循环:
foo(‘A’)打印字母A,(注:这里不是false条件就默认为true条件)
foo(‘B’)打印字母B,i=0,比较(i < 2),条件为true,进行循环体,foo(‘D’)打印D
foo(‘C’)打印字母C
第二次循环:
foo(‘B’)打印B,i=1,比较(i < 2)为true,进行循环体,foo(‘D’)打印D
foo(‘C’)打印字母C
第三次循环:
foo(‘B’)打印字母B,i=2,比较(i < 2)为false,退出循环,得结果
*/

QUESTION NO: 3

  1. class A {
  2. protected int method1(int a, int b) { return 0; }
  3. }
    Which two are valid in a class that extends class A (Choose two)A
    A. public int method1(int a, int b) { return 0; }
    B. private int method1(int a, int b) { return 0; }
    C. private int method1(int a, long b) { return 0; }
    D. public short method1(int a, int b) { return 0; }
    E. static protected int method1(int a, int b) { return 0; }
    publicclass B extends A{
    /**
    *@paramargs
    */

//can not reduce the visibility of the inherited method from A
//即不能够使从类A中继续来的方法的可见性降低
//private int method1(int a, int b) { return 0; }

//This static method cannot hide the instance method from A
//静态方法不能够隐藏继承于A的实例
//static protected int method1(int a, int b) { return 0; }

//返回类型与A中的该方法不一致
//public short method1(int a, int b) { return 0; }

/**
*总结:类的继承中,如果要想重载父类的方法,必须要和父类中的返回类型、可见性等等都要操作一致
*否则,程序就会报错。一定遵守子类要遵从于父类的原则
*而我选择的答案居然是private int method1和static protected int
*我选择第一个的错误理由是:因为原来为保护的,如果我这里设为public,那么就扩展了其原来的可见性
*本来原来就是对包外不可见的,现在变成对包外可见的了,所以就选择的是private
*选择第二个的错误理由是:都是保护的,这里只是变成了静态的而已
*/

//这里是写了一个重载方法,因为参数类型不一致,不会报错
privateint method1(int a, long b) { return 0; }

//可见性可以增大,但是不能够缩小,正确
Public int method1(int a, int b) { return 0; }

publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub

}
}

QUESTION NO: 4

  1. public class Outer{
  2. public void someOuterMethod() {
  3. // Line 3
  4. }
  5. public class Inner{}
  6. public static void main( String[]argv ) {
  7. Outer o = new Outer();
  8. // Line 8
  9. }
  10. }

Which instantiates an instance of Inner(A)
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()
答案如下:
publicclass Outer {
public void someOuterMethod() {
// Line 3
new Inner();//放在这里不出错
}
publicclass Inner {
}

publicstaticvoid main(String[] argv) {
Outer o= new Outer();
// Line 8
//o不能够被解释成为一种类型,出错
//new o.Inner();
/**
*下面两种用法,都报下面的错误:
*NoenclosinginstanceoftypeOuterisaccessible.
*Mustqualifytheallocationwithanenclosinginstance
*oftypeOuter(e.g.x.newA()wherexisaninstanceofOuter)
*/
//new Outer.Inner();
//new Inner();
}
}

QUESTION NO: 5

Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream
(译:那个方法是servlet用于将其session ID入在一个URL中,该URL写入servlet的响应输出流)
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.

QUESTION NO: 6

Which two are equivalent (Choose two)(BG)
A. <%= YoshiBean.size%>
B. <%= YoshiBean.getSize()%>
C. <%= YoshiBean.getProperty(“size”)%>
D. <jsp:getProperty id=“YoshiBean” param=“size”/>
E. <jsp:getProperty name=“YoshiBean” param=“size”/>
F. <jsp:getProperty id=“YoshiBean” property=“size”/>
G. <jsp:getProperty name=“YoshiBean” property=“size”/>

QUESTION NO: 7

Which of the following statements regarding the lifecycle of a session bean are correct

1.java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.

2.SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.

3.An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.

4.JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.

5.Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.

第二部分:概念题

1. 描述Struts体系结构?对应各个部分的开发工作主要包括哪些?
  Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:
 
  1)模型(Model)  
  在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组Actinform Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。  
  2)视图(View)  
  视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。
  
  3)控制器(Controller)  
  在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。struts-config.xml 文件配置控制器。

2. XML包括哪些解释技术,区别是什么?
  包括:DOM(Document Object Modal)文档对象模型,SAX(Simple API for XML)。DOM是一次性将整个文档读入内存操作,如果是文档比较小,读入内存,可以极大提高操作的速度,但如果文档比较大,那么这个就吃力了。所以此时SAX应用而生,它不是一次性的将整个文档读入内存,这对于处理大型文档就比较就力了

3. JSP有哪些内置对象和动作?它们的作用分别是什么?
JSP共有以下9种基本内置组件:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
常用的组件:request、response、out、session、application、exception

4、SQL问答题

SELECT * FROM TABLE

SELECT * FROM TABLE

WHERE NAME LIKE ‘%%’ AND ADDR LIKE ‘%%’

AND (1_ADDR LIKE ‘%%’ OR 2_ADDR LIKE ‘%%’

OR 3_ADDR LIKE ‘%%’ OR 4_ADDR LIKE ‘%%’ )

的检索结果为何不同?
答:

我做了一下测试,在ACCESS里面,用它的查询,这样会和在MYSQL得到不同的结果,各位不妨试试,我昨天就是在ACCESS里用SQL查询,得到的结果为空,就是没有记录;而在MYSQL里面,条件为空的记录不显示,其它的都显示。

5、SQL问答题

表结构:

1、 表名:g_cardapply
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_applydate bigint 8;//申请日期
g_state varchar 2;//申请状态

2、 表名:g_cardapplydetail
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_name varchar 30;//申请人姓名
g_idcard varchar 18;//申请人身份证号
g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号。

题目:
1、 查询身份证号码为440401430103082的申请日期
Select g_cardapply.g_ applydate from g_cardapply, g_cardapplydetail where g_cardapplydetail.g_idcard=’’ and g_cardapply.g_applyno=g_cardapplydetail.g_applyno
2、 查询同一个身份证号码有两条以上记录的身份证号码及记录个数

3、 将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
Update g_cardapply. g_state=’07’, g_cardapplydetail .g_state
4、 删除g_cardapplydetail表中所有姓李的记录

------------------------测试-----------------

create database mianshi

use mianshi;

create table g_cardapply(
g_applyno varchar(8),
g_applydate bigint,
g_state varchar(20)
)
go
create table g_cardapplydetail(
g_applyno varchar(8),
g_name varchar(30),
g_idcard varchar(18),
g_state varchar(20)
)

1、select a1.g_applydate from g_cardapply as a1 inner join g_cardapplydetail a2 on
a1.g_applyno=a2.g_applyno where a2.g_idcard=“123” ;

2、select g_idcard,count(g_idcard) from g_cardapplydetail
group by g_idcard having count(g_idcard)>=2;

3、update g_cardapply set g_state=603 from g_cardapply as g_d inner join g_cardapplydetail as g_c on
g_d.g_applyno=g_c.g_applyno and g_idcard=‘123’;更新第一个表的g_state

update g_cardapplydetail set g_state=603 where g_idcard=‘123’;
反转函数:
Scanner input = new Scanner(System.in);
System.out.print(“请输入:”);
String s1 = input.nextLine();//得到输入的字符串
System.out.print(“翻转后:”);
for(int i=s1.length()-1;i>=0;i–){
System.out.print(s1.charAt(i));
}
截取长度最长且为数字的字符串:
// TODO Auto-generated method stub
System.out.println(“请输入一个数:”);
Scanner input=new Scanner(System.in);
String s=input.next(); //输入的数
String b=""; //求出的数字
List list=new ArrayList(); //存放字符串中一连串的数字

	boolean flag=true;								//判断一个数是不是数字
	for(int i=0;i<s.length();i++){
		char t=s.charAt(i);						//取出每一个字符来
		if(t>='0'&&t<='9'){						//判断是不是数字
			b=b+t;								//将数字连成字符串
			flag=true;							//将标记改为真
			if(i==s.length()-1){				//判断是不是最后一位
				flag=false;						//标记就为假
			}
		}
		else{
			flag=false;							//标记为假
		}
		if(flag==false){						//标记为假的状况
			if(b!=""){
				list.add(b);						//把求出的字符串放入数组或集合
			}
			b="";								//把字符赋值为空
		}
	}
	List list2=paiXu(list);						//调用排序方法
	for(int i=0;i<list2.size();i++){
		System.out.println(list2.get(i));		//显示
	}
}
public static List  paiXu(List list){			//排序方法
	int max=0;									//集合中最长的字符串
	//冒泡排序法
	for(int i=0;i<list.size();i++){
		if(list.get(i).toString().length()>max)	{
			max=list.get(i).toString().length();
		}
		}
	List list1=new ArrayList();
	for(int i=0;i<list.size();i++){
		if(list.get(i).toString().length()==max){		//判断是不是最长的字符串
			list1.add(list.get(i));						//把最长的字符串加入到集合中
		}
	}
	return list1;

三角形:
for(int i=0;i<4;i++){
for(int j=0;j<4-i;j++){
System.out.print(" “);
}
for(int k=0;k<2i+1;k++){
System.out.print("
”);
}
System.out.println();
}

	System.out.println("倒三角形打印结果:");
	 int i, j;
	  int row = 5;
	  for(i=1; i<=row; i++){
	   for(j=1; j<=i-1; j++){
	    System.out.print(" ");
	   }
	   for(j=1; j<= row+1-i; j++) {
	    System.out.print("* ");
	   }
	   System.out.println();
	  } 

1. 下列那种语言是面向对象的(C)
A. C B. PASCAL C. C++ D. FORTRAN77
2.在 Windows9x 下,可以进入 MS-D0S 方式。当在 DOS 提示符下键入 ( B ) 命令后,系统将退出 MS-DOS方式,返回到 WIndows 方式。 A. CLOSE B. EXIT C. QUIT D. RETURN
3.下面哪些是面向对象的基本特性:( ABC)A 多态 B 继承 C 封装 D 接口
4.在C++中经常要进行异常处理,下面哪些是异常处理常用到的关键词:(ABC)
A try B catch C throw D break E contiue
5.数据库技术中的“脏数据’,是指(C)的数据。A.错误B.回返C.未提交D.未提交的随后又被撤消
6.TCP/IP是一种(A,B)A.标准 B.协议 C.语言 D.算法
7. 下面有关计算机操作系统的叙述中,不正确的是(B ) A 操作系统属于系统软件 B 操作系统只负责管理内存储器,而不管理外存储器 C UNIX 是一种操作系统 D 计算机的处理器、内存等硬件资源也由操作系统管理
8.微机上操作系统的作用是( D) A 解释执行源程序 B 编译源程序
C 进行编码转换 D 控制和管理系统资源
9.下列存储器中存取速度最快的是( A) A 内存 B 硬盘 C 光盘 D 软盘
10.在计算机中,—个字节是由多少个二进制位组成的(B ) A. 4 B. 8 C. 16 D. 24
11. 存储16×16点阵的一个汉字信息,需要的字节数为( A )A 32 B 64 C 128 D 256
12. 以下选项中合法的字符常量是(BC)A.“B” B. ‘\010’ C. 68 D. D
13. 假定x和y为double型,则表达式x=2,y=x+3/2的值是(D)A. 3.500000 B. 3 C. 2.000000 D. 3.000000
14. 以下合法的赋值语句是(BCD)//In C++ ,choice D also is correct, but in C language, D is wrong.
A. x=y=100 B. d–; C. x+y; D. c=int(a+b);
15. 设正x、y均为整型变量,且x=10 y=3,则以下语句pprintf("%d,%d\n",x–,--y); 的输出结果是(D)
A.10,3 B. 9,3 C. 9,2 D.10,2
16. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)
A .INPUT x、y、z; B. scanf("%d%d%d",&x,&y,&z);C. scanf("%d%d%d",x,y,z); D. read("%d%d%d",&x,&y,&z);
17.以下数组定义中不正确的是(D)A) int a[2][3]; B) int b[][3]={0,1,2,3};C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
18. 以下程序的输出结果是(A)main(){ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];
}A) 0650 B) 1470 C) 5430 D) 输出值不定
19 以下程序的输出结果是(B)main(){char st[20]= “hello\0\t\”;printf(%d %d \n",strlen(st),sizeof(st));
}A) 9 9 B) 5 20 C) 13 20 D) 20 20
20. 当调用Windows API函数InvalidateRect,将会产生什么消息(A)A:WM_PAINT B:WM_CREATE C:WM_NCHITTEST D:WM_SETFOCUS
二、填空题(每题3分,共30分)
1.请列举当前一些当前流行的数据库引擎,SQL SERVER,ORACLE,BDE,Microsoft Jet。
2. 为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确的单条DOS命令为COPY *.TXT PRN。
3. 计算机网络分为局域网和广域网,因特网属于广域网。
4. 设y是int型变量,请写出判断y为奇效的关系表达y%2!=0。
5. 设有以下程序:main(){ int n1,n2;scanf("%d",&n2);while(n2!=0){ n1=n2%10;n2=n2/10;printf("%d",n1);}}
程序运行后,如果从键盘上输入1298;则输出结果为8921。
6.以下程序运行后的输出结果是:9876 876
main(){ char s[ ]=“9876”,p;for ( p=s ; p<s+2 ; p++) printf("%s\n", p);}
7.以下函数的功能是:求x的y次方,请填空。double fun( double x, int y){ int i;double z;for(i=1, z=x; i<y;i++) z=z
x ;return z;}
8.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE myf; long f1;myf= fopen (“test.t”,“rb”);
fseek(myf,0,SEEK_END); f1=ftell(myf);fclose(myf);printf("%d\n",f1);
9. 以下程序输出的最后一个值是120。
int ff(int n){ static int f=l;f=f
n;return f;}main(){ int i;for(I=1;I<=5;I++ printf("%d\n",ff(i))😉
10. 以下程序运行后的输出结果是52 main(){ int i=10, j=0;do{ j=j+i; i–;while(i>2);printf("%d\n",j);}
三、判断题(每题2分,共20分)
1:动态链结库不能静态调用。 错误
2:UDP是面向无连接的网络连接 正确
3:ASP是一种数据库引擎 错误
4:队列是先进后出。 错误
5:Weblogic是分布式应用服务器。 正确
6:TCP,UDP都是传输层的协议。 正确
7: 两个线程不能共存于同一地址空间 错误
8: JAVA是一种跨平台的开发工具 正确
9.在WINDOWS操作系统中对外设是以文件的方式进行管理 正确
10. 虚拟内存实际是创建在硬盘上的 正确
四、问答题(每题10分,共30分)
1. 写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出的和以总和显示的SQL。SELECT No , Name AS ‘姓名’ ,Num1 ,Num2,(Num1+Num2) AS ‘总和’
FROM Custom
何为“事务处理”,谈谈你对它的理解。事务处理是指一个单元的工作,这些工作要么全做,要么全部不做。作为一个逻辑单元,必须具备四个属性:自动性、一致性、独立性和持久性。自动性是指事务必须是一个自动的单元工作,要么执行全部数据的修改,要么全部数据的修改都不执行。一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。所有的内部数据结构,在事务结束之后,必须保证正确。独立性是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务看到的数据要么是另外一个事务修改这些事务之前的状态,要么是第二个事务已经修改完成的数据,但是这个事务不能看到正在修改的数据。
3. 常用的数据结构有哪些?请枚举一些。(不少于5个)链表、堆栈、二叉树、队列、图、堆,集合。
4. 什么是OOP?什么是类?请对比类和对象实例之间的关系。OOP是Object_oriented Programming(面向对象编程)的缩写。这主要是为了区别于以前的面向过程的程序设计!指的是用对象的观点来组织与构建系统,它综合了功能抽象和数据抽象,这样可以减少数据之间的耦合性和代码的出错几率。使用面向对象编程技术可以使得软件开发者按照现实世界里人们思考问题的模式编写代码,可以让软件开发者更好地利用代码直接表达现实中存在的对象,将问题空间直接映射到解空间!类:即class 在面向对象的程序设计中,专门用“类”来表示用户定义的抽象数据类型(user_defined abstract type)。它将具有相同状态、操作和访问机制的多个对象进行了抽象。类具有继承、数据隐藏和多态三种主要特性。利用类的这三种特性可以更好地表示现实世界中事物。类是同一类对象实例的共性的抽象,对象是类的实例化。对象通常作为计算机模拟思维,表示真实世界的抽象,一个对象就像一个软件模块,可以为用户提供一系列的服务—可以改变对象的状态、测试、传递消息等。类定义了对象的实现细节或数据结构。类是静态的,对象是动态的,对象可以看作是运行中的类。类负责产生对象,可以将类当成生产对象的工厂(Object factory).
5. 有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种算法。//下面使用简单的冒泡法进行排序!
#include “iostream.h” template class CBubble{
private: type *pArray; int size;public:CBubble(type a[],int sizeArray);void sort();void display();};
template CBubble::CBubble(type a[],int sizeArray)
{ pArray=a; size=sizeArray/sizeof(type);}
templatevoid CBubble::sort(){ type temp; for(int i=0;i<size-1;i++) for(int j=0;j<size-1-i;j++) if(pArray[j]>pArray[j+1])//升序{temp=pArray[j+1];pArray[j+1]=pArray[j];pArray[j]=temp;}}
templatevoid CBubble::display(){for(int i=0;i<size;i++)cout<<pArray[i]<<endl;}
void main(void){int a[]={3,10,6,8,98,22};CBubble intData(a,sizeof(a));cout<<“The original data are :”<<endl;intData.display();intData.sort();cout<<“After sorting ,the data are:”<<endl;intData.display();
}
SQLhttp://www.jactiongroup.net/reference/html/index.html //书
http://blog.csdn.net/hbuzhang/archive/2004/12/07/207202.aspx //书
connection connconn.setAuto(false)//表示手动提交conn.commit// 提交conn.rollback();//事务回滚
-内联接use pubsselect a.au_fname, a.au_lname, p.pub_name from authors a inner join publishers p on a.city = p.city order by p.pub_name asc, a.au_lname asc, a.au_fname asc
–左外联接use pubs select a.au_fname, a.au_lname, p.pub_name from authors a left join publishers p
on a.city = p.city order by p.pub_name asc, a.au_lname asc, a.au_fname asc
-使用子查询USE pubs GO SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_idFROM titlesWHERE type = ‘business’) GO
–如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。
–如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。
–该循环不断地将价格加倍直到最高价格超过 $50 USE pubs GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
—如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。
–如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。
–该循环不断地将价格加倍直到最高价格超过 $50
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
CREATE PROCEDURE au_info
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname = @firstname
AND au_lname = @lastname
GO
EXECUTE au_info ‘Dull’, ‘Ann’–或者
EXECUTE au_info @lastname = ‘Dull’, @firstname = ‘Ann’–创建存储过程CREATE PROCEDURE titles_sum @TITLE varchar(40),@SUM money OUTPUT
AS
SELECT @SUM = SUM(price)
FROM titles
WHERE title LIKE @TITLE
GO
DECLARE @TOTALCOST money
EXECUTE titles_sum ‘The%’, @TOTALCOST OUTPUT
select @TOTALCOST
go
CREATE PROCEDURE Oakland_authors
AS
SELECT au_fname, au_lname, address, city, zip
FROM authors
WHERE city = ‘Oakland’
and state = ‘CA’
ORDER BY au_lname, au_fname
GO
–sp_helptext Oakland_authors
ALTER PROCEDURE Oakland_authors
AS
SELECT au_fname, au_lname, address, city, zip
FROM authors
WHERE state = ‘CA’
ORDER BY au_lname, au_fname
GO
–sp_helptext Oakland_authors
–提交事务后,所有书籍支付的版税增加 10%。
begin transaction MyTransaction
update roysched
set royalty = royalty * 1.10
commit transaction MyTransaction
–rollback transaction MyTransaction
select royalty from roysched
–select @@trancount
–1.创建试验实验表
create table temptrigger
( id_temp varchar(2) not null primary key,
temp_name varchar(10) null,
temp_age int null)go
insert temptrigger values(‘01’,‘张三’,‘10’)
insert temptrigger values(‘02’,‘李四’,‘11’)
insert temptrigger values(‘03’,‘王五’,‘12’)
insert temptrigger values(‘04’,‘赵六’,‘11’)
select * from temptrigger go
–2.创建insert , update触发器
create trigger temptrigger_modify
on temptrigger
for insert,update
as
begin
if (select temp_age from inserted) > 15
begin
rollback transaction
print ‘年龄不能超过15岁!’
end
end
–insert temptrigger values(‘04’,‘大朋’,‘17’)
–insert temptrigger values(‘05’,‘大朋’,‘17’)
–insert temptrigger values(‘05’,‘大朋’,‘14’)
–update temptrigger set temp_age=‘18’ where id_temp = ‘01’
–update temptrigger set temp_age=‘9’ where id_temp = ‘01’
-3.创建delete 触发器–drop trigger temptrigger_delete
create trigger temptrigger_delete
on temptrigger
for delete
as
begin
print @@rowcount
if @@rowcount > 1
begin
rollback transaction
print ‘一次删除记录不能多于1条’
end
end
–delete from temptrigger
–delete from temptrigger where id_temp=‘01’
–创建聚集索引create clustered index clindx_titleid on roysched(title_id)–sp_help roysched
–创建非聚集索引create nonclustered index unclindx_titleid on roysched(title_id)–sp_help roysched
–查看索引统计dbcc show_statistics(roysched,titleidind)
–更新索引统计update statistics authors
–重建索引dbcc dbreindex(‘roysched’,unclindx_titleid)
–删除索引drop index roysched.unclindx_titleid-sp_help roysched
1–创建ssn(社会保险号)的基于varchar的自定义数据类型。
–用于存储11位社会保险号(999-99-999)的列。该列不能
–为null。use pubs exec sp_addtype ssn , ‘varchar(11)’ , ‘NOT NULL’
–查看创建的数据类型–sp_help ssn
–使用创建的数据类型create table mytable( myid varchar(2) primary key, myssn ssn)
4-删除创建的数据类型–drop table mytable–exec sp_droptype ssn
?批是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发送到 Microsoft SQL Server 执行。批作为一个整体执行,以GO命令结束。批处理是客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批处理编译为一个执行计划。
触发器?触发器是在对表进行插入、更新或删除操作时自动执行的存储过程?触发器通常用于强制业务规则?触发器可以确保数据的完整性和一致性
事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位(构成单一逻辑工作单元的操作集合)如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。
如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除
?锁 是在多用户环境中对数据访问的限制封锁就是事务 T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)?从程序员的角度看:分为乐观锁和悲观锁。乐观锁:完全依靠数据库来管理锁的工作。悲观锁:程序员自己管理数据或对象上的锁处理。
子查询:一个 SELECT 语句嵌套在另一个 SELECT 语句中。
—索引—是一个数据库对象,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,然后根据指定的排序次序排列这些指针 —优点提高查询执行的速度。 强制实施数据的唯一性。 提高表之间联接的速度。 缺点 存储索引要占用磁盘空间。数据修改需要更长的时间,因为索引也要更新。
?视图?是一种虚拟表,通常是作为来自一个或多个表 的行或列的子集创建的。?视图本质上讲,就是保存在数据库中的select查询?视图并不是数据库中存储的数据值的集合。?对最终用户的好处– 结果更容易理解– 获得数据更容易
?对开发人员的好处– 限制数据检索更容易– 维护应用程序更方便
存储过程?使用一个名称存储的预编译T-SQL语句和流程控制语句的集合?由数据库开发人员或数据库管理员编写
?用来执行管理任务或应用复杂的业务规则 优点?执行速度更快?首次运行时,进行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。?实现多个程序共享应用程序逻辑?组件式编程?能够屏蔽数据库的结构,实现更高的安全性
?减少网络流通量
数据库设计和建模必要性?好的数据库结构有利于:-节省数据的存储空间-能够保证数据的完整性-方便进行数据库应用系统的开发?设计不好的数据库结构将导致-数据冗余、存储空间浪费-内存空间浪费
不管数据库的大小和复杂程度如何,可以用下列基本步骤来设计数据库:–收集信息–标识对象–设计数据模型–标识每个对象 存储的信息类型–标识对象之间的关系
?数据模型是一种标识实体类型及其实体间联系的模型。典型的数据模型由网状模型、层次模型和关系模型。什么是规范化从关系数据库的表中,除去冗余数据的过程称为规范化。—精简数据库的结构—从表中删除冗余的列—标识所有依赖于其它数据的数据
三级范式第一范式的定义: 如果一个表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),则这个表属于第一范式(常记成1NF)。简而言之:“每一字段只存储一个值”。例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 第二范式的定义:如果一个表属于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行都能被唯一的识别。 将1NF转换成2NF的方法是添加主键。学号,课程名,成绩第三范式的定义:如果一个表属于2NF,且不包含传递依赖性,则这个表是第三范式(常记成3NF)。满足3NF的表中不包含传递依赖。简而言之:没有一个非关键属性依赖于另一个非关键属性。学号,课程号,成绩,学分学号,姓名,所在系,系名称,系地址
什么是类与对象?
所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。
类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。
属性与方法?
不同对象具有相同特点,就可能抽象为一定的类,那么这些特点基本上可以分为两类,一类是描述对象静态状态的,就是对象的属性,在程序设计中,可以称之为变量;另一类是描述对象的动作,就是对象的方法,在程序设计中我们称之为函数。属性和方法是一个对象所具备的两大基本要素,也是我们后面编程工作的核心。
什么是封装?
只要有足够的方法,就没必要直接去操作对象属性,只要调用这些方法就可以实现要完成的任务,这种现象称为封装,它通过对象方法对其属性的操作把对象属性封装在一个对象内部,对象与外界打交道全部通过其自身的方法来实现,有效的把对象属性隐藏在对象内部。
编写 java文件的注意事项?
在记事本中编写java文件,在保存时一定要把文件名和扩展名用双引号括起来,否则将默认保存为文本文件,如果要保存的java 文件名为Program1.java,则在保存时在文件名文本框中一定要输入”Program1.java”。
如何编译java程序?
单击开始|运行命令,在命令行上输入cmd,按回车键(在 window98中输入command,按回车键),即可打开一个命令窗口,将目录转换到编写java源程序所在的目录,输入javac filename.java
如何执行java程序?
同样在命令窗口中输入java filename,
基本数据类型?
Java的数据类型可以划分为4大类:整数,浮点数,字符型,布尔型。其中整数可以划分为:byte,short,int,long.浮点数可以划分为float,double.

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keson Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值