第一章 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(c); 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 B. i = 5 C. i = 6 D. i = 5
j = 5 j = 5 j = 4 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); } }
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.
y = x;
三、名词解释 四、问答题
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. 【基础题】以下选项中,请选出数组声明错误的 (D )
A. String[] seasons = {\"winter\B. int[] intArray = new int[5];
C. String []StrArray = new String(\"abc\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(b==b2) {
System.out.println(―So true‖); } C. int i=1; int j=2; if(i==1|| j==2)
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)
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(){ }
public Parent(int j){ } }
public class Example extends Parent{
public static void main(String[] args){ }
public Example(){ } }
XXXXXX new Example();
System.out.println(―bad‖); System.out.println(―good‖);
A. this B. super C. Parent D. 什么都不填
3. 【基础题】class BaseClass{
}
class SubClass extends BaseClass{ }
下面哪个构成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. 【基础题】简述什么是多态现象?
答:
是允许将父对象设置成为和一个和多个它的子对象相等的技术, 举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果
private float x=2.0f; //insert code private float x=1.0f;
private float getVar(){return x;}
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()){ } } }
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却是原来的一半
Object o = i.next();
System.out.print(o.toString());
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\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,字符流继承于InputStreamReader OutputStreamWriter。在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动作实现 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():返回请求中的字符编码方式 返回请求的Body的长度 getHeader(String name):获得HTTP协议定义的文件头信息 getContentLength(): 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, 使用表单元素 二、选择题 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中使用 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中的各种模块提供了基础支持。 四、问答题 因篇幅问题不能全部显示,请点此查看更多更全内容