選擇題
公共知識
【1】下列關於算法的描述中錯誤的是
算法設計不僅要考慮計算結果的正確性, 還要考慮算法的時間復雜度和空間復雜度。
【2】下列敘述中錯誤的是
雙向鏈表每個結點有兩個指針, 一個為左指針, 用於指向其前件結點; 一個為右指針, 用於指向其后件結點, 再加上頭指針, 具有兩個以上的指針, 但雙向鏈表屬於線性結構。
非空線性結構中第一個結點沒有前件, 最后一個結點無后件, 其余結點最多有一個前件, 也最多有一個后件。
向量也滿足這個條件, 屬於線性結構。
非空線性結構中第一個結點沒有前件, 最后一個結點無后件, 其余結點最多有一個前件, 也最多有一個后件。
向量也滿足這個條件, 屬於線性結構。
【3】下列敘述中正確的是
在棧中, 通常用指針top來指示棧頂的位置, 用指針bottom指向棧底。
棧頂指針top動態反應了棧中元素的變化情況。
在循環隊列中, 隊頭指針和隊尾指針的動態變化決定隊列的長度。
鏈式存儲結構中, 各數據結點的存儲序號是不連續的, 並且各結點在存儲空間中的位置關系與邏輯關系也不一致, 故頭指針和尾指針或棧頂指針無法決定鏈表長度。
棧頂指針top動態反應了棧中元素的變化情況。
在循環隊列中, 隊頭指針和隊尾指針的動態變化決定隊列的長度。
鏈式存儲結構中, 各數據結點的存儲序號是不連續的, 並且各結點在存儲空間中的位置關系與邏輯關系也不一致, 故頭指針和尾指針或棧頂指針無法決定鏈表長度。
【4】循環隊列的存儲空間為 Q(1 : 50), 初始狀態為 front = rear = 50。經過一系列正常的入隊與退隊操作后, front = rear = 25, 此后又插入一個元素, 則循環隊列中的元素個數為
循環隊列長度為50, 由初始狀態為front = rear = 50可知此時循環隊列為空。
入隊運算時, 首先隊尾指針rear進1(即rear + 1), 然后在隊尾指針rear指向的位置插入新元素。
當隊尾指針rear = 50 + 1時, 置rear = 1。
退隊運算時, 排頭指針front進1(即front + 1), 然后刪除front指針指向的位置上的元素, 當排頭指針front = 50 + 1時, 置front = 1。
當front = rear = 25時可知隊列空或者隊列滿, 此后又插入了一個元素, 如果之前隊列為空, 插入操作之后隊列里只有一個元素; 如果插入之前隊列已滿(50個元素), 執行插入則會產生溢出錯誤。
入隊運算時, 首先隊尾指針rear進1(即rear + 1), 然后在隊尾指針rear指向的位置插入新元素。
當隊尾指針rear = 50 + 1時, 置rear = 1。
退隊運算時, 排頭指針front進1(即front + 1), 然后刪除front指針指向的位置上的元素, 當排頭指針front = 50 + 1時, 置front = 1。
當front = rear = 25時可知隊列空或者隊列滿, 此后又插入了一個元素, 如果之前隊列為空, 插入操作之后隊列里只有一個元素; 如果插入之前隊列已滿(50個元素), 執行插入則會產生溢出錯誤。
【5】設一棵樹的度為3, 其中沒有度為2的結點, 且葉子結點數為5。該樹中度為3的結點數為
設樹的結點數為m, 度為3的結點數為n, 則度為1的結點數為m - n - 5, 根據樹中的結點數=樹中所有結點的度之和+1, 得3×n + 1×(m - n - 5) + 5×0 + 1 = m, 則n = 2。
【6】設二叉樹的前序序列與中序序列均為ABCDEFGH, 則該二叉樹的后序序列為
二叉樹的前序序列與中序序列均為ABCDEFGH, 可知二叉樹根結點為A, 且根結點A只有右子樹, 沒有左子樹。
同理, 可以推出結點B只有右子樹無左子樹。
依此類推, 該二叉樹除葉子結點外, 每個結點只有右子樹無左子樹。
因此該二叉樹的后序序列為HGFEDCBA。
同理, 可以推出結點B只有右子樹無左子樹。
依此類推, 該二叉樹除葉子結點外, 每個結點只有右子樹無左子樹。
因此該二叉樹的后序序列為HGFEDCBA。
【7】下列序列中不滿足堆條件的是
根據堆的定義, n個元素的序列(h1, h2, …hn), 當且僅當hi≤h2i且hi≤h2i + 1時為小頂堆, 當且僅當hi≥h2i且hi≥h2i + 1時為大頂堆。
D項中, h2 = 95, h4 = 96, h2 < h4, 但h5 = 89, h2 > h5, 不滿足小頂堆和大頂堆條件。
D項中, h2 = 95, h4 = 96, h2 < h4, 但h5 = 89, h2 > h5, 不滿足小頂堆和大頂堆條件。
【8】下面對"對象"概念描述正確的是
對象是由描述該對象屬性的數據以及可以對這些數據施加的所有操作封裝在一起構成的統一體。
對象可以做的操作表示它的動態行為, 通常也稱為方法或服務, 屬性即對象所包含的信息。
對象可以有繼承性, 但並不是任何對象都必須有繼承性。
對象可以做的操作表示它的動態行為, 通常也稱為方法或服務, 屬性即對象所包含的信息。
對象可以有繼承性, 但並不是任何對象都必須有繼承性。
【9】下面屬於軟件設計階段產生的文檔是
軟件設計階段產生的文檔有概要設計說明書、詳細設計說明書和測試計划初稿; 數據流程圖、數據字典和需求規格說明書是需求分析階段產生的; 軟件確認測試計划屬於軟件測試階段的文檔。
【10】在學校里, 教師可以講授不同的課程, 同一課程也可由不同教師講授, 則實體教師與實體課程間的聯系是
一個教師可以講授不同的課程, 同一課程也可由不同教師講授, 則實體教師與實體課程間的聯系是多對多。
專業知識
【11】Java中, 隱藏信息的基本機制是
封裝是把過程和數據包圍起來, 對數據的訪問只能通過已定義的接口。
面向對象計算始於這個基本概念, 即現實世界可以被描繪成一系列完全自治、封裝的對象, 這些對象通過一個受保護的接口訪問其他對象。
封裝是一種信息隱藏技術, 在java中通過關鍵字private, protected和public實現封裝。
什么是封裝?封裝把對象的所有組成部分組合在一起, 封裝定義程序如何引用對象的數據, 封裝實際上使用方法將類的數據隱藏起來, 控制用戶對類的修改和訪問數據的程度。
適當的封裝可以讓程式碼更容易理解和維護, 也加強了程式碼的安全性。
選項C正確, 本題答案為C。
面向對象計算始於這個基本概念, 即現實世界可以被描繪成一系列完全自治、封裝的對象, 這些對象通過一個受保護的接口訪問其他對象。
封裝是一種信息隱藏技術, 在java中通過關鍵字private, protected和public實現封裝。
什么是封裝?封裝把對象的所有組成部分組合在一起, 封裝定義程序如何引用對象的數據, 封裝實際上使用方法將類的數據隱藏起來, 控制用戶對類的修改和訪問數據的程度。
適當的封裝可以讓程式碼更容易理解和維護, 也加強了程式碼的安全性。
選項C正確, 本題答案為C。
【12】下列類定義中, 沒有語法錯誤並且符合Java命名約定的是
聲明類用關鍵字class。
Java類名通常以大寫字母開頭, 如果類名稱由多個單詞組成, 則每個單詞的首字母均應為大寫, 選項B正確, 本題答案為B。
Java類名通常以大寫字母開頭, 如果類名稱由多個單詞組成, 則每個單詞的首字母均應為大寫, 選項B正確, 本題答案為B。
【13】下列選項中, 不可以作為類中成員方法的修飾符的是
const是java中的預留關鍵字(java中預留關鍵字還有goto), 現在沒有作為關鍵字, 以后的版本中可能擴展用, 但現在常用於C, C++中。
C中的const類似於final。
選項A正確, 本題答案為A。
C中的const類似於final。
選項A正確, 本題答案為A。
【14】下列代碼段執行后, x, y的值分別為
int x = 2, y = 3;
boolean t = (x++ > 5) && (y++ > 1);
&&具有短路作用, 當第一個判斷條件結果為false就會終止判斷。
選項B正確, 本題答案為B。
選項B正確, 本題答案為B。
【15】下列選項中, 既不屬於賦值運算符又不屬於擴展賦值運算符的是
!=屬於比較運算符。
本題答案為D。
本題答案為D。
【16】下列變量定義中, 正確的是
boolean變量值只能為true或者false, char聲明值不可以為字符串類型。
選項D正確, 本題答案為D。
選項D正確, 本題答案為D。
【17】下列代碼段執行后, y的值為
int x = 3, y = 8, t = 5;
if (x > y)
t = x;
x = y;
y = t;
if判斷如果執行多條語句需要加 { }, 否則只執行緊接的一條語句。
選項B正確, 本題答案為B。
選項B正確, 本題答案為B。
【18】下列代碼段執行后, t的值為
int x = 8, y = 12, t;
t = x;
while (true) {
if (t % x == 0 && t % y == 0)
break;
t++;
}
t = 24時, 同時滿足條件, 退出循環。
本題答案為C。
本題答案為C。
【19】下列代碼段執行后, c的值為
int a = 0, b = 0, c = 0;
for (int i = 50; i < 100; i = i + 5)
switch (i / 10) {
case 9:
case 8:
a++;
break;
case 7:
case 6:
b++;
default:
c++;
}
case語句后面如果沒有break就會一直執行下去, 直到有break為止; 如果還沒有就會執行到default語句, 結束switch語句。
選項C正確, 本題答案為C。
選項C正確, 本題答案為C。
【20】下列代碼段執行后的結果是
int[] a = { 6, 8, 3, 1, 2 };
int j = 4;
for (int i = 0; i < 2; i++)
a[i] = a[j--];
for (int i = 0; i < 5; i++)
System.out.print(a[i] + " ");
i = 0, j = 4, a[0] = a[4], a = { 2, 8, 3, 1, 2 }; i = 1, j = 3, a[1] = a[3], a = { 2, 1, 3, 1, 2 }, 選項D正確, 本題答案為D。
【21】子類可以重新定義父類的方法, 這種現象稱為
子類對父類的方法進行重新定義, 叫做override(重寫或覆蓋)。
選項B正確。
本題答案為B。
選項B正確。
本題答案為B。
【22】若希望一個類不能有子類, 那么在定義這個類時使用關鍵字
final修飾的類不能被繼承。
選項D正確, 本題答案為D。
選項D正確, 本題答案為D。
【23】下列語句執行后, cust的值為
ArrayList arr = new ArrayList();
arr.add(new Customer("甲"));
arr.add(new Customer("乙"));
arr.add(new Customer("丙"));
arr.add(new Customer("丁"));
Customer cust = arr.get(1);
public E get(int index)返回此列表中指定位置上的元素, index從0開始。
選項B正確, 本題答案為B
選項B正確, 本題答案為B
【24】語句String[][] s = new String[][4]; 定義了
定義一個不規則二位數組的聲明方式是:String[][] s = new String[2][]; //聲明一個2行的String類型二維數組
s[0] = new String[3];
//聲明第一行有3列
s[1] = new String[5];
//聲明第二行有5列。
本題答案為D。
【25】下列程序段執行后的結果是
String s = new String("abcdefg");
for (int i = 0; i < s.length(); i += 2) {
System.out.print(s.charAt(i));
}
i = i + 2。
public char charAt(int index)返回指定索引處的 char 值。
索引范圍為從 0 到 length() - 1。
選項A正確, 本題答案為A。
public char charAt(int index)返回指定索引處的 char 值。
索引范圍為從 0 到 length() - 1。
選項A正確, 本題答案為A。
【26】try與catch的匹配是
catch到的異常是try中可能拋出的異常類或其子類的實例, 選項A正確, 本題答案為A。
【27】執行下列方法時的結果是
public void fun() {
try {
int[] a = { 1, 2, 3 };
System.out.print("Hello");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.print("ArrayIndexOutOfBoundsException");
} catch (Exception e) {
System.out.print("Exception");
} finally {
System.out.println("Finally");
}
}
finally的語句總會執行。
選項D正確, 本題答案為D。
選項D正確, 本題答案為D。
【28】Collection接口中, 判定集合中是否有元素的方法是
boolean contains(Object o)如果此 collection 包含指定的元素, 則返回 true。
boolean add(E e)確保此 collection 包含指定的元素(可選操作)。
如果此 collection 由於調用而發生更改, 則返回 true。
(如果此 collection 不允許有重復元素, 並且已經包含了指定的元素, 則返回 false。
)boolean isEmpty()如果此 collection 不包含元素, 則返回 true。
boolean remove(Object o)從此 collection 中移除指定元素的單個實例, 如果存在的話(可選操作)。
選項C正確, 本題答案為C。
【29】按照標准I / O模型, Java提供了三種標准流。下列選項中不屬於Java提供的標准流的是
System.out輸出流、System.in輸入流、System.err錯誤輸出流, 選項A說法錯誤, 本題答案為A。
【30】下列選項中屬於過濾字節輸出流的類是
java.io包中提供了FilterInputStream和FilterOutputStream過濾字節流類分別對其他輸入輸出流進行特殊的處理, 它們在讀/寫數據的同時還能夠對數據進行特殊的處理。
另外它們還提供了同步機制, 是的某一時刻之后一個線程可以訪問輸入/輸出流。
*FilterInputStream / FilterOutputStream都是抽象類。
*FilterInputStream有三個子類:BufferedInputStream、DataInputStream、PushbackInputStream * FilterOutputStream也有三個子類:BufferedOutputStream、DataOutoutStream、PrintStream
另外它們還提供了同步機制, 是的某一時刻之后一個線程可以訪問輸入/輸出流。
*FilterInputStream / FilterOutputStream都是抽象類。
*FilterInputStream有三個子類:BufferedInputStream、DataInputStream、PushbackInputStream * FilterOutputStream也有三個子類:BufferedOutputStream、DataOutoutStream、PrintStream
選項B正確, 本題答案為B。
【31】判斷一個文件是否存在時, 應使用的方法是
boolean isFile()測試此抽象路徑名表示的文件是否是一個標准文件。
boolean isAbsolute()測試此抽象路徑名是否為絕對路徑名。
boolean exists()測試此抽象路徑名表示的文件或目錄是否存在。
String[] list()返回一個字符串數組, 這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。
選項C正確, 本題答案為C。
boolean isAbsolute()測試此抽象路徑名是否為絕對路徑名。
boolean exists()測試此抽象路徑名表示的文件或目錄是否存在。
String[] list()返回一個字符串數組, 這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。
選項C正確, 本題答案為C。
【32】下列代碼實現了將一個文件的內容復制到另一個文件的功能。下划線處應填入的代碼是
import java.io.*;
public class test {
public static void main(String[] args) {
try {
FileInputStream is = new ______________("D:\\from.txt");
FileOutputStream ________ = new FileOutputStream("D:\\to.txt");
byte[] str = new byte[1024];
while (is.available() > 0) {
is.read(str, 0, 1024);
os.write(str);
}
is.close();
os.close();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
本題考查的是對象的聲明方式。
選項A正確, 本題答案為A。
選項A正確, 本題答案為A。
【33】當窗口被激活時, 調用的窗口事件的方法是
激活調用WindowActivated方法。
選項B正確, 本題答案為B。
選項B正確, 本題答案為B。
【34】下列關於Swing特性的說法中, 錯誤的是
Swing組件的外觀與具體平台無關, 選項C說法錯誤, 本題答案為C。
【35】下列代碼運行后得到的結果是
import javax.swing.*;
public class test {
public static void main(String[] args) {
JOptionPane.showConfirmDialog(null, "今天上課嗎", "請確認", JOptionPane.YES_NO_CANCEL_OPTION);
}
}
int javax.swing.JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType)throws HeadlessException 第一個參數是父類組件, 第二個參數是顯示消息, 第三個參數是會話框標題, 第四個參數是顯示的按鈕個數, 選項D正確, 本題答案為D。
【36】Java語言實現並發操作的機制是
多線程是Java語言實現並發操作的手段。
選項A正確, 本題答案為A。
選項A正確, 本題答案為A。
【37】為了使下列程序正常運行並且輸出"How are you", 在下划線處應填入的是
public class Test3 __________ {
public static void main(String[] args) {
Thread t = new _______();
t.start();
}
public void run() {
System.out.println("How are you");
}
}
本題考查的是線程的實現方法。
線程實現通常有兩種方法:一種是繼承Thread類, 另一種是實現Runnable接口。
選項A正確, 本題答案為A。
線程實現通常有兩種方法:一種是繼承Thread類, 另一種是實現Runnable接口。
選項A正確, 本題答案為A。
【38】在下列類中, 為了實現對類Workshop對象的並發控制, 在下划線處應填入的是
public class Workshop {
__________ int num = 0;
__________ void producer() {
num++;
}
int consumer() {
synchronized(this) {
num--;
return num;
}
}
}
對類進行並發控制, 需用私有屬性來進行定義變量, 用鎖將方法鎖起來, 這樣就不會出現並發出現異常情況, 選項B正確, 本題答案為B。
【39】下列關於Applet的敘述中, 正確的是
Applet可以顯示Swing組件, Applet的主類可以定義為Applet類或JApplet類的子類, Applet支持多線程。
選項D正確, 本題答案為D。
選項D正確, 本題答案為D。
【40】下列程序定義了一個Applet, 為了使程序運行時在瀏覽器中顯示字符串"An Applet test.", 在下划線處應填入的是
import java.awt.*;
import javax.swing.*;
public class AppletTest4 extends JApplet {
public void ________(Graphics g) {
_____.drawString("An Applet test.", 10, 10);
}
}
本題考查的是JApplet組件的使用。
繼承JApplet應該重寫paint方法。
選項B正確, 本題答案為B。
繼承JApplet應該重寫paint方法。
選項B正確, 本題答案為B。
編程題
【41】在考生文件夾中存有文件名為Java_1.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
程序的功能是:從鍵盤輸入5個整數, 計算並打印所輸入數中的偶數之和。
例如:輸入
1
2
3
4
5
則屏幕顯示:
偶數之和為6
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
程序的功能是:從鍵盤輸入5個整數, 計算並打印所輸入數中的偶數之和。
例如:輸入
1
2
3
4
5
則屏幕顯示:
偶數之和為6
1.io 2.sum = 0 3.i < 6 4.x % 2 == 0
本題考查的是對流的相關操作
填空1:根據程序中的輸入流可知應該需要導入io相關包
填空2:考查的是變量的知識, 局部變量需要在使用前賦初始值。
填空3:程序要求輸入5個整數, i從1開始, 要循環5次, i < 6
填空4:判斷所有的偶數和, 可以用取余的方式判斷
填空1:根據程序中的輸入流可知應該需要導入io相關包
填空2:考查的是變量的知識, 局部變量需要在使用前賦初始值。
填空3:程序要求輸入5個整數, i從1開始, 要循環5次, i < 6
填空4:判斷所有的偶數和, 可以用取余的方式判斷
【42】在考生文件夾中存有文件名為Java_2.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
運行程序后, 輸出結果為(0, 0)(2, 3)
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
運行程序后, 輸出結果為(0, 0)(2, 3)
1.Point[] 2.length 3.Point 4.y
本題考查數組的應用
填空1:數組類型的判斷, 后面是new Point[2], 可判斷數組類型
填空2 : java中判斷數組的長度是用length屬性
填空3:有參構造函數的定義
填空4:考察的是get / set方法的應用
填空1:數組類型的判斷, 后面是new Point[2], 可判斷數組類型
填空2 : java中判斷數組的長度是用length屬性
填空3:有參構造函數的定義
填空4:考察的是get / set方法的應用
【43】在考生文件夾中存有文件名為Java_3.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
程序運行后出現如圖所示界面, 點擊增大按鈕則左邊的數字增大, 點擊減小
按鈕則左邊的數字減小。
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
程序運行后出現如圖所示界面, 點擊增大按鈕則左邊的數字增大, 點擊減小
按鈕則左邊的數字減小。

1.add 2.true 3.BListener2 4.--
本題考查的是Java Swing 相關的知識
填空1:根據程序是將new Change()組件添加到當前容器, 添加到容器使用方法add()。
填空2:根據程序是將窗體設置為可見, 所以在方法中傳入參數true
填空3:是給b2添加事件監聽器, b2功能為減法操作對應監聽器是BListener2
填空4 : count在此應為自減操作
填空1:根據程序是將new Change()組件添加到當前容器, 添加到容器使用方法add()。
填空2:根據程序是將窗體設置為可見, 所以在方法中傳入參數true
填空3:是給b2添加事件監聽器, b2功能為減法操作對應監聽器是BListener2
填空4 : count在此應為自減操作