第一篇:java SATC初級程序員認證考試--寶典
關于舉辦java SATC初級程序員認證考試培訓班的通知
Java語言是目前使用最廣泛的軟件開發(fā)語言,熟練掌握Java語言并取得SUN公司的相應證書是立志從事軟件開發(fā)工作人員必備的技能和證明。為了滿足廣大學生學習Java語言的要求,工學院計算機工程系與西安絲路軟件有限責任公司聯(lián)合舉辦java SATC初級程序員認證考試培訓,現(xiàn)將有關事項通知如下。
一、培訓內容
按照java SATC初級程序員考試大綱要求,對學員進行考試內容培訓。培訓任務是對Java語言進行系統(tǒng)地學習,并通過有針對性的上機實驗,了解掌握Java語言的基本內容,學會面向對象的編程方法,通過理論和實踐教學,使學生熟練掌握Java程序設計的基礎知識,基本概念;掌握面向對象程序設計的思想和編程技巧;熟練掌握分析程序和運用面向對象的思路和方法編制程序的能力,并在此基礎上,進一步學習關于Java語言編程的深入技術。
二、培訓方式
培訓采用理論與實踐相結合的方式進行,全部課程在機房進行,具體地點在工學院機房。
三、培訓對象
本培訓適用于計算機信息管理、計算機科學與技術、電子信息工程、通信工程、計算機控制技術、移動通信等本科、高職專業(yè)(包括自考、成教相應專業(yè)),要求具有C語言程序設計基礎。
四、課時與上課時間安排
本課程按照教學大綱要求共96學時,為了不影響學員的正常上課,本培訓安排在晚上和周六、周日進行(只占用一天),每周12學時,共8周。
五、任課教師
本培訓由西安絲路軟件有限責任公司高級技術人員與工學院計算機工程系教師共同執(zhí)教。
六、考試
培訓結束后,在西安絲路軟件有限責任公司參加認證考試,成績合格者,15個工作日后頒發(fā)《Sun SATC Certification 程序員》證書。對取得證書并即將畢業(yè)的學生推薦就業(yè)單位,其他學生推薦實習單位。
七、收費
培訓費、考試費、證書費、教材費合計1500元人民幣,其中包括800元人民幣的考試及證書費用,不愿意參加考試的學員可以只繳納培訓費和教材費共700元。
八、咨詢報名
報名時間:2011年9月13日~2011年9月16日
報名地點:各班輔導員處。
繳費地點:工學院教學科何雅琳老師處。
咨詢地點:工學院計算機系,集中咨詢時間:9月14日下午2:00-5:00.
第二篇:程序員認證考試題庫
第一部分 基礎知識練習目標
本章對應于《學生指南》各章的內容分別提供了練習題集,包括:
●
第一章Java入門
●
第二章數(shù)據(jù)類型和運算符
●
第三章流程控制與數(shù)組
●
第四章封裝
●
第五章繼承
●
第六章抽象類與接口
●
第七章多態(tài)
●
第八章異常
●
第九章多線程機制
●
第十章輸入輸出流
●
第十一章使用泛型和集合框架
●
第十二章基于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.執(zhí)行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運行于操作系統(tǒng)之上,它依賴于操作系統(tǒng) B.JVM運行于操作系統(tǒng)之上,它與操作系統(tǒng)無關
C.JVM支持Java程序運行,它能夠直接運行Java字節(jié)碼文件 D.JVM支持Java程序運行,它能夠直接運行Java源代碼文件
8.以下關于支持Java運行平臺的敘述,哪項錯誤? A.Java可在Solaris平臺上運行 B.Java可在Windows平臺上運行
C.Java語言與平臺無關。Java程序的運行結果依賴于操作系統(tǒng) D.Java語言與平臺無關。Java程序的運行結果與操作系統(tǒng)無關
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是一種熱編譯技術,它只對程序的部分字節(jié)碼進行優(yōu)化 D.Java HotSpot是一種熱編譯技術,它會對程序的全部字節(jié)碼進行優(yōu)化
1-3
11.環(huán)境變量PATH中含有多個路徑時,路徑和路徑之間可以用哪項來隔開?
A.:
B.,C.*
D:|
12.CLASSPATH中的“.”的含義是哪項?
A.省略號
B.當前目錄
C.所有目錄
D.上級目錄
13.JVM在執(zhí)行一個Java類時,大致采用以下過程?
A.執(zhí)行類中的代碼一>裝載類一>校驗類
B.校驗類一>裝載類一>執(zhí)行類中的代碼
C.裝載類一>執(zhí)行類中的代碼一>校驗類
D.裝載類一>校驗類一>執(zhí)行類中的代碼
14.當運行—個Java程序時,傳遞參數(shù)的格式是哪項?
A. java類名參數(shù)1,參數(shù)2
B. javac類名參數(shù)1參數(shù)2
C. java類名參數(shù)1參數(shù)2
D. java類名參數(shù)1+參數(shù)2
15.以下關于Java文件名的敘述,正確的有?(選兩項)
A.Java源文件的擴展名應為.java
B.Java源文件的文件名應與文件中的類名一致
C. Java字節(jié)碼文件的擴展名應為.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
第二章練習題(數(shù)據(jù)類型和運算符)
1.下列哪項不屬于Java語言的基本數(shù)據(jù)類型?
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語言中所規(guī)定的注釋樣式?(選三項)
A.//單行注釋
B.--單行注釋
C.
/*
*單行或多行注釋
*/
D.
/**
*文檔注釋
*/
5.下列哪項不是Java語言的關鍵字?
A.goto
B.sizeof
C.instanceof
D.volatile
1-6
6.現(xiàn)有如下五個聲明:
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.現(xiàn)有:
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.現(xiàn)有:
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.現(xiàn)有:
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.現(xiàn)有:
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.現(xiàn)有:
class Test2 f
public static void main(String [] args){
short a,b,C;
a=l;
b=2;
C=a+b;
a+=2:
}
}
以上代碼中,哪一句是錯誤的?
A.a(chǎn)=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.現(xiàn)有代碼片段:
String s=”123“;
String sl=S+456;
請問sl的結果是哪項?
A.123456
B.579
C.編譯錯誤
D.運行時拋出異常
1-9
14.基本數(shù)據(jù)類型float的包裹類是哪項? A. Integer B. Double C. Float D. Character
15.現(xiàn)有:
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
第三章練習題
第三章練習題(流程控制與數(shù)組)
1.現(xiàn)有:
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.現(xiàn)有: 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.下列有關數(shù)組的聲明中,正確的是哪項?(選兩項) A. int s[10]; B. int[10] s; C. int[5] s={l,2,3,4,5}; D. int s[]; 5.已知數(shù)組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.為將數(shù)組myArray的長度由3改為6,現(xiàn)采取以下編碼: int[]myArray=new int [3]; myArray=new int[6]; 代碼執(zhí)行后,以下敘述哪項是正確的? A.數(shù)組myArray的長度已由3改為6,其中前3個元素的值不變,后3個元素 的值為空。 B.數(shù)組myArray的長度已由3改為6,其中前3個元素的值不變,后3個元素 需再經(jīng)過初始化后才能使用。 C.數(shù)組myArray的長度沒有變化。 D.數(shù)組myArray的長度已由3改為6,原來3個元素的值全部丟失。 8.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.以下哪種初始化數(shù)組的方式是錯誤的? 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.創(chuàng)建對象實例的時候可以不使用new關鍵字 B.new所創(chuàng)建的對象不占用內存空間 C.new會調用類的構造器來創(chuàng)建對象 D.new所創(chuàng)建的對象一定存在引用變量 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.現(xiàn)有: 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.現(xiàn)有: 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.} 在第一行插入哪項代碼,可以使程序正常編譯和執(zhí)行? A.import utils.*; B.import utils.Rep.*; C.import static utils.Rep.twice; D.static import utils.Rep.twice; 13.現(xiàn)有: 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.現(xiàn)有如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.現(xiàn)有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行將編譯并產(chǎn)生輸出“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.下列關于繼承優(yōu)點的敘述正確的是哪幾項?(選三項) A.可以創(chuàng)建更為特殊的類型 B.消除重復代碼 C.執(zhí)行效率高 D.便于維護 2.在子類中調用父類中被覆蓋的方法時需要使用哪項關鍵字? A.this B.super C.new D.以上都不是 3.現(xiàn)有 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.現(xiàn)有: public class Pet() public class Cat extends Pet{) 執(zhí)行代碼 Cat c-new Cat(); Pet p=(Pet)c; 后下列哪項是正確的? A.Pet p=(Pet)c運行錯誤 B.Pet p=(Pet)c編譯錯誤 C.Pet p=(Pet)c止常執(zhí)行 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”); } } 執(zhí)行代碼 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.現(xiàn)有: 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對象被創(chuàng)建 B.2個Harrier對象被創(chuàng)建 C.3個Harrier對象被創(chuàng)建 D.編譯失敗 9.現(xiàn)有: 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.現(xiàn)有: 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行出現(xiàn)一個錯誤,編譯失敗。 D.第8行出現(xiàn)一個錯誤,編譯失敗。 11.現(xiàn)有: 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現(xiàn)有 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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行,哪兩項允許代碼編譯并產(chǎn)生”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.一個類可以實現(xiàn)多個接口 C.類實現(xiàn)接口時必須實現(xiàn)其中的方法 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.現(xiàn)有: 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.現(xiàn)自: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有兩個文件: 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行出現(xiàn)一個錯誤,編譯失敗。 B.Find類第5行出現(xiàn)一個錯誤,編譯失敗。 C.Find類第6行出現(xiàn)一個錯誤,編譯失敗。 D.doX doX doX doX } 1-36 11.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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 第七章練習題(多態(tài)) 1.下列自‘關多態(tài)的敘述正確的是哪項?(選兩項) A.父類的引用指向子類的實例是一種多態(tài) B.子類的引用指向子類的實例是一種多態(tài) c.接口的引用指向實現(xiàn)該接口類的實例是一種多態(tài) D.抽象類的引用指向抽象類的實例是一種多態(tài) 2.Java中方法綁定有哪些形式?(選兩項) A.編譯時刻綁定 B.運行時刻綁定 c.靜態(tài)綁定 D.私有綁定 3.表達式”hello“ instance of String返回的值是哪項? A.true B. false C. D. 0 4.求平方根方法public static double sqrt(double a)可以傳遞的參數(shù) 類型有哪些?(選三項) A.byte B.float C.String D.long 5.涉及類MyClass的方法簽名足public void find(MyClass a),那么該 方法可接收的實際參數(shù)的類型可以是哪些?(選兩項) A.MyClass類的類型 B.MyClass子類的類型 C.Object類型 D.所有接口 1-41 6.使用下列哪些關鍵字可以判定實參的具體類型? A.as B.is C.instanceof D.extends 7.現(xiàn)有: 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); } } 執(zhí)行下列代碼的結果是哪項? Pencil pen=new RubberPencil(); pen.write(”Hello“); pen.erase(”Hello“); A.Write Hello Erase Hello B.Erase Hello Write Hello C.編譯錯誤 D.運行時拋出異常 8.現(xiàn)有: 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 執(zhí)行下列代碼的結果是哪項? Pencil pen=new RubberPencil(); pen.write(”Hello“); A.Write Hello B.Rubber Write Hello C.編譯錯誤 D.運行時拋出異常 下列哪些方法是在編譯時刻綁定的?(選三項) A.靜態(tài)方法 B.private方法 C.final方法 D.非private方法 10.現(xiàn)有: 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); } } 執(zhí)行下列代碼的結果是哪項? Pencil pen=new Pencil(); ((RubberPencil)pen).write(”Hello“); A. Write Hello B.Rubber Write Hello c.編譯失敗 D.運行時拋出異常 1-43 1.現(xiàn)有: 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.現(xiàn)有: class A {public String name=”a“} class B extends A {public String name=”b“} 執(zhí)行如下代碼后的結果是哪項? A a=new B(); System.out.println(a.name); A. a B. b c.編譯失敗 D.運行時拋出異常 13.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有: 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.現(xiàn)有 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.現(xiàn)有: 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 }} 可能會產(chǎn)生哪兩項結果 ?(選兩項) 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比特,因此需要的存儲器芯片數(shù)目為218/215=23個。5, 7 解析:本題考查計算機系統(tǒng)基礎知識。 Cache(高速緩沖存儲器)是一種特殊的存儲器子系統(tǒng),其中復制了頻繁使用的數(shù)據(jù)以利于快速訪問。Cache的出現(xiàn)是基于兩種因素:首先,是由于CPU的速度和性能提高很快而主存速度較低且價格高,第二就是程序執(zhí)行的局部性特點。因此,才將速度比較快而容量有限的SRAM構成Cache,目的在于盡可能發(fā)揮CPU的高速度。8 本題考查光盤存儲技術基本常識。題目給出的是常見光盤格式,其中DVD-RAM和DVD-RW是DVD論壇所支持的兩種不同的可多次擦除重寫的DVD光盤格式,CD-R指一次性可寫(刻錄)CD光盤,而CD-RW指可多次擦除、重寫的CD光盤。11 本題考查計算機病毒方面的上基礎知識。 計算機病毒的分類方法有許多種,按照最通用的區(qū)分方式,即根據(jù)其感染的途徑以及采用的核技術區(qū)分,計算機病毒可分為文件型計算機病毒、引導型計算機病毒、宏病毒和目錄型計算機病毒。 文件型計算機病毒感染可執(zhí)行文件(包括EXE和COM文件。 引導型計算機病毒影響軟盤或硬盤的引導扇區(qū)。 宏病毒感染的對象是使用某些程序創(chuàng)建的文本文檔、數(shù)據(jù)庫、電了表格等文件。 目錄型計算機病毒能夠修改硬盤上存儲的所有文件的地址,如果用戶使用某些工具(如SCANDISK或CHKDSK檢測受感染的磁盤,會發(fā)現(xiàn)大量的文件鏈接地址的錯誤,這些錯誤都是由此類計算機病毒造成的。12 本題考查知識產(chǎn)權基本知識,即軟件著作權歸屬。依據(jù)我國《著作權法》、《計算機軟件保護條例》,委托開發(fā)的軟件的著作權可歸屬于委托方,也可歸屬于受托方,或者由委托方和受托方雙方共有;具體情況由雙方訂立的合同約定來確認。如果委托方和受托方之間簽訂了書面的委托開發(fā)合同,并對委托開發(fā)的軟件著作權的歸屬有明確約定的,那么該委托開發(fā)軟件著作權應依照合同的約定確認著作權歸屬關系。對于在委托開發(fā)軟件活動中,委托方和受托方之間沒有簽訂書面的委托開發(fā)合同,或者雖然簽訂了書面的委托開發(fā)合同,但是合同中對該委托開發(fā)軟件著作權的歸屬約定不明確的,那么根據(jù)法律的規(guī)定,該委托開發(fā)軟件的著作權應屬于受托者所有,但是委托人可以享有該軟件的使用權。法律的這種規(guī)定主要是考慮了受托人是軟件的實際開發(fā)者,是軟件真實的智力投資者,符合開發(fā)者享有軟件著作權的一般原則。所以,本題涉及的軟件著作權應屬于軟件公司。13 本題考查知識產(chǎn)權基本知識,即區(qū)別侵犯物權與知識產(chǎn)權行為。將他人的軟件光盤占為已有,涉及的是物體本身,即軟件的物化載體,該行為是侵犯財產(chǎn)所有權的行為。如果行為人雖未占有這一軟件光盤,(如借或租他人一張軟件光盤,使用后返還,但擅自將該軟件光盤復制出售,則該行為涉及的是無形財產(chǎn),即軟件開發(fā)商的思想表現(xiàn)形式(知識產(chǎn)品,屬于侵犯知識產(chǎn)權行為。14 指令寄存器(IR)用來保存當前正在執(zhí)行的指令。當執(zhí)行一條指令時,先把它從內存取到數(shù)據(jù)寄存器(DR)中,然后再傳送至IR。為了執(zhí)行任何給定的指令,必須對操作碼進行測試,以便識別所要求的操作。指令譯碼器(ID)就是做這項工作的。指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經(jīng)譯碼后,即可向操作控制器發(fā)出具體操作的特定信號。地址寄存器(AR)用來保存當前CPU所訪問的內存單元的地址。由于在內存和CPU之間存在著操作速度上的差別,所以必須使用地址寄存器來保持地址信息,直到內存的讀/寫操作完成為止。 為了保證程序指令能夠連續(xù)地執(zhí)行下去,CPU必須具有某些手段來確定下一條指令的地址。而程序計數(shù)器正是起到這種作用,所以通常又稱為指令計數(shù)器。在程序開始執(zhí)行前,必須將它的起始地址,即程序的一條指令所在的內存單元地址送入PC,因此程序計數(shù)器(PC)的內容即是從內存提取的第一條指令的地址。當執(zhí)行指令時,CPU將自動修改PC的內容,即每執(zhí)行一條指令PC增加一個量,這個量等于指令所含的字節(jié)數(shù),以便使其保持的總是將要執(zhí)行的下一條指令的地址。由于大多數(shù)指令都是按順序來執(zhí)行的,所以修改的過程通常只是簡單的對PC加1。17 先來先服務,是按到達時間順序,一個服務完了,磁頭回去去找第二個,找到馬上執(zhí)行,類推,不知道下一個什么時候到,不能確定回到哪個點 最短尋道,是一個服務完,找離磁頭最近的那個進程,也不固定 電梯調度,磁頭固定的在兩個點之間運動,哪個進程能搭上就運行掉 單項掃描,磁頭從一邊掃到另一邊,完了立刻跳回到開頭,回來過程中不處理進程 19 從狀態(tài)圖的狀態(tài)0出發(fā),識別a后到達狀態(tài)0,識別b后到達狀態(tài)1,由于不存在從狀態(tài)1出發(fā)識別a的狀態(tài)轉移,因此,abab不能被該自動機識別。對于選項B,識別aabb的狀態(tài)轉移路是狀態(tài)0→狀態(tài)0→狀態(tài)1→狀態(tài)2。對于選項C,識別bbaa的狀態(tài)轉移路是狀態(tài)0→狀態(tài)1→狀態(tài)2→狀態(tài)2→狀態(tài)2。對于選項D,識別bbab的狀態(tài)轉移路是狀態(tài)0→狀態(tài)1→狀態(tài)2→狀態(tài)2→狀態(tài)2。23 本題考查數(shù)據(jù)結構基礎知識。 對二叉樹進行先序遍歷的過程是:若二叉樹非空,則先訪問根結點,然后先序遍歷左子樹,最后先序遍歷右子樹。因此,二叉樹的先序遍歷序列中,第一個元素是根結點。對二叉樹進行中序遍歷的過程是:若二叉樹非空,則先中序遍歷左子樹,然后訪問根結點,最后中序遍歷右子樹。因此,若在中序遍歷序列中已找出二叉樹的根結點,則根結點左邊為左子樹的中序遍歷序列,右邊是右子樹的中序遍歷序列。 由此,根據(jù)先序序列確定根結點,根據(jù)中序序列劃分左右子樹,反復應用此原則,就可根據(jù)先序遍歷序列和中序遍歷序列恢復二叉樹的結構。 本題中,先序序列為ABDCE,因此A是樹根結點,中序序列為BDAEC,因此BD是左子樹上的結點,EC是右子樹上的結點。根據(jù)先序遍歷序列,可知B是左子樹的根結點,C是右子樹的根結點。在中序遍歷序列BDAEC中,D在B之后,因此D是B的右孩子。同理,在中序遍歷序列BDAEC中,E在C之前,因此E是C的左孩子。25 蒙 29 本題考查面向對象的基本概念。面向對象概念中,子類是父類的特化,子類能夠自動獲得父類的屬性和方法,即繼承父類的屬性和方法,但子類可以根據(jù)實際情況對繼承而來的方法進行覆蓋或重載,也就是子類和父類的行為不必保持完全地一致。33 本題考查類和對象的基本概念。類是對象的模板,類定義了對象共有的屬性和方法。類也可以看作是一組對象共有特性的集合,即一個類中的對象擁有相同的屬性和方法,一般而言,從一個類可以產(chǎn)生多個對象。34 面向對象設計的含義是設計分析模型和實現(xiàn)相應源代碼,在目標代碼環(huán)境中這種源代碼可被執(zhí)行。面向對象設計是建立在面向對象分析的基礎上的。35 本題考查面向對象程序設計語言的作用。 面向對象程序設計語言的最主要的作用是面向對象的系統(tǒng)實現(xiàn),它并不能用于系統(tǒng)的分析與設計,目前,較為流行的面向對象系統(tǒng)分析與設計工具或語言主要是統(tǒng)一建模語言UML。36 本題考查面向對象分析與結構化分析的基本概念。面向對象分析的主要任務是描述用戶需求,構建一個準確的、一致的模型以描述軟件需要解決的問題,其結果是軟件系統(tǒng)的分析模型;面向對象設計的主要任務則是描述系統(tǒng)如何解決問題,其結果是軟件系統(tǒng)的設計模型。37 本題考查軟件維護的基礎知識。 軟件維護涉及不同內容,主要包括硬件設備的維護、應用軟件的維護和數(shù)據(jù)的維護。其中數(shù)據(jù)維護主要負責數(shù)據(jù)庫的安全性、完整性和進行并發(fā)性控制,以及維護數(shù)據(jù)庫中的數(shù)據(jù),當數(shù)據(jù)庫中的數(shù)據(jù)類型、長度等發(fā)生變化時,或者需要添加某個數(shù)據(jù)項、數(shù)據(jù)庫時,要負責修改相關的數(shù)據(jù)庫、數(shù)據(jù)字典等工作。39 黑盒測試在完全不考慮軟件的內部結構和特性的情況下,測試軟件的外部特性。白盒測試則根據(jù)程序的內部結構和邏輯來設計測試用例,對程序的執(zhí)行路徑和執(zhí)行過程進行測試,檢查是否滿足設計要求。41 本題考查動態(tài)綁定的基礎知識。 綁定是一個把過程調用和響應調用而需要執(zhí)行的代碼加以結合的過程。在一般的程序設計語言中,綁定是在編譯時進行的,叫做靜態(tài)綁定。動態(tài)綁定則是在運行時進行的,即一個給定的過程調用利代碼的結合直到調用發(fā)生時才進行。42 軟件是為用戶設計的。勝任用戶的任務,使用戶滿意是評價軟件的最終目標。由于用戶最初提出的軟件需求一般比較模糊,剛交付的軟件一股還隱藏著某些問題,所以需要對軟件產(chǎn)品進行持續(xù)不斷的改進。改進的動力主要來自用戶使用過程中的反饋意見,包括,發(fā)現(xiàn)的質量問題,功能需要完善,操作需要簡便,界面需要改進,需求也會有變化等。題中其他各項也是改進軟件的原因,但分析研究用戶反饋意見并改進軟件是主要的動力。42 軟件開發(fā)文檔是重要的,軟件產(chǎn)品=程序+文檔。因此,軟件開發(fā)就是程序和文檔的生產(chǎn)過程。軟件文檔包括開發(fā)文檔和用戶文檔兩大類。開發(fā)文檔記錄了開發(fā)全過程、各階段所用的技術和產(chǎn)生的成果,這是開發(fā)經(jīng)驗的積累,也是改進軟件時必須參照的依據(jù)。用戶文檔向用戶提供了使用和運行維護所需要的資料。由于軟件開發(fā)周期長,開發(fā)過程中的人員流動是難免的。為避免開發(fā)人員在開發(fā)中途離職造成工作脫節(jié),也需要實施開發(fā)過程的文檔化。各階段的評審也需要文檔,這是質量保證的重要基礎。 在開發(fā)過程中,面對面交流的重要結果需要用文檔來固化,有據(jù)可依,有據(jù)可查。但是,文檔不能完全取代面對面交流。許多不成熟的意見、思想的火花(常稱為軟知識)是很難用嚴格的文檔來描述的。只有通過多次討論甚至辯論達成某種結論后,才能成為比較成熟的硬知識,固化在文檔上。 現(xiàn)在的敏捷開發(fā)方法特別關注面對面交流(溝通),充分發(fā)揮其作用,達到真正的一致認識和理解。單靠文檔有時仍會產(chǎn)生不同理解甚至誤解。44 數(shù)據(jù)模型主要有網(wǎng)狀模型、層次模型、關系模型和面向對象模型。盡管采用網(wǎng)狀模型和層次模型的網(wǎng)狀數(shù)據(jù)庫和層次數(shù)據(jù)庫已經(jīng)很好地解決了數(shù)據(jù)的集中和共享問題,但是在數(shù)據(jù)獨立性和抽象級別上仍有很大欠缺。用戶在對這兩種數(shù)據(jù)庫進行存取時,仍然需要明確數(shù)據(jù)的存儲結構,指出存取路徑。而后來出現(xiàn)的采用關系模型的關系數(shù)據(jù)庫則較好地解決了這些問題,因為,關系模型是采用二維表格結構表達實體類型及實體間聯(lián)系的數(shù)據(jù)模型。關系模型有嚴格的數(shù)學基礎,抽象級別比較高,而且簡單清晰,便于理解和使用。45 0.702位于0.70與0.71之間。如果將區(qū)間0.70,0.71分成5等分,則分點依次為0.702,0.704,0.706,0.708。其中0.702位于最靠近0.70處,即與0.70的距離是區(qū)間長度的1/5。具體的表示式為:0.702=(4/5)×0.70+(1/5)×0.71。按照線性插值方法,它們的函數(shù)值也應有這樣的比例:cos0.702=(4/5)×cos0.70+(1/5)×cos0.71=(4a+6)/5。51 網(wǎng)絡攻擊手段多種多樣,常見的形式包括口令入侵、放置特洛伊木馬程序、DoS攻擊、端口掃描、網(wǎng)絡監(jiān)聽、欺騙攻擊、電子郵件攻擊。 釣魚網(wǎng)站屬于欺騙攻擊中的Web欺騙,Web欺騙允許攻擊者創(chuàng)造整個中,http是協(xié)議名;004km.cn是主機名,其中test.com是域名,www是主機名:main是路徑名:index.htm是文件名。55 數(shù)據(jù)庫中的恢復機制負責檢測故障,并將數(shù)據(jù)庫恢復到故障發(fā)生前的狀態(tài)。60 第3章 Java語法基礎 基礎類型和語法 1、變量及其作用范圍 Java變量可以分為:靜態(tài)變量、成員變量和局部變量3種。 靜態(tài)變量:在類中用static修飾的變量,它的生存周期是由類來決定的。 成員變量:在類中沒有用static修飾的變量,它的生存周期由對象來決定。 局部變量:定義在方法里的變量、方法的參數(shù)或代碼塊里定義的變量,它們的作用范圍用大括號{}來界定。 2、Java的變量分哪兩種大的數(shù)據(jù)類型 Java的變量分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。它們最大的區(qū)別在于,引用數(shù)據(jù)類型存 放的是數(shù)據(jù)所在的地址,而基本數(shù)據(jù)類型則是直接存放數(shù)據(jù)的值。 其他知識點:引用數(shù)據(jù)類型的變量存的值是一個內存地址。對象一般是通過new語句創(chuàng) 建出來的,它保存在堆空間中,可以被多個引用類型的變量所引用。當引 用a修改了對象的數(shù)據(jù)以后,其他的引用也是可以看到這些改變的。 3、Java包含哪些基本數(shù)據(jù)類型及其包裝類 Java一共有8種基本數(shù)據(jù)類型,分別是byte、short、int、long、float、double、boolean、char;存儲的數(shù)據(jù)量比較小,用二進制保存。其饈類分別是:Byte、Short、Integer、Float、Double、Boolean、Character。 Eg.Integer itg=new Integer.valueOf(100); Itg.intValue(); 4、如何理解Java中的裝箱和拆箱 從Java 5.0開始,有一種自動裝箱和拆箱的功能,就可以不必顯式的進行類型轉換,系統(tǒng)會自動的按照需要進行數(shù)據(jù)類型的轉換。 Java中的裝箱和拆箱指的是基本數(shù)據(jù)類型和包裝類型的自動相互的轉換。 裝箱:基本數(shù)據(jù)類型——>包裝類型 拆箱:包裝類型——>基本數(shù)據(jù)類型 5、Java中equal和==的區(qū)別是什么 “==”運用在基本數(shù)據(jù)類型的時候,通過比較它們實際的值來判定是否相同;而用于比較引用類型的時候,則是比較兩個引用的地址是否相等,也就是是否指向同一個對象。 Equal方法是java.lang.Object的方法,也就是所有的Java類都會有的方法。它可以被程序員覆蓋重寫,通過自定義的方式來判定兩個對象是否相等。對于字符串java.lang.String類來說,它的equal方法用來比較字符串的字符序列是否相等。 6、Java中的注釋有哪些 行注釋:// 塊注釋:/* */,這種注釋不會出現(xiàn)在HTML文檔中。 文檔注釋:/** /,它的注釋信息可以進入到javadoc文檔中。注釋文檔將用來生成HTML 格式的代碼API報告,還可以用@開頭的關鍵字進行注釋,以達到說明方法參數(shù)、返回 值、異常等各種詳細信息。 Annotation:它會進入到編譯層,并對程序結果產(chǎn)生影響。它最變通的作用就是用來替代 XML提供一些配置信息,例如,JPA、Spring等框架的配置信息就可以通過Annotation 來提供。 7、Java的引用和C++的指針有什么區(qū)別 Java的引用和C++的指針本質上,它們兩者都是想通過一個叫做引用或者指針的東西,找到要操作的目標,方便在程序中操作。所不同的是Java的辦法更安全、方便,但失去了C++的靈活,也算是對指針的一種包裝和改進。 主要區(qū)別是: 對象和類型 1、類和對象有什么區(qū)別 類是一種抽象,而對象是類的實現(xiàn)。 Java的類通過class關鍵字進行定義,它代表了一種抽象的集合。在它的里面可以定義各種屬性和方法,它們代表了每個類實例的特定的數(shù)據(jù)和動作。Java虛擬機對類只加載一次,對它的靜態(tài)成員也只加載一次。 對象,指的是某一個特定抽象的實例,它屬于某一種類型,也就是對象是通過類來創(chuàng)建的。它必須從屬于某一個類,通過new關鍵字進行創(chuàng)建,它代表一個特定類型的實例,對象可以被多次創(chuàng)建。 2、Java中如何使用繼承來重用代碼 Java采用的是單繼承制,使用extends關鍵字。通過繼承之后,子類就擁有了父類除開私有成員以外的所有成員,從而達到代碼重用的目的。在繼承過程中,可以通過方法的覆蓋來實現(xiàn)多態(tài),讓子類擁用自己獨特的方法實現(xiàn)方式。 方法的覆蓋(或重寫)和重載是兩個不同的概念。重載是創(chuàng)建一個方法名相同,但參數(shù)列表不同的方法;而方法覆蓋則是子類對父類方法的覆蓋和重寫,定義一個名字、參數(shù)、返回值一樣的方法即可。 3、簡述Java中的多態(tài) 多態(tài)是建立在繼承的基礎之上的。 “多態(tài)”的本質是,發(fā)送消息給某個對象,讓該對象自行決定響應何種行為。通過將子類對象引用賦值給超類對象引用變量來實現(xiàn)動態(tài)方法調用。 4、Java中靜態(tài)成員的特點 類的靜態(tài)成員是通過static關鍵字修飾的成員,主要包括:靜態(tài)成員變量、靜態(tài)方法和靜態(tài)代碼塊,它們具有以下一些特點: 1、在類加載的時候,就進行創(chuàng)建和初始化或執(zhí)行代碼。 2、它們對于一個類來說,都只有一份。 3、類的所有實例都可以訪問到它們。 靜態(tài)代碼塊先執(zhí)行。 5、Java派生類中的構造方法如何為父類傳遞參數(shù) 在Java中,使用super()的形式來為父類的構造方法提供參數(shù),通過參數(shù)的數(shù)目和類型來決定調用哪一個構造方法。如果調用的是父類的默認的無參數(shù)構造方法,則可以不必顯式地使用super()。super()的使用必須放在子類構造方法的第一行,否則編譯時會有語法錯誤。 6、接口和抽象類的區(qū)別 包含抽象(abstract)方法的類,就是抽象類。抽象類不能夠實例化。Abstract class 接口所有的方法都是抽象的,它可以包含靜態(tài)的變量,這些變量的值不能修改。interface 抽象類是一種功能不全的類,接口只是一個抽象方法聲明和靜態(tài)不能被修改的數(shù)據(jù)的集合,兩者都不能被實例化。從某種意義上說,接口是一種特殊形式的抽象類,在Java語言中,抽象類表示一種繼承關系,一個類吸能繼承一個抽象類,而一個類卻可以實現(xiàn)多個接口。 Class A extends B implements C,D { } 7、簡述一下內部類的實質 包和訪問控制 1、包應該如何被創(chuàng)建及使用 包是Java程序中關于命名空間的一種手段,它可以有效的解決類重名的問題。當需要把一個類定義在某個包下的時候,需要使用package關鍵字進行定義;當需要使用其他包下的類的時候,則需要使用import關鍵字進行導入。 2、說明private、protected、public、default(friendly)的區(qū)別 第4章 數(shù)據(jù)類型及類型轉換 整型數(shù)據(jù) 1、int 和Integer有什么區(qū)別 所有的整型字面量默認為int 型。 裝箱:創(chuàng)建Integer對象:Integer a=new Integer(20);Integer b=Integer.valueOf(30);拆箱:int c=a.intValue(); 2、Java中的八制字面量采用0開頭,十六進制采用0x開頭。 3、Int型數(shù)據(jù)采用4個字節(jié)進行存儲,一共是32位。第一位用于表示正負號,這的取值范圍是:-2^31~(2^31-1)。 Long型數(shù)據(jù)采用8個字節(jié)進行存儲,一共是64位。第一位用于表示正負號,這的取值范圍是:-2^63~(2^63-1)。 實型(浮點型)數(shù)據(jù) 1、float 和double的取值范圍各是多少 Float型定義的數(shù)據(jù)末尾必須有“f”或“F”,為了和double區(qū)別。而double末尾可以有“d”或“D”,也可以不寫。Java的浮點型數(shù)默認為double型。 2、如何用BigDecimal類進行精確運算 布爾型數(shù)據(jù) 1、Java可以用非0來代表true嗎? Java不能用非0代表true,也不能用0代表 false,只能用布爾型的true和false來進行條件判斷。 2、boolean和它的包裝類的區(qū)別在哪里 Boolean變量一般初始化為false。 字符型數(shù)據(jù) 1、char的取值范圍 Java中的char采用Unicode編碼格式,用兩個字節(jié)來表示一個字符,一共16位(bit),它所能表示的范圍是:0~2^16。 2、char能否存儲漢字 char是可以存儲漢字的,每個中文字符都有對應的Unicode編碼。對于英文字母,它們所處的范圍是0~127之間,與ASCII碼相同,這是因為Unicode兼容ASCII碼。 3、如何使用轉義字符 在Java中,使用反斜線“”來代表轉義,它與緊跟在它后面的字符一起組成了轉義字符,從而達到轉義的目的。 String型數(shù)據(jù) 1、字符串字面量是否自動生成一個String對象 肯定會自動生成。字符串類具有一定的特殊性,JVM在執(zhí)行雙引號操作符的時候,會自動的創(chuàng)建一個String對象,并返回這個對象的引用。 2、字符串對象池的作用是什么? Java虛擬機在啟動的時候會實例化9個對象池,這9個對象池分別且來存儲8種基本類型的包裝類對象和String對象,主要是為了效率問題。 對象池的存在是為了避免頻繁的創(chuàng)建和銷毀對象而影響系統(tǒng)性能。當JVM在運行用雙引號引起來的一個字符串的代碼時,會到String的對象池中去檢查是否有一個字符序列相同的對象。如果有,就取現(xiàn)成的對象,如果沒有,則在對象池中創(chuàng)建一個對象,并返回。 3、StringBuffer和StringBuilder存在的作用是什么? Java的字符串String對象,有一個特性:不變性,它只能被創(chuàng)建,不能改變其中的值。 在Java程序中,如果有大量拼接字符串的需要的話,應該使用StringBuffer和StringBuilder類,它們可以避免不必要的String對象的產(chǎn)生,以提高程序的性能。它們的作用類似,只不過StringBuilder線程是安全的。 StringBuffer sb=new StringBuffer(); Sb.append(a);//用append方法追加字符串 4、如何輸出反轉過后的字符串 實現(xiàn)字符串的反轉一般來說有兩種手段,第一是利用字符串存儲字符數(shù)據(jù)的原理,取出它的char數(shù)組,進行重新排列并保存;第二則是生成StringBuffer對象,直接使用StringBuffer的reverse()方法。 本文由 tonhhssy 貢獻 pdf 文檔可能在 WAP 端瀏覽體驗不佳。建議您優(yōu)先選擇 TXT,或下載源文件到本機查看。編輯推薦 揭開知名 IT 企業(yè)面試、筆試的核心機密; 傳授程序員崗位求職的關鍵技巧?!禞ava 程序員面試寶典》 不同于其他 Java 程序書籍的主要特點如下。唯一性 本書是國內 市場上唯一介紹 Java 程序員求職面試技巧的圖書和案例庫。本書從實際出發(fā),將 Java 程序 員面試中常會考到的一些編程基礎性問題,比如 final、super 類、構造函數(shù)等最易考到的基 礎 考點,放在第 2 部分 Java 程序設計里面,希望能切切實實解決實際問題。深入性 面試題通過一道題考一個專類方面的能力。說起 Java,人們首先想到的是 Java 編程語言,然而事 實上,Java 是一種技術,它由 4 個方面組成: Java 編程語言、Java 類文件格式、Java 虛擬機和 Java 應用程 序接口(Java API)。從面試者的角度來講,一個測試也許能從多方面 揭示應試者的素質,至少你能 了解應試者所掌握類的水平。市面上流行的面試書籍在 此專業(yè)性的分類方面做得不夠,正因為如此,《Java 程序員面試寶典 》 一書中追求的是程序員求職背后的一些東西: 對于技術的本質理解,而不僅限于對 Java 技術的單 純講解。廣泛性 本書包括但不僅限于 Java 程序員面試。對求職市場面 試做了妥善分類后,將面試對象分為軟件 開發(fā)人員、網(wǎng)絡工程師、測試工程師和系統(tǒng)管理員(又包括操作系統(tǒng)管理員和數(shù)據(jù)庫管理員等)實際上市面上流行的面試書籍僅對軟件開發(fā)。人員比較側重,而忽略網(wǎng)絡工程師和測試工程師,而現(xiàn) 實情況是在諸如趨勢科技、思科等公 司的面試中,對網(wǎng)絡方面的考題日趨增加,在銀行、金融公司 的面試中對系統(tǒng)管理員方面的 考題也占很大的比重。本書就這一方面給出詳細論斷,并結合大量考 題分析題目特點給出應 試方案。本書將在這些方面做出改進,以適應市場需求。同時本書對外企經(jīng)??嫉降?UML 及設計模式內容也做了深入的分析,并在上一本書《程序員面 試寶典》的基礎上從本質 上詮釋面試的真諦。真實性 本書的所有面試題都來自 2005—2006 年各大公司的面 試題及培訓資料,內容非常新,可以算做 面試者求職前的一份全真模擬。我們希望營造一種 真實的面試氛圍,同時作者希望把如何做好一個 職業(yè)人,以及作者在職場上所獲得的實際感 悟融會在書中,通過真情實感,娓娓道來,指引讀者走 上理想的工作崗位。本書不是一本萬 能書籍,但卻肯定是你工作求職的好助手、好伙伴!本書是程序員面試寶典系列中的一 部,也是上一本《程序員面試寶典》的姊 妹叢書。本書對程 序設計面試中 Java 常見的題型 和常用解答技巧進行了介紹,它不僅能幫助求職者快速復習有相關知 識點,也對現(xiàn)代職業(yè)人 如何有效求職、面試考官如何關注求職者動態(tài)等做了詳細解說。本書通過詳 解各大知名公司 技術類(開發(fā)、測試、系統(tǒng)管理)面試中的常見 Java 試題,深入淺出地對其解答思 路進行 了分析和指導。希望能把在技術面試中取得的寶貴經(jīng)驗毫無保留地傳授給讀者,以便使求職 者對程序設計面試中的常見題型應付自如。通過對本書的學習,你會發(fā)現(xiàn)和完善有關試題的 最佳解 決方案,以應對不利局面的情況。本書簡介 本書是程序員面試寶典系列中的一部,也是上一本《程序員面試寶典》的姊妹叢書。本 書對程序設 計面試中 Java 常見的題型和常用解答技巧進行了介紹,它不僅能幫助求職者快 速復習有相關知識點,也對現(xiàn)代職業(yè)人如何有效求職、面試考官如何關注求職者動態(tài)等做了 詳細解說。本書通過詳解各大知名公司技術類(開發(fā)、測試、系統(tǒng)管理)面試中的常見 Java 試題,深入淺 出地對其解答思路進行了分析和指導。希望能把在技術面試中取得的寶 貴經(jīng)驗毫無保留地傳授給讀 者,以便使求職者對程序設計面試中的常見題型應付自如。通過 對本書的學習,你會發(fā)現(xiàn)和完善有 關試題的最佳解決方案,以應對不利局面。本書適 合(但不限于)將要找工作的程序和高校計算機類應曲畢業(yè)生,以及其他計算機愛好者。目錄第三篇:初級程序員考試復習資料(筆試)
第四篇:Java程序員面試寶典
第五篇:Java程序員面試寶典
第 1 部分 求職過程 第 1 章 應聘求職 第 2 章 簡歷書寫 第 3 章 3 種考試 第 4 章 職業(yè)生涯發(fā)展規(guī)劃 第 5 章 3 個求職技巧 第 2 部分 Java 程序設計 第 6 章 Java 程序設計基本概念 第 7 章 異常與反射 第 8 章 傳遞與引用 第 9 章 循環(huán)、條件、概率 第 10 章 Java 內存管理 第 11 章 面向對象 第 12 章 繼承與接口 第 13 章 JavaScript 第 14 章 Java 架構技術及相關中間件 第 3 部 分 數(shù)據(jù)結構和設計模式 第 15 章 字符串 第 16 章 設計模式 第 4 部分 UNIX、Oracle、網(wǎng)絡 第 17 章 操作系統(tǒng) 第 18 章 數(shù)據(jù)庫和 SQL 語言 第 19 章 計算機網(wǎng) 絡及分布式系統(tǒng) 第 6 部分 Java 開源 第 20 章 J2EE 技術 第 21 章 數(shù)據(jù)相關 第 22 章 Java 中的 Web 設計 第 23 章 Java 中的網(wǎng)頁設計 第 24 章 Struts 結構設計 第 25 章 Java 安全性 第 6 部分 綜合面試題 第 26 章 英語面試 第 27 章 電話面試 第 28 章 智力測試 附錄 A 簡歷模板 附錄 B 面試經(jīng)歷總結 下載后 點擊此處查看更多內容 1