第一篇:java SATC初级程序员认证考试--宝典
关于举办java SATC初级程序员认证考试培训班的通知
Java语言是目前使用最广泛的软件开发语言,熟练掌握Java语言并取得SUN公司的相应证书是立志从事软件开发工作人员必备的技能和证明。为了满足广大学生学习Java语言的要求,工学院计算机工程系与西安丝路软件有限责任公司联合举办java SATC初级程序员认证考试培训,现将有关事项通知如下。
一、培训内容
按照java SATC初级程序员考试大纲要求,对学员进行考试内容培训。培训任务是对Java语言进行系统地学习,并通过有针对性的上机实验,了解掌握Java语言的基本内容,学会面向对象的编程方法,通过理论和实践教学,使学生熟练掌握Java程序设计的基础知识,基本概念;掌握面向对象程序设计的思想和编程技巧;熟练掌握分析程序和运用面向对象的思路和方法编制程序的能力,并在此基础上,进一步学习关于Java语言编程的深入技术。
二、培训方式
培训采用理论与实践相结合的方式进行,全部课程在机房进行,具体地点在工学院机房。
三、培训对象
本培训适用于计算机信息管理、计算机科学与技术、电子信息工程、通信工程、计算机控制技术、移动通信等本科、高职专业(包括自考、成教相应专业),要求具有C语言程序设计基础。
四、课时与上课时间安排
本课程按照教学大纲要求共96学时,为了不影响学员的正常上课,本培训安排在晚上和周六、周日进行(只占用一天),每周12学时,共8周。
五、任课教师
本培训由西安丝路软件有限责任公司高级技术人员与工学院计算机工程系教师共同执教。
六、考试
培训结束后,在西安丝路软件有限责任公司参加认证考试,成绩合格者,15个工作日后颁发《Sun SATC Certification 程序员》证书。对取得证书并即将毕业的学生推荐就业单位,其他学生推荐实习单位。
七、收费
培训费、考试费、证书费、教材费合计1500元人民币,其中包括800元人民币的考试及证书费用,不愿意参加考试的学员可以只缴纳培训费和教材费共700元。
八、咨询报名
报名时间:2011年9月13日~2011年9月16日
报名地点:各班辅导员处。
缴费地点:工学院教学科何雅琳老师处。
咨询地点:工学院计算机系,集中咨询时间:9月14日下午2:00-5:00.
第二篇:程序员认证考试题库
第一部分 基础知识练习目标
本章对应于《学生指南》各章的内容分别提供了练习题集,包括:
●
第一章Java入门
●
第二章数据类型和运算符
●
第三章流程控制与数组
●
第四章封装
●
第五章继承
●
第六章抽象类与接口
●
第七章多态
●
第八章异常
●
第九章多线程机制
●
第十章输入输出流
●
第十一章使用泛型和集合框架
●
第十二章基于Swing的图形用户界面(GUI)设计
●
第十三章Java事件驱动编程
1-1
第一章练习题(Java入门)
1.下列哪项不是JDK所包含的内容?(选一项)
A.Java编程语言
B.工具及工具的API
C.Java EE扩展API
D.Java平台虚拟机
2.下列关于JDK、JRE和JVM的描述。哪项正确?
A.JDK中包含了JRE,JVM中包含了JRE
B.JRE中包含了JDK,JDK中包含了JVM
C.JRE中包含了JDK,JVM中包含了JRE
D.JDK中包含了JRE,JRE中包含了JVM
3.下列哪个工具可以编译java源文件?
A.javac
B.jdb
C.javadoc
D.junit
4.JDK工具javadoc的作用是哪项?
A.生成Java文档
B.编译Java源文件
C.执行Java类文件
D.测试Java代码
5.以下哪些包是Java标准库中常用的包?(选三项)
A.java.lang
B.javax.servlet.http
C.j ava.io D.java.sql
1-2
6.使用JDK工具生成的Java文档的文件格式是? A.XML格式 B.自定义格式 c.二进制格式 D.HTML格式
7.以下关于JVM的叙述,哪项正确?(选两项)A.JVM运行于操作系统之上,它依赖于操作系统 B.JVM运行于操作系统之上,它与操作系统无关
C.JVM支持Java程序运行,它能够直接运行Java字节码文件 D.JVM支持Java程序运行,它能够直接运行Java源代码文件
8.以下关于支持Java运行平台的叙述,哪项错误? A.Java可在Solaris平台上运行 B.Java可在Windows平台上运行
C.Java语言与平台无关。Java程序的运行结果依赖于操作系统 D.Java语言与平台无关。Java程序的运行结果与操作系统无关
9.以下关于Applet和Java程序之间关系的叙述,哪项错误? A.-个Applet就是一段Java程序
B.Applet是一种特殊的Java程序,它需要运行在Web服务器上 C.Applet是一种特殊的Java程序,它需要运行在Web浏览器上 D.Applet是一种Java SE平台的应用程序
10.以下关于Java HotSpot的描述,哪两项错误?(选两项)
A.JavaHotSpot是一种热编译技术,在编译Java源程序时会被使用 B.Java HotSpot是一种热编译技术,在运行Java代码时会被使用
C.Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化 D.Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化
1-3
11.环境变量PATH中含有多个路径时,路径和路径之间可以用哪项来隔开?
A.:
B.,C.*
D:|
12.CLASSPATH中的“.”的含义是哪项?
A.省略号
B.当前目录
C.所有目录
D.上级目录
13.JVM在执行一个Java类时,大致采用以下过程?
A.执行类中的代码一>装载类一>校验类
B.校验类一>装载类一>执行类中的代码
C.装载类一>执行类中的代码一>校验类
D.装载类一>校验类一>执行类中的代码
14.当运行—个Java程序时,传递参数的格式是哪项?
A. java类名参数1,参数2
B. javac类名参数1参数2
C. java类名参数1参数2
D. java类名参数1+参数2
15.以下关于Java文件名的叙述,正确的有?(选两项)
A.Java源文件的扩展名应为.java
B.Java源文件的文件名应与文件中的类名一致
C. Java字节码文件的扩展名应为.java
D. 一个Java源文件中只能包含一个Java类
1-4
lC
2D
3A
4A
SACD
6D
7AC
8C
9B A D A B D C A B
1-5
第二章练习题(数据类型和运算符)
1.下列哪项不属于Java语言的基本数据类型?
A.int
B.String
C.double
D.boolean
2.下列哪项不是int类型的字面量?
A.u03A6
B.077
C.OxABBC
D.20
3.下列哪项不是有效的标识符?
A.userName
B.2test
C.$change
D._password
4.下列哪项是Java语言中所规定的注释样式?(选三项)
A.//单行注释
B.--单行注释
C.
/*
*单行或多行注释
*/
D.
/**
*文档注释
*/
5.下列哪项不是Java语言的关键字?
A.goto
B.sizeof
C.instanceof
D.volatile
1-6
6.现有如下五个声明:
Linel: int a_really_really_really_long_variable_name=5;
Line2: int _hi=6;
Line3: int big=Integer.getlnteger(“7”);
Line4:int $dollars=8;
line5: int %opercent=9;
哪行无法通过编译?
A.Line1
B.Line3
C.Line4
D.Line5
7.现有:
1.class Top {
2.static int x=l;
3.public Top(int y){
x*=3;}
4.}
5.class Middle extends Top {
6.public Middle(){x+=1;}
7.public static void main(String [] args)
8.Middle m = new Middle();
9.System.out.println(x);
IO.}
II.}
结果为:
A.1
B.2
C.3
D.编译失败
8.现有:
1.class Passer f
2.static final int X=5;
3.public static void main(String [] args){
4.new Passer().go(x);
5.System.out.print(x);
6,)
7.void go(int x){
8.System.out.print(x++);
9.}
10.}
{
1-7
结果是什么?
A.55
B.56
C.65
D.66
9.现有:
1.class Wrench f
2.public static void main(String [] args){
3.Wrench w=new Wrench();
Wrench w2=new Wrench();
4.w2=go(w, w2);
5.System.out.print(w2==w);
6.}
7.static Wrench go(Wrench wrl, Wrench wr2){
8.Wrench wr3=wrl;wrl=wr2;wr2=wr3;
9.return wr3;
10.}
11.}
结果是什么?
A.false
B.
true
C.编译失败
D.运行的时候有异常抛出
10.现有:
5.class Wrench2 {
6.int size;
7.public static void main(String [] args){
8.Wrench2 w=new Wrench2();
9.w.size=II;
IO.Wrench2 w2=go(w, w.size);
II.System.out.print(w2.size);
12.)
13.static Wrench2 go(Wrench2 wr.int s){
14.S=12;
15。
return wr;
16.}
17.}
1-8
结果为:
A.11
B.12
c.编译失败。
D.运行时异常被抛出
11.现有:
class Test2 f
public static void main(String [] args){
short a,b,C;
a=l;
b=2;
C=a+b;
a+=2:
}
}
以上代码中,哪一句是错误的?
A.a=1:
B.C=a+b;
C.
a+=2;
D.short a,b,C;
12.表达式:1-2/5+2 'k5的结果是哪项?
A.10.6
B.9.8
C.9
13.现有代码片段:
String s=”123“;
String sl=S+456;
请问sl的结果是哪项?
A.123456
B.579
C.编译错误
D.运行时抛出异常
1-9
14.基本数据类型float的包裹类是哪项? A. Integer B. Double C. Float D. Character
15.现有:
1.class Test4 {
2.public static void main(String [] args){
3.boolean X=true;
4.boolean y=false;
5.short Z=42;
6.7.if((z++==42)&&
(y=true))z++;
8.if((x=false)||
(++z==45))z++;
9.10.System.out.println(¨z=”+z);
II.}
12.} 结果为: A.Z=42 B.z=44 C.
Z= 45 D.
z= 46
1-10
第二章练习题
参考答案
1B
2A
3B
4ACD
5B
6D
7D
8A
9B A B D A C D
1-11
第三章练习题
第三章练习题(流程控制与数组)
1.现有:
class TestApp{
public static void main(String[] args){
for(int i=0;i if(i==3) break; System.out.print(i); } } } 程序运行后的输出是哪项? A.0123 B.012456789 C. 0123456789 D. 012 2.程序: class TestApp{ public static void main(String[] args){ int x=6; if(x>l) System.out.println(”x>l“); else if(x>5) System.out.println(”x>5“); else if(x<10) System.out.println(”x else if(x<29) System.out.println(”x<29“); else System.out.println(“以上都不是”); } } 上述程序运行后的结果是哪项? A.x>5 B.x>l C. x<10 D.x<29 1-12 3.现有: class TestApp{ public static void main(String[] args){ int [5] myarray={ 10, 11, 12, 13, 14); int sum=0; for(int x : myarray) sum+=x; System.out.println(”sum= “+sum); } } 上述程序运行后的结果是哪项? A. sum=10 B. sum=70 C. sum=60 D. 运行时抛出异常 4.下列有关数组的声明中,正确的是哪项?(选两项) A. int s[10]; B. int[10] s; C. int[5] s={l,2,3,4,5}; D. int s[]; 5.已知数组array,其最后一个元素的下标是? A. array.size B. array.length-l C. array.size-l D. array.length 6.程序: class TestApp{ public static void main(String[] args){ int X=5: switch(x){ case l: case 2: case 3: System.out.println(“一季度”); break; case 4: case 5: 1-13 case 6: System.out.println(“二季度”); break; default: System.out.println(“三季度以上”); break;) }) 上述程序运行后的结果是哪项? A.一季度 B.二季度 c.三季度以上 D.无输出 7.为将数组myArray的长度由3改为6,现采取以下编码: int[]myArray=new int [3]; myArray=new int[6]; 代码执行后,以下叙述哪项是正确的? A.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素 的值为空。 B.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素 需再经过初始化后才能使用。 C.数组myArray的长度没有变化。 D.数组myArray的长度已由3改为6,原来3个元素的值全部丢失。 8.现有: 1.class Ifs { 2.public static void main(String [] args){ 3.boolean state=false; 4.int i=2; 5.if((++i>2)&& (state=true)) 6.i++; 7.if((++i>4)l l(state=false)) 8.i++; 9.System.out.println(i); 10.} 11.} 1-14 结果为: A. B. C. D.编译失败 9.现有: 3.public class Tester { 4.public static void main(String[] args){ 5.intx-5; 6.Integer xl=x;Integer x2=x; 7.int x3=new Integer(5); 8.system..ut.print(x1.equals(x)); 9.system..ut.print(xl==x); lu.system..ut.print(x2.equals(xl)); 11.system..ut.print(x2==xl); system..ut.print(x2==x3); system..ut.print(x2.equals(x3)); “ l4.} 15.} 结果为: A.编译失败 B.falsefalsetruetruetruetrue C. truetruetruetruetruetrue D.falsefalsetruetruetruefalse E.truefalsetruefalsefalsetrue F.运行时异常被抛出 10.现有: 1.class Rectangle { 2' public static V.id main(string [] args) 3.int[]x=(1,2,3); 4.x[1]=(x[1]>1)?x[2]: O; 5.System.out.println(x[1]); 6.} 7.} { 1-15 结果为: A.3 B.2 C.1 D.0 11.现有: 1.class Output(2.public static void main(String[] args) { 3.int i=5: 4.System.out.print(”4“+i+”“); 5.System.out.print(i+5+”7“); 6.System.out.println(i+”8“); 7.} 8.} 结果为: A.9722 B.55758 C. 10758 D. 9722 12.以下哪种初始化数组的方式是错误的? A. String[]names={”zhang“,”wang“,”li“); B. String names[] =new String [3]; names [O] =”zhang“;names [1] =”wang“; names [2] C. String[3] names={”zhang“, ”wang“, ”li“}; D. 以上皆正确 13.现有: 1.class WhileTests { 2.public static void main(String [] args){ 3.int X=5; 4.while(++x<4){ 5.--x; 6.} 7.System.out.println(”x=“+x); 8.} 9.} =”li“; 1-16 结果是什么? A.X=6 B.X=5 C.X=2 D.编译失败 14.现有: 1.class Test2 f 2.public static void main(String [] args){ 3.boolean X= true; 4.boolean y=false; 5.short Z=20; 6.7.if((x==true)&& (y=true))z++; 8.if((y==true)||(++z==22))z++; 9.10. System.out.println(”z=“+z); 11.} 12.} 结果是什么? A.Z=21 B.z=22 C.z=23 D. Z= 24 15.现有: 1.class Foo { 2.public static void main(String [] args) 3.int x=O; 4.int y=4; 5.for(int z=0;z<3; Z++;X++){ 6.if(x>1&++y<10) 7.y++; 8.} 9.System.out.println(y); 10.} 11.} 结果是什么? A.7 B.8 C.10 D.1{ 1-17 I D 2B 3C 4CD 5B 6B 7D 8A 9C C C A B B 1-18 第四章练习题(封装) 1.下列有关类、对象和实例的叙述,正确的是哪一项? A.类就是对象,对象就是类,实例是对象的另一个名称,三者没有差别 B.对象是类的抽象,类是对象的具体化,实例是对象的另一个名称 C.类是对象的抽象,对象是类的具体化,实例是类的另一个名称 D.类是对象的抽象,对象是类的具体化,实例是对象的另一个名称 2.下列类Account的构造方法中,声明正确的是? A. Account(String name){) B. Account(String name) C.Account(name)() D. NewAccount(String name){) 3.类Account中字段声明正确的是哪项? A. class Account f name; amount;) B. class Account{ String name=l.0; double amount=”Mike“;) C. class Accountf String name; double amount;) D. class Account{ String name= ”Mike,, double amount=1000.0;) 4.类Account中方法声明正确的是哪一项? A. class Account f deposit();) B. class Accountf void deposit(); } 1-19 C. class Accountf void deposit(){)) D.class Accountf void deposit{)) 5.下列有关类声明的代码片段,哪一项是正确的? A.package school; import java.sql.*; class Student { } B.import java.sql.*; package school; class Student f) C. package school; class Student{ } import java.sql.*j D.package school; import java.sql.*; private String name; class Student { } 6.有关new关键字的描述正确的是哪项? A.创建对象实例的时候可以不使用new关键字 B.new所创建的对象不占用内存空间 C.new会调用类的构造器来创建对象 D.new所创建的对象一定存在引用变量 7.下列哪些是方法public int add(int a)的重载方法?(选三项) A.public int add(long a); B.public void add(int a)j C.public void add(long a); D.public int add(float a); 1-20 8.我们定义一个Account类来描述银行账户,银行账户有账户名、金额等属性 特征,同时有存款、取款等行为特征,下述代码适合描述的是哪项? A.class Accountf String name;//账户 String amount;//金额 Account(String name)() void deposit(double mount){ //存款) void withdraw(double mount){ //取款 }) B.class Accountf String name;//账户 doujole amount;//金额 Account(double amount){) void deposit(double mount){ //存款) void withdraw(double mount){ //取款)) C.class Accountf String name;//账户 double amount;//金额 Account(String name){) void deposit(double mount){//存款) void withdraw(double mount){ //取款)) D.class Accountf String name;//账户 double amount;//金额 Account(String name){) void deposit(){//存款) void withdraw(){//取款)) 1-21 9.现有: 1.class Banana2 f 2.static int X=2; 3.'public static void main(String [] args){ 4.int X=2; 5.Banana2 b=new Banana2(); 6.b.go(x); 7.} 8.static {x+=x;) 9.void go(int x){ 10.++x; 11.System.out.println(x); 12.} 13.} 结果为: A.7 B.5 C.3 D.2 10.现有: 1.class TestFoo f 2.int x; 3.String y; 4.int getX(){ return x;} 5.String getY(){return y;} 6.void setX(int x){ 7.int Z=7: 8.this.x=x; 9.} 10.} 可以添加多少个修饰符来封装此类? A.5 B.4 C.3 D.2 1-22 11.定义枚举如下: public enum Direction{ EAST,SOUTH,WEST,NORTH) F列正确使用该枚举类型的语句是哪项? A.Direction Direction=EAST; B.Direction direction=Direction.WEST; C.int a-Direction.NORTH; n Direction direction=2; 12.定义类: package utils; public class Rep{ public static String twice(String s){return s+s ;) } 再定义另一个类Demo: l.//insert code here 2.public class Demo{ 3.public static void main(String[] args){ 4.System.out.println(twice(“Hello”)); 5.} 6.} 在第一行插入哪项代码,可以使程序正常编译和执行? A.import utils.*; B.import utils.Rep.*; C.import static utils.Rep.twice; D.static import utils.Rep.twice; 13.现有: public class TestDemo{ private int X-2; static int y=3; public void method(){ final int i=100; int j =10; class Cinner { public void mymethod(){ //Here } } } } 1-23 在Here处可以访问的变量是哪些?(选三项)A.X B.y C.j D. i 14.现有如F包结构: com |一一X | |一一Alpha.class | | | |一一y I |一一Beta.class | |l--Gamma.class 和类: class Test { Alpha a; Beta b;Gamma c;} 哪三个必须加入到类Test中,以使其通过编译?(选三项) A.package y; B.package com; C.import com.x.y.*; D.import com.x.*; 15.现有2个文件: 1.package x; 2.public class X{ 3.public static void doX(){System.out.print(“doX”);} 4.} 和: 1.class Find{ 2.public static void main(String [] args){ 3.//insert code here 4.} 5.} 哪两行分别插入到类Find的第3行将编译并产生输出“doX”?(选两项) A.doX(); B. X.doX(); C.x.X.doX(); D.x.X myX=new x.X();myX.doX(); 1-24 1D 2A 3C 4C 5A 6C ACD 8C 9C D B C A B D BCD C D 1-25 第五章练习题(继承) 1.下列关于继承优点的叙述正确的是哪几项?(选三项) A.可以创建更为特殊的类型 B.消除重复代码 C.执行效率高 D.便于维护 2.在子类中调用父类中被覆盖的方法时需要使用哪项关键字? A.this B.super C.new D.以上都不是 3.现有 public class Parentt public void change(int x){)) public class Child extends Parent{ //覆盖父类change方法 } 下列哪个声明是正确的覆盖了父类的change方法? A.protected void change(int x){} B.public void change(int x, int y){} C.public void change(int x){} D.public void change(String s){} 4.如果想要一个类不能被任何类继承的话,需要使用哪个关键字来修饰该类? A.abstract B.new C.static D.final 1-26 5.为了使得System.out.println()输出对象引用的时候得到有意义的信 我们应该覆盖Object t{-的哪个方法? A.equals B.toString C.hashCode D.notify 6.现有: public class Pet() public class Cat extends Pet{) 执行代码 Cat c-new Cat(); Pet p=(Pet)c; 后下列哪项是正确的? A.Pet p=(Pet)c运行错误 B.Pet p=(Pet)c编译错误 C.Pet p=(Pet)c止常执行 D.以上都不对 7.程序: public class Pet{ public void speak(){ System.out.print(“pet”); } } public class Cat extends Pet{ pulolic void speak(){ System.out.print(“Cat”); } } public class Dog extends Pet(public void speak(){ System.out.print(“Dog”); } } 执行代码 Pet[] p= {new Cat(),new Dog(),nex Pet()}; for(int i=O;i p[i].speak(); 1-27 后输出的内容是哪项? B.Cat Cat Cat C.Cat Dog Dog D.Cat Dog Pet 8.现有: 1.class Dog{) 2.class Harrier extends Dog {) 3.4.class DogTest{ 5.public static void main(String [] args)(6. Dog dl=new Dog(); 7.Harrier hl=new Harrier(); 8.Dog d2=hl; 9.Harrier h2=(Harrier)d2; 10.Harrier h3=d2; 11.} 12.} 下面哪一项是正确的? A.2个Dog对象被创建 B.2个Harrier对象被创建 C.3个Harrier对象被创建 D.编译失败 9.现有: 2.class Cat { 3.Cat(int c){System.out.print {“cat”+c+“ ”);} 4.} 5.class SubCat extends Cat { 6.SubCat(int c){super(5);System.out.print(“cable”);} 7.SubCat(){ this(4); } 8.public static void main(String [] args){ 9.SubCat s= new SubCat(); 10.} 11.} 结果为: A.cat5 B.cable C.cat5 cable D.cable cat5 1-28 10.现有: 1.class Guy {String greet() {return “hi”;} } 2.class Cowboy extends Guy(String greet() (return “howdy ¨;))3.class Surfer extends Guy(String greet() (return ”dude!“;} } 4. 5.class Greetings { 6.public static void main(String [] args) { 7.Guy [] guys =(new Guy(), new Cowboy(), new Surfer()8. for(Guy g: guys)9.System.out.print(g.greet()};10. } 11.} 结果为: A.hi howdy dude! B.运行时异常被抛出。 c.第7行出现一个错误,编译失败。 D.第8行出现一个错误,编译失败。 11.现有: 1.class Over { 2.int dolt(long x){ return 3;} 3.} 4.5.class Under extends Over { 6.//insert code here 7.} 和四个方法: short dolt(int y){ return 4;} int dolt(long Xr long y){ return 4;} private int dolt(short y){ return 4;} protected int dolt(long x){ return 4;} 分别插入到第6行,有几个可以通过编译? A.1 B.2 C.3 D.4 }; 1-29 12现有 1.class Beverage { 2.Beverage(){ System.out.print(”beverage “);} 3.} 4.class Beer extends Beverage { 5.public static void main{string [] args){ 6.Beer b = new Beer(14); 7.} 8.public int Beer(int x){ 9.this(); 10.System.out.print(”beerl“); 11.} 12.public Beer(){ System.out.print(”beer2 “);} 13.} 结果是什么? A.beerl beverage B.beer2 beverage C.beverage beer2 beerl D.编译失败 13.现有: 1.class Bird { 2.void talk(){ System.out.print(”chirp “);} 3.} 4.class Parrot2 extends Bird { 5.protected void talk(){ System.out.print(”hello “); 6.public static void main(String [] args){ 7.Bird [] birds = {new Bird(), new Parrot2()}; 8.for(Bird b : birds) 9.b.talk(); 10.} 11.} 结果是什么 ? A.chirp chirp B.hello hello C.chirp hello D:编译错误 1-30 14.现有: 1.class SuperFoo(2.SuperFoo doStuff(int x){ 3.return new SuperFoo(); 4.} 5.} 6.7.class Foo extends SuperFoo { 8.//insert code here 9.} 和四个声明: Foo doStuff(int x){ return new Foo(); } Foo doStuff(int x){ return new SuperFoo(); } SuperFoo doStuff(int x){ return new Foo();} SuperFoo doStuff(int y){ return new SuperFoo();} 分别插入到第8行,有几个可以通过编泽? A.1 B.2 C.3 D. 4 15.现有: 1.class HorseRadish { 2.//insert code here 3.protected HorseRadish(int x) { 4.System.out.println(”bok choy“); 5.} 6.} 7.class Wasabi extends HorseRadish { 8.public static void main(String [] args) (9.Wasabi w-new Wasabi(); 10,} 11.} 分别插入到第2行,哪两项允许代码编译并产生”bok choy”输出结果?(选 两项) A.protected HorseRadish(){this(42);} B.protected HorseRadish(){} C.//just a comment D.protected HorseRadish(){ new HorseRadish(42);} 1-31 参考答案 .1ABD 2B 3C 4D SB 6A 7D 8D 9C A D D C D AD 1-32 第六章练习题(抽象类与接口) 1.下列有关抽象类的叙述正确的是哪项? A.抽象类中一定含有抽象方法 B.抽象类的声明必须包含abstract关键字 C.抽象类既能被实例化也能被继承 D.抽象类中不能有构造方法 2.下列有关抽象方法叙述正确的是哪项?(选两项) A.抽象方法和普通方法一样,只是前面多加一个修饰符asbtract B.抽象方法没有方法体 c.抽象方法可以包含存任何类中 D.包含抽象方法的类的具体子类必须提供具体的覆盖方法 3.下列有关接口的叙述错误的是哪项? A.接口中只能包含抽象方法和常量 B.一个类可以实现多个接口 C.类实现接口时必须实现其中的方法 D.接口不能被继承 4.下列关于接口的定义哪项是正确的? A. interface C{int a;) B.public interface A implements B {) C.public interface A {int a();) D.abstract interface D {) 1-33 5.现有: 1.interface Animal f 2.void eat(); 3.} 4.5.// insert code here 6.7.public class HouseCat implements Feline { 8.public void eat() { } 9.} 和以下三个接口声明: interface Feline extends Animal() interface Feline extends Animal {void eat(); } interface Feline extends Animal {void eat() { } } 分别插入到第5行,有多少行可以编译? A.0 B.1 C.2 D.3 6.现自: 1.interface Color { } 2.interface Weight { } 3.//insert code here 和以下足六个声明: class Boat extends Color, extends Weight { } class Boat extends Color and Weight { } class Boat extends Color, Weight { } class Boat implements Color, implements Weight { } class Boat implements Color and Weight { } class Boat implements Color, Weight { } 分别插入到第3行,有多少行可以编译? A.0 B.1 C.2 D.3 1-34 7.现有: 1.abstract class Color { 2.protected abstract String getRGB(); 3.} 4.5.public class Blue extends Color { 6.//insert code here 7.} 和四个声明: public String getRGB(){ return ”blue“;} String getRGB(){ return ”blue“;) private String getRGB(){ return ”blue“;} protected String getRGB(){ return ”blue“;) 分别插入到第6行,有几个可以通过编译? A.0 B.1 C.2 D.3 8.现有: 1.abstract class Color2 { 2.//insert code here 3.} 4.5.public class Blue2 extends Color2 { 6.public String getRGB(){ return ”blue“;} 7.} 和4个声明: public abstract String getRGB(); abstract String getRGB(); private abstract String getRGB(); protected abstract String getRGB(); 分别插入到第2行,有多少行可以编译? A.O B.1 C.2 D 1-35 9.现有: 1.class Top { 2.static int X=l; 3.public Top(){ x*=3;) 4.} 5.class Middle extends Top { 6.public Middle() {x+=l;} 7.public static void main(String [] args){ 8.Middle m=new Middle(); 9.System.out.println(x)j 10.} 11.} 结果是什么? A.2 B.3 C.4 D.编译失败 10.现有两个文件: 1.package X; 2.public class X { 3.public static void doX(){System.out.print(”doX“); 4.} 和: 1.import x.X; 2.class Find { 3.publiC static void main(String [] args) { 4.X myX=new X(); myX.doX(); 5.X.doX(); 6.x.X.aoX(): 7.x.X myX2=new x.X(); myx2.doX(); 8.} ’ 9.} 结果为: A.Find类中第4行出现一个错误,编译失败。 B.Find类第5行出现一个错误,编译失败。 C.Find类第6行出现一个错误,编译失败。 D.doX doX doX doX } 1-36 11.现有: 1.class Tree { 2.private static String tree = ”tree “; 3.String getTree(){ return tree;} 4.} 5.class Elm extends Tree { 6.private static String tree = ”elm “; 7.public static void main(String [] args){ 8.new Elm().go(new Tree()); 9.} 10.void go(Tree t){ 11.String s = t.getTree()+Elm.tree + tree + (new Elm().getTree()); 12.System.out.println(s); 结果为: A.elm elm elm elm B.tree elm elm elm C.tree elm elm tree D.tree elm tree elm 12.现有: 1.interface Animal { 2.void eat(); 3.} 4.5.//insert code here 6.7.public class HouseCat extends Feline { 8.public void eat(){ } 9.} 和五个申明 abstract class Feline implements Animal { } abstract class Feline implements Animal { void eat();} abstract class Feline implements Animal { public void eat();} abstract class Feline implements Animal { public void eat(){} } abstract class Feline implements Animal { abstract public void eat();} A.1 B.2 C.3 D.4 1-37 · 13.现有: 1.interface I { void go();} 2.3.abstract class A implements I { } 4.5.class C extends A { 6.void go(){) 7.} 结果是什么? A.代码通过编译 B.由于第1行的错误导致编译失败 C.由于笫3行的错误导致编译失败 D.由于第6行的错误导致编译失败 14.现有: 1.interface Data {public void load();} 2.abstract class Info {public abstract void load();} 下列类定义中正确使用Data和Info的是哪项? A.public class Employee implements Info extends Data { public void load(){/*do something*/)) B.public class Employee extends Inf.implements Data{ public void load(){/*do something*/} } c.public class Empl.yee implements Inf extends Data{ public void Data.1oad(){* do something*/} public void load(){/*do something*/}) D.public class Employee extends Inf implements Data { public void Data.1oad(){/*do something*/) public void info.1oad(){/*do something*/)) 1-38 15.下列代码正确的是哪项? A.public class Session implements Runnable, Clonable{ public void run(); public Object clone(); } B.public class Session extends Runnable, Cloneable { public void run(){/*do something*/} public Object clone(){/*make a copy*/} } C.public abstract class Session implements Runnable, Clonable { pu)olic void run(){/*do something*/} public Object clone(){/*make a copy*/} } D.public class Session implements Runnable, implements Clonable { public void run(){/*do something*/} public Object clone(){/*make a copy*/} } 1-39 参考答案 1B 2BD 3D 4C 5C 6B 7C 8D 9C D C C D B C 1-40 第七章练习题(多态) 1.下列自‘关多态的叙述正确的是哪项?(选两项) A.父类的引用指向子类的实例是一种多态 B.子类的引用指向子类的实例是一种多态 c.接口的引用指向实现该接口类的实例是一种多态 D.抽象类的引用指向抽象类的实例是一种多态 2.Java中方法绑定有哪些形式?(选两项) A.编译时刻绑定 B.运行时刻绑定 c.静态绑定 D.私有绑定 3.表达式”hello“ instance of String返回的值是哪项? A.true B. false C. D. 0 4.求平方根方法public static double sqrt(double a)可以传递的参数 类型有哪些?(选三项) A.byte B.float C.String D.long 5.涉及类MyClass的方法签名足public void find(MyClass a),那么该 方法可接收的实际参数的类型可以是哪些?(选两项) A.MyClass类的类型 B.MyClass子类的类型 C.Object类型 D.所有接口 1-41 6.使用下列哪些关键字可以判定实参的具体类型? A.as B.is C.instanceof D.extends 7.现有: class Pencil { public void write(String content){ System.out.println(”Write“+content); } } class RubberPencil extends Pencil{ public void erase(String content){ System.out.println(”Erase“+content); } } 执行下列代码的结果是哪项? Pencil pen=new RubberPencil(); pen.write(”Hello“); pen.erase(”Hello“); A.Write Hello Erase Hello B.Erase Hello Write Hello C.编译错误 D.运行时抛出异常 8.现有: class Pencil { public void write(String content){ System.out.println(”Write“+content); } } class RubberPencil extends Pencil{ public void write(String content){ System.out.println(”Rubber Write“+content); } public void erase(String content){ System.out.println(”Erase “+content); } } 1-42 执行下列代码的结果是哪项? Pencil pen=new RubberPencil(); pen.write(”Hello“); A.Write Hello B.Rubber Write Hello C.编译错误 D.运行时抛出异常 下列哪些方法是在编译时刻绑定的?(选三项) A.静态方法 B.private方法 C.final方法 D.非private方法 10.现有: class Pencil { public void write(String content){ System.out.println(”Write“,+content){ } } class RubberPencil extends Pencil{ public void write(String content){ System.out.println(”Rubber Write“+content); } public void erase(String content){ System.out.println(”Erase “+content); } } 执行下列代码的结果是哪项? Pencil pen=new Pencil(); ((RubberPencil)pen).write(”Hello“); A. Write Hello B.Rubber Write Hello c.编译失败 D.运行时抛出异常 1-43 1.现有: class TestA { public void start(){ System.out.println(”TestA“);} } public class TestB extends TestA { public void start(){ System.out.println(”TestB“);} public static v.id main(string[] args)(((TestA)new TestB()).start(); } } 运行结果是哪项? A. TeStA B. TeStB c.编译失败 D.运行时抛出异常 12.现有: class A {public String name=”a“} class B extends A {public String name=”b“} 执行如下代码后的结果是哪项? A a=new B(); System.out.println(a.name); A. a B. b c.编译失败 D.运行时抛出异常 13.现有: Interface F{} class A implements F{} class B extends A{} class C extends B{ public static void main(String[] args){ B b=new B(); //inSert C0de here } } 1-44 下列哪行代码插入到第7行,将抛出java.lang.ClassCaseException异常7 A.A a=b; B. F f=(C)b; C. F f=(A)b; D. B bb=(B)(A)b; 14.现有: 1.class Guy { String greet(){ return ”hi“;} j 2.class Cowboy extends Guy { String greet(){ ”howdy“;}} 3.class Wrangler extends Cowboy { String { return ”orch!“;} } 4. 5.class Greetings2 { 6.public static void main(String [] args){ 7.Guy g=new Wrangler();8. Guy g2=new Cowboy(); 9.Wrangler w2=new Wrangler();10.System.out.print(g.greet()+g2.greet()+w2.greet());11.} 12.} 结果是什么? A.hi hi ouch! B.ouch!howdy ouch! C.hi howdy ouch! D.编译失败 E.运行的咐候有异常抛出 15.现有: class ClassA {} class ClassB extends ClassA {) class ClassC extends ClassA {) 以及: ClassA p0=new ClassA(); ClassB pl=new ClassB(); ClassC p2=new ClassC(); ClassA p3=new ClassB(); ClassA p4=new ClassC(); return.greet()1-45 · 下列哪些是正确的?(选三项] A.p0=pl; B.p1 =p2; C.p2=p4; D.p2 =(ClassC)pl; E.p1 =(ClassB)p3; F.p2 =(Classc)p4; 1-46 参考答案 1AC 2AB 3A 4ABD 5AB 6C 7C 8B 9ABC D B A B B 15AEF 1-47 第八章练习题(异常) 1.Java语言中异常的分类是哪项? A.运行时异常和异常 B.受检异常和非受检异常 C.错误和异常 D.错误和运行时异常 确的是 2.所有异常的父类是哪项? A. Throwable B.Error C. RuntimeException D. Exception 3.关于try...catch...finally结构,描述正确的是哪项? (选两项)A.可以有多个catch B.只能有一个catch C.可以没有catch D.finally必须有 4.下列属于非受检异常的是哪项? A.SQLException B.IOException C.NullPointerException D.OutOfMemoryError 5.假设有自定义异常类ServiceException,那么抛出该异常的语句正哪项? A.raise ServiceException B.throw new ServiceException()C.throw ServiceException D.throws ServiceException 1-48 6.在方法的声明中,要求该方法必须抛出异常时使用哪个关键字? A.throw B.catch C.finally D.throws 7.现有: 1.class Number{ 2.public static void main(String [] aras){ 3.try { 4.System.out.print(Integer.parselnt(”forty“)); 5.} catch(RuntimeException r){ 6.System.out.print(”runtime“); 7.} catch(NumberFormatException e){ 8.system..ut.print(”number“); 9.} 10.} 11.} 结果是什么? A. number B. runtime C. forty number D.编译失败 8.现有: 9.void topGo(){ 10.try { 11.middleGo(); 12.)catch(Exception e){ 13.System.out.print(”catch“);4. } 15.} 6.void middleGo()throws Exception { 17.go(); 8.system.out.print(”late middle“);9. } 2.void go()throws ExceptiOn { 21.throw new Exception(); 22.} 1-49 如果调用 topGo(),则结果为: A.late middle B.catch C.late middle catch D.catch Iate middle 9.现有 1.class Calc { 2.public static void main(String [] args){ 3.try { 4.int x = Integer.parselnt(”42a“);5.//insert code here 6.System.out.print(”oops“);7.} 8.} 9.} 下面哪两行分别插入到第五行,会导致输 ”oops“ ?(选两项)A.} catch(IllegalArgumentException e){ B.} catch(IllegalStateException c){ C.} catch(NumbelFormatException n){ D.} catch(ClassCastException c){ 10.现有: 1.class Flow { 2.public static void main(String [] args)t 3.try { 4.System.out.print(”before“);5.doRiskyThing();6.System.out.print(”after “);7.} catch(Exception fe){ 8.System.out.print(”catch“);9.} 10.System.out.println(” done");11.} 12.public static void doRiskyThing()throws Exception{ 13.// this code returns unless it throws an Exception }} 可能会产生哪两项结果 ?(选两项) A.before catch B.before after done C.before catch done D.before after catch 1-50 1、2、3、解析:本题考查存储器基础知识。 地址编号A0000H至DFFFFH的内存空间中共有218(DFFFF-A0000=3FFFF)个存储单元,每个单元8比特,因此需要的存储器芯片数目为218/215=23个。5, 7 解析:本题考查计算机系统基础知识。 Cache(高速缓冲存储器)是一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。Cache的出现是基于两种因素:首先,是由于CPU的速度和性能提高很快而主存速度较低且价格高,第二就是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。8 本题考查光盘存储技术基本常识。题目给出的是常见光盘格式,其中DVD-RAM和DVD-RW是DVD论坛所支持的两种不同的可多次擦除重写的DVD光盘格式,CD-R指一次性可写(刻录)CD光盘,而CD-RW指可多次擦除、重写的CD光盘。11 本题考查计算机病毒方面的上基础知识。 计算机病毒的分类方法有许多种,按照最通用的区分方式,即根据其感染的途径以及采用的核技术区分,计算机病毒可分为文件型计算机病毒、引导型计算机病毒、宏病毒和目录型计算机病毒。 文件型计算机病毒感染可执行文件(包括EXE和COM文件。 引导型计算机病毒影响软盘或硬盘的引导扇区。 宏病毒感染的对象是使用某些程序创建的文本文档、数据库、电了表格等文件。 目录型计算机病毒能够修改硬盘上存储的所有文件的地址,如果用户使用某些工具(如SCANDISK或CHKDSK检测受感染的磁盘,会发现大量的文件链接地址的错误,这些错误都是由此类计算机病毒造成的。12 本题考查知识产权基本知识,即软件著作权归属。依据我国《著作权法》、《计算机软件保护条例》,委托开发的软件的著作权可归属于委托方,也可归属于受托方,或者由委托方和受托方双方共有;具体情况由双方订立的合同约定来确认。如果委托方和受托方之间签订了书面的委托开发合同,并对委托开发的软件著作权的归属有明确约定的,那么该委托开发软件著作权应依照合同的约定确认著作权归属关系。对于在委托开发软件活动中,委托方和受托方之间没有签订书面的委托开发合同,或者虽然签订了书面的委托开发合同,但是合同中对该委托开发软件著作权的归属约定不明确的,那么根据法律的规定,该委托开发软件的著作权应属于受托者所有,但是委托人可以享有该软件的使用权。法律的这种规定主要是考虑了受托人是软件的实际开发者,是软件真实的智力投资者,符合开发者享有软件著作权的一般原则。所以,本题涉及的软件著作权应属于软件公司。13 本题考查知识产权基本知识,即区别侵犯物权与知识产权行为。将他人的软件光盘占为已有,涉及的是物体本身,即软件的物化载体,该行为是侵犯财产所有权的行为。如果行为人虽未占有这一软件光盘,(如借或租他人一张软件光盘,使用后返还,但擅自将该软件光盘复制出售,则该行为涉及的是无形财产,即软件开发商的思想表现形式(知识产品,属于侵犯知识产权行为。14 指令寄存器(IR)用来保存当前正在执行的指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器(ID)就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。 为了保证程序指令能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。17 先来先服务,是按到达时间顺序,一个服务完了,磁头回去去找第二个,找到马上执行,类推,不知道下一个什么时候到,不能确定回到哪个点 最短寻道,是一个服务完,找离磁头最近的那个进程,也不固定 电梯调度,磁头固定的在两个点之间运动,哪个进程能搭上就运行掉 单项扫描,磁头从一边扫到另一边,完了立刻跳回到开头,回来过程中不处理进程 19 从状态图的状态0出发,识别a后到达状态0,识别b后到达状态1,由于不存在从状态1出发识别a的状态转移,因此,abab不能被该自动机识别。对于选项B,识别aabb的状态转移路是状态0→状态0→状态1→状态2。对于选项C,识别bbaa的状态转移路是状态0→状态1→状态2→状态2→状态2。对于选项D,识别bbab的状态转移路是状态0→状态1→状态2→状态2→状态2。23 本题考查数据结构基础知识。 对二叉树进行先序遍历的过程是:若二叉树非空,则先访问根结点,然后先序遍历左子树,最后先序遍历右子树。因此,二叉树的先序遍历序列中,第一个元素是根结点。对二叉树进行中序遍历的过程是:若二叉树非空,则先中序遍历左子树,然后访问根结点,最后中序遍历右子树。因此,若在中序遍历序列中已找出二叉树的根结点,则根结点左边为左子树的中序遍历序列,右边是右子树的中序遍历序列。 由此,根据先序序列确定根结点,根据中序序列划分左右子树,反复应用此原则,就可根据先序遍历序列和中序遍历序列恢复二叉树的结构。 本题中,先序序列为ABDCE,因此A是树根结点,中序序列为BDAEC,因此BD是左子树上的结点,EC是右子树上的结点。根据先序遍历序列,可知B是左子树的根结点,C是右子树的根结点。在中序遍历序列BDAEC中,D在B之后,因此D是B的右孩子。同理,在中序遍历序列BDAEC中,E在C之前,因此E是C的左孩子。25 蒙 29 本题考查面向对象的基本概念。面向对象概念中,子类是父类的特化,子类能够自动获得父类的属性和方法,即继承父类的属性和方法,但子类可以根据实际情况对继承而来的方法进行覆盖或重载,也就是子类和父类的行为不必保持完全地一致。33 本题考查类和对象的基本概念。类是对象的模板,类定义了对象共有的属性和方法。类也可以看作是一组对象共有特性的集合,即一个类中的对象拥有相同的属性和方法,一般而言,从一个类可以产生多个对象。34 面向对象设计的含义是设计分析模型和实现相应源代码,在目标代码环境中这种源代码可被执行。面向对象设计是建立在面向对象分析的基础上的。35 本题考查面向对象程序设计语言的作用。 面向对象程序设计语言的最主要的作用是面向对象的系统实现,它并不能用于系统的分析与设计,目前,较为流行的面向对象系统分析与设计工具或语言主要是统一建模语言UML。36 本题考查面向对象分析与结构化分析的基本概念。面向对象分析的主要任务是描述用户需求,构建一个准确的、一致的模型以描述软件需要解决的问题,其结果是软件系统的分析模型;面向对象设计的主要任务则是描述系统如何解决问题,其结果是软件系统的设计模型。37 本题考查软件维护的基础知识。 软件维护涉及不同内容,主要包括硬件设备的维护、应用软件的维护和数据的维护。其中数据维护主要负责数据库的安全性、完整性和进行并发性控制,以及维护数据库中的数据,当数据库中的数据类型、长度等发生变化时,或者需要添加某个数据项、数据库时,要负责修改相关的数据库、数据字典等工作。39 黑盒测试在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。白盒测试则根据程序的内部结构和逻辑来设计测试用例,对程序的执行路径和执行过程进行测试,检查是否满足设计要求。41 本题考查动态绑定的基础知识。 绑定是一个把过程调用和响应调用而需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫做静态绑定。动态绑定则是在运行时进行的,即一个给定的过程调用利代码的结合直到调用发生时才进行。42 软件是为用户设计的。胜任用户的任务,使用户满意是评价软件的最终目标。由于用户最初提出的软件需求一般比较模糊,刚交付的软件一股还隐藏着某些问题,所以需要对软件产品进行持续不断的改进。改进的动力主要来自用户使用过程中的反馈意见,包括,发现的质量问题,功能需要完善,操作需要简便,界面需要改进,需求也会有变化等。题中其他各项也是改进软件的原因,但分析研究用户反馈意见并改进软件是主要的动力。42 软件开发文档是重要的,软件产品=程序+文档。因此,软件开发就是程序和文档的生产过程。软件文档包括开发文档和用户文档两大类。开发文档记录了开发全过程、各阶段所用的技术和产生的成果,这是开发经验的积累,也是改进软件时必须参照的依据。用户文档向用户提供了使用和运行维护所需要的资料。由于软件开发周期长,开发过程中的人员流动是难免的。为避免开发人员在开发中途离职造成工作脱节,也需要实施开发过程的文档化。各阶段的评审也需要文档,这是质量保证的重要基础。 在开发过程中,面对面交流的重要结果需要用文档来固化,有据可依,有据可查。但是,文档不能完全取代面对面交流。许多不成熟的意见、思想的火花(常称为软知识)是很难用严格的文档来描述的。只有通过多次讨论甚至辩论达成某种结论后,才能成为比较成熟的硬知识,固化在文档上。 现在的敏捷开发方法特别关注面对面交流(沟通),充分发挥其作用,达到真正的一致认识和理解。单靠文档有时仍会产生不同理解甚至误解。44 数据模型主要有网状模型、层次模型、关系模型和面向对象模型。尽管采用网状模型和层次模型的网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的采用关系模型的关系数据库则较好地解决了这些问题,因为,关系模型是采用二维表格结构表达实体类型及实体间联系的数据模型。关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。45 0.702位于0.70与0.71之间。如果将区间0.70,0.71分成5等分,则分点依次为0.702,0.704,0.706,0.708。其中0.702位于最靠近0.70处,即与0.70的距离是区间长度的1/5。具体的表示式为:0.702=(4/5)×0.70+(1/5)×0.71。按照线性插值方法,它们的函数值也应有这样的比例:cos0.702=(4/5)×cos0.70+(1/5)×cos0.71=(4a+6)/5。51 网络攻击手段多种多样,常见的形式包括口令入侵、放置特洛伊木马程序、DoS攻击、端口扫描、网络监听、欺骗攻击、电子邮件攻击。 钓鱼网站属于欺骗攻击中的Web欺骗,Web欺骗允许攻击者创造整个中,http是协议名;www.xiexiebang.com是主机名,其中test.com是域名,www是主机名:main是路径名:index.htm是文件名。55 数据库中的恢复机制负责检测故障,并将数据库恢复到故障发生前的状态。60 第3章 Java语法基础 基础类型和语法 1、变量及其作用范围 Java变量可以分为:静态变量、成员变量和局部变量3种。 静态变量:在类中用static修饰的变量,它的生存周期是由类来决定的。 成员变量:在类中没有用static修饰的变量,它的生存周期由对象来决定。 局部变量:定义在方法里的变量、方法的参数或代码块里定义的变量,它们的作用范围用大括号{}来界定。 2、Java的变量分哪两种大的数据类型 Java的变量分为基本数据类型和引用数据类型。它们最大的区别在于,引用数据类型存 放的是数据所在的地址,而基本数据类型则是直接存放数据的值。 其他知识点:引用数据类型的变量存的值是一个内存地址。对象一般是通过new语句创 建出来的,它保存在堆空间中,可以被多个引用类型的变量所引用。当引 用a修改了对象的数据以后,其他的引用也是可以看到这些改变的。 3、Java包含哪些基本数据类型及其包装类 Java一共有8种基本数据类型,分别是byte、short、int、long、float、double、boolean、char;存储的数据量比较小,用二进制保存。其馐类分别是:Byte、Short、Integer、Float、Double、Boolean、Character。 Eg.Integer itg=new Integer.valueOf(100); Itg.intValue(); 4、如何理解Java中的装箱和拆箱 从Java 5.0开始,有一种自动装箱和拆箱的功能,就可以不必显式的进行类型转换,系统会自动的按照需要进行数据类型的转换。 Java中的装箱和拆箱指的是基本数据类型和包装类型的自动相互的转换。 装箱:基本数据类型——>包装类型 拆箱:包装类型——>基本数据类型 5、Java中equal和==的区别是什么 “==”运用在基本数据类型的时候,通过比较它们实际的值来判定是否相同;而用于比较引用类型的时候,则是比较两个引用的地址是否相等,也就是是否指向同一个对象。 Equal方法是java.lang.Object的方法,也就是所有的Java类都会有的方法。它可以被程序员覆盖重写,通过自定义的方式来判定两个对象是否相等。对于字符串java.lang.String类来说,它的equal方法用来比较字符串的字符序列是否相等。 6、Java中的注释有哪些 行注释:// 块注释:/* */,这种注释不会出现在HTML文档中。 文档注释:/** /,它的注释信息可以进入到javadoc文档中。注释文档将用来生成HTML 格式的代码API报告,还可以用@开头的关键字进行注释,以达到说明方法参数、返回 值、异常等各种详细信息。 Annotation:它会进入到编译层,并对程序结果产生影响。它最变通的作用就是用来替代 XML提供一些配置信息,例如,JPA、Spring等框架的配置信息就可以通过Annotation 来提供。 7、Java的引用和C++的指针有什么区别 Java的引用和C++的指针本质上,它们两者都是想通过一个叫做引用或者指针的东西,找到要操作的目标,方便在程序中操作。所不同的是Java的办法更安全、方便,但失去了C++的灵活,也算是对指针的一种包装和改进。 主要区别是: 对象和类型 1、类和对象有什么区别 类是一种抽象,而对象是类的实现。 Java的类通过class关键字进行定义,它代表了一种抽象的集合。在它的里面可以定义各种属性和方法,它们代表了每个类实例的特定的数据和动作。Java虚拟机对类只加载一次,对它的静态成员也只加载一次。 对象,指的是某一个特定抽象的实例,它属于某一种类型,也就是对象是通过类来创建的。它必须从属于某一个类,通过new关键字进行创建,它代表一个特定类型的实例,对象可以被多次创建。 2、Java中如何使用继承来重用代码 Java采用的是单继承制,使用extends关键字。通过继承之后,子类就拥有了父类除开私有成员以外的所有成员,从而达到代码重用的目的。在继承过程中,可以通过方法的覆盖来实现多态,让子类拥用自己独特的方法实现方式。 方法的覆盖(或重写)和重载是两个不同的概念。重载是创建一个方法名相同,但参数列表不同的方法;而方法覆盖则是子类对父类方法的覆盖和重写,定义一个名字、参数、返回值一样的方法即可。 3、简述Java中的多态 多态是建立在继承的基础之上的。 “多态”的本质是,发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。 4、Java中静态成员的特点 类的静态成员是通过static关键字修饰的成员,主要包括:静态成员变量、静态方法和静态代码块,它们具有以下一些特点: 1、在类加载的时候,就进行创建和初始化或执行代码。 2、它们对于一个类来说,都只有一份。 3、类的所有实例都可以访问到它们。 静态代码块先执行。 5、Java派生类中的构造方法如何为父类传递参数 在Java中,使用super()的形式来为父类的构造方法提供参数,通过参数的数目和类型来决定调用哪一个构造方法。如果调用的是父类的默认的无参数构造方法,则可以不必显式地使用super()。super()的使用必须放在子类构造方法的第一行,否则编译时会有语法错误。 6、接口和抽象类的区别 包含抽象(abstract)方法的类,就是抽象类。抽象类不能够实例化。Abstract class 接口所有的方法都是抽象的,它可以包含静态的变量,这些变量的值不能修改。interface 抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在Java语言中,抽象类表示一种继承关系,一个类吸能继承一个抽象类,而一个类却可以实现多个接口。 Class A extends B implements C,D { } 7、简述一下内部类的实质 包和访问控制 1、包应该如何被创建及使用 包是Java程序中关于命名空间的一种手段,它可以有效的解决类重名的问题。当需要把一个类定义在某个包下的时候,需要使用package关键字进行定义;当需要使用其他包下的类的时候,则需要使用import关键字进行导入。 2、说明private、protected、public、default(friendly)的区别 第4章 数据类型及类型转换 整型数据 1、int 和Integer有什么区别 所有的整型字面量默认为int 型。 装箱:创建Integer对象:Integer a=new Integer(20);Integer b=Integer.valueOf(30);拆箱:int c=a.intValue(); 2、Java中的八制字面量采用0开头,十六进制采用0x开头。 3、Int型数据采用4个字节进行存储,一共是32位。第一位用于表示正负号,这的取值范围是:-2^31~(2^31-1)。 Long型数据采用8个字节进行存储,一共是64位。第一位用于表示正负号,这的取值范围是:-2^63~(2^63-1)。 实型(浮点型)数据 1、float 和double的取值范围各是多少 Float型定义的数据末尾必须有“f”或“F”,为了和double区别。而double末尾可以有“d”或“D”,也可以不写。Java的浮点型数默认为double型。 2、如何用BigDecimal类进行精确运算 布尔型数据 1、Java可以用非0来代表true吗? Java不能用非0代表true,也不能用0代表 false,只能用布尔型的true和false来进行条件判断。 2、boolean和它的包装类的区别在哪里 Boolean变量一般初始化为false。 字符型数据 1、char的取值范围 Java中的char采用Unicode编码格式,用两个字节来表示一个字符,一共16位(bit),它所能表示的范围是:0~2^16。 2、char能否存储汉字 char是可以存储汉字的,每个中文字符都有对应的Unicode编码。对于英文字母,它们所处的范围是0~127之间,与ASCII码相同,这是因为Unicode兼容ASCII码。 3、如何使用转义字符 在Java中,使用反斜线“”来代表转义,它与紧跟在它后面的字符一起组成了转义字符,从而达到转义的目的。 String型数据 1、字符串字面量是否自动生成一个String对象 肯定会自动生成。字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自动的创建一个String对象,并返回这个对象的引用。 2、字符串对象池的作用是什么? Java虚拟机在启动的时候会实例化9个对象池,这9个对象池分别且来存储8种基本类型的包装类对象和String对象,主要是为了效率问题。 对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来的一个字符串的代码时,会到String的对象池中去检查是否有一个字符序列相同的对象。如果有,就取现成的对象,如果没有,则在对象池中创建一个对象,并返回。 3、StringBuffer和StringBuilder存在的作用是什么? Java的字符串String对象,有一个特性:不变性,它只能被创建,不能改变其中的值。 在Java程序中,如果有大量拼接字符串的需要的话,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的产生,以提高程序的性能。它们的作用类似,只不过StringBuilder线程是安全的。 StringBuffer sb=new StringBuffer(); Sb.append(a);//用append方法追加字符串 4、如何输出反转过后的字符串 实现字符串的反转一般来说有两种手段,第一是利用字符串存储字符数据的原理,取出它的char数组,进行重新排列并保存;第二则是生成StringBuffer对象,直接使用StringBuffer的reverse()方法。 本文由 tonhhssy 贡献 pdf 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。编辑推荐 揭开知名 IT 企业面试、笔试的核心机密; 传授程序员岗位求职的关键技巧。《Java 程序员面试宝典》 不同于其他 Java 程序书籍的主要特点如下。唯一性 本书是国内 市场上唯一介绍 Java 程序员求职面试技巧的图书和案例库。本书从实际出发,将 Java 程序 员面试中常会考到的一些编程基础性问题,比如 final、super 类、构造函数等最易考到的基 础 考点,放在第 2 部分 Java 程序设计里面,希望能切切实实解决实际问题。深入性 面试题通过一道题考一个专类方面的能力。说起 Java,人们首先想到的是 Java 编程语言,然而事 实上,Java 是一种技术,它由 4 个方面组成: Java 编程语言、Java 类文件格式、Java 虚拟机和 Java 应用程 序接口(Java API)。从面试者的角度来讲,一个测试也许能从多方面 揭示应试者的素质,至少你能 了解应试者所掌握类的水平。市面上流行的面试书籍在 此专业性的分类方面做得不够,正因为如此,《Java 程序员面试宝典 》 一书中追求的是程序员求职背后的一些东西: 对于技术的本质理解,而不仅限于对 Java 技术的单 纯讲解。广泛性 本书包括但不仅限于 Java 程序员面试。对求职市场面 试做了妥善分类后,将面试对象分为软件 开发人员、网络工程师、测试工程师和系统管理员(又包括操作系统管理员和数据库管理员等)实际上市面上流行的面试书籍仅对软件开发。人员比较侧重,而忽略网络工程师和测试工程师,而现 实情况是在诸如趋势科技、思科等公 司的面试中,对网络方面的考题日趋增加,在银行、金融公司 的面试中对系统管理员方面的 考题也占很大的比重。本书就这一方面给出详细论断,并结合大量考 题分析题目特点给出应 试方案。本书将在这些方面做出改进,以适应市场需求。同时本书对外企经常考到的 UML 及设计模式内容也做了深入的分析,并在上一本书《程序员面 试宝典》的基础上从本质 上诠释面试的真谛。真实性 本书的所有面试题都来自 2005—2006 年各大公司的面 试题及培训资料,内容非常新,可以算做 面试者求职前的一份全真模拟。我们希望营造一种 真实的面试氛围,同时作者希望把如何做好一个 职业人,以及作者在职场上所获得的实际感 悟融会在书中,通过真情实感,娓娓道来,指引读者走 上理想的工作岗位。本书不是一本万 能书籍,但却肯定是你工作求职的好助手、好伙伴!本书是程序员面试宝典系列中的一 部,也是上一本《程序员面试宝典》的姊 妹丛书。本书对程 序设计面试中 Java 常见的题型 和常用解答技巧进行了介绍,它不仅能帮助求职者快速复习有相关知 识点,也对现代职业人 如何有效求职、面试考官如何关注求职者动态等做了详细解说。本书通过详 解各大知名公司 技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅出地对其解答思 路进行 了分析和指导。希望能把在技术面试中取得的宝贵经验毫无保留地传授给读者,以便使求职 者对程序设计面试中的常见题型应付自如。通过对本书的学习,你会发现和完善有关试题的 最佳解 决方案,以应对不利局面的情况。本书简介 本书是程序员面试宝典系列中的一部,也是上一本《程序员面试宝典》的姊妹丛书。本 书对程序设 计面试中 Java 常见的题型和常用解答技巧进行了介绍,它不仅能帮助求职者快 速复习有相关知识点,也对现代职业人如何有效求职、面试考官如何关注求职者动态等做了 详细解说。本书通过详解各大知名公司技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅 出地对其解答思路进行了分析和指导。希望能把在技术面试中取得的宝 贵经验毫无保留地传授给读 者,以便使求职者对程序设计面试中的常见题型应付自如。通过 对本书的学习,你会发现和完善有 关试题的最佳解决方案,以应对不利局面。本书适 合(但不限于)将要找工作的程序和高校计算机类应曲毕业生,以及其他计算机爱好者。目录第三篇:初级程序员考试复习资料(笔试)
第四篇:Java程序员面试宝典
第五篇:Java程序员面试宝典
第 1 部分 求职过程 第 1 章 应聘求职 第 2 章 简历书写 第 3 章 3 种考试 第 4 章 职业生涯发展规划 第 5 章 3 个求职技巧 第 2 部分 Java 程序设计 第 6 章 Java 程序设计基本概念 第 7 章 异常与反射 第 8 章 传递与引用 第 9 章 循环、条件、概率 第 10 章 Java 内存管理 第 11 章 面向对象 第 12 章 继承与接口 第 13 章 JavaScript 第 14 章 Java 架构技术及相关中间件 第 3 部 分 数据结构和设计模式 第 15 章 字符串 第 16 章 设计模式 第 4 部分 UNIX、Oracle、网络 第 17 章 操作系统 第 18 章 数据库和 SQL 语言 第 19 章 计算机网 络及分布式系统 第 6 部分 Java 开源 第 20 章 J2EE 技术 第 21 章 数据相关 第 22 章 Java 中的 Web 设计 第 23 章 Java 中的网页设计 第 24 章 Struts 结构设计 第 25 章 Java 安全性 第 6 部分 综合面试题 第 26 章 英语面试 第 27 章 电话面试 第 28 章 智力测试 附录 A 简历模板 附录 B 面试经历总结 下载后 点击此处查看更多内容 1