【計算機二級Java語言】卷001


選擇題

公共知識

【1】程序流程圖中帶有箭頭的線段表示的是()。
〖A〗圖元關系
〖B〗數據流
〖C〗控制流
〖D〗調用關系
在數據流圖中, 用標有名字的箭頭表示數據流。
在程序流程圖中, 用標有名字的箭頭表示控制流。
所以選擇C。
【2】結構化程序設計的基本原則不包括()。
〖A〗多態性
〖B〗自頂向下
〖C〗模塊化
〖D〗逐步求精
結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句, 所以選擇A。
【3】軟件設計中模塊划分應遵循的准則是()。
〖A〗低內聚低耦合
〖B〗高內聚低耦合
〖C〗低內聚高耦合
〖D〗高內聚高耦合
軟件設計中模塊划分應遵循的准則是高內聚低偶合、模塊大小規模適當、模塊的依賴關系適當等。
模塊的划分應遵循一定的要求, 以保證模塊划分合理, 並進一步保證以此為依據開發出的軟件系統可靠性強, 易於理解和維護。
模塊之間的耦合應盡可能的低, 模塊的內聚度應盡可能的高。
【4】在軟件開發中, 需求分析階段產生的主要文檔是()。
〖A〗可行性分析報告
〖B〗軟件需求規格說明書
〖C〗概要設計說明書
〖D〗集成測試計划
A錯誤, 可行性分析階段產生可行性分析報告。
C錯誤, 概要設計說明書是總體設計階段產生的文檔。
D錯誤, 集成測試計划是在概要設計階段編寫的文檔。
B正確, 需求規格說明書是后續工作如設計、編碼等需要的重要參考文檔。
【5】算法的有窮性是指()。
〖A〗算法程序的運行時間是有限的
〖B〗算法程序所處理的數據量是有限的
〖C〗算法程序的長度是有限的
〖D〗算法只能被有限的用戶使用
算法原則上能夠精確地運行, 而且人們用筆和紙做有限次運算后即可完成。
有窮性是指算法程序的運行時間是有限的。
【6】對長度為n的線性表排序, 在最壞情況下, 比較次數不是n(n - 1) / 2的排序方法是()。
〖A〗快速排序
〖B〗冒泡排序
〖C〗直接插入排序
〖D〗堆排序
除了堆排序算法的比較次數是 , 其他的都是n(n - 1) / 2。
【7】下列關於棧的敘述正確的是()。
〖A〗棧按"先進先出"組織數據
〖B〗棧按"先進后出"組織數據
〖C〗只能在棧底插入數據
〖D〗不能刪除數據
棧是按"先進后出"的原則組織數據的, 數據的插入和刪除都在棧頂進行操作。
【8】在數據庫設計中, 將E - R圖轉換成關系數據模型的過程屬於()。
〖A〗需求分析階段
〖B〗概念設計階段
〖C〗邏輯設計階段
〖D〗物理設計階段
E - R圖轉換成關系模型數據則是把圖形分析出來的聯系反映到數據庫中, 即設計出表, 所以屬於邏輯設計階段。
【9】有三個關系R、S和T如下:

由關系R和S通過運算得到關系T, 則所使用的運算為()。
〖A〗
〖B〗自然連接
〖C〗笛卡爾積
〖D〗
自然連接是一種特殊的等值連接, 它要求兩個關系中進行比較的分量必須是相同的屬性組, 並且在結果中把重復的屬性列去掉, 所以B錯誤。
笛卡爾積是用R集合中元素為第一元素, S集合中元素為第二元素構成的有序對, 所以C錯誤。
根據關系T可以很明顯的看出是從關系R與關系S中取得相同的關系組, 所以取得是交運算, 選擇D。
【10】設有表示學生選課的三張表, 學生S(學號, 姓名, 性別, 年齡, 身份證號), 課程C(課號, 課名), 選課SC(學號, 課號, 成績), 則表SC的關鍵字(鍵或碼)為()。
〖A〗課號, 成績
〖B〗學號, 成績
〖C〗學號, 課號
〖D〗學號, 姓名, 成績
學號是學生表S的主鍵, 課號是課程表C的主鍵, 所以選課表SC的關鍵字就應該是與前兩個表能夠直接聯系且能唯一定義的學號和課號, 所以選擇C。

專業知識

【11】下列標識符命名原則中, 正確的是()。
〖A〗類名的首字母小寫
〖B〗變量和方法名的首字母大寫
〖C〗常量名大寫
〖D〗接口名的首字母小寫
java語言標識符命名規則為:類名和接口名每個單詞首字母大寫, 選項A、D錯誤; 變量和方法名遵循第一個單詞首字母小寫, 后面每個單詞首字母大寫。
選項B錯誤; 常量名所有字母全部大寫, 選項C正確; 本題答案為C選項。
【12】Java程序獨立於平台。下列關於字節碼與各個操作系統及硬件之間關系的描述中, 正確的是()。
〖A〗結合
〖B〗分開
〖C〗聯系
〖D〗融合
JAVA之所以能夠獨立於平台做到"一次編譯,到處運行", 主要得益於java虛擬機機制, 只有字節碼與各個操作系統和硬件分開才能做到獨立於平台。
選項A、C、D錯誤; 選項B正確; 本題答案為B選項。
【13】下列關於boolean類型的敘述中, 正確的是()。
〖A〗可以將boolean類型的數值轉換為int類型的數值
〖B〗可以將boolean類型的數值轉換為字符串
〖C〗可以將boolean類型的數值轉換為char類型的數值
〖D〗不能將boolean類型的數值轉換為其他基本數據類型
在java中, boolean類型的值只有true和false, 無法與其他基本數據類型或引用數據類型之間進行相互轉換, 選項A、B、C錯誤; 選項D正確; 本題答案為D選項。
【14】下列程序的運行結果是()
public class Test {
    public static void main(String[] args) {
        System.out.println(3 > 2 ? 4 : 5);
    }
}
〖A〗2
〖B〗3
〖C〗4
〖D〗5
本題考查條件運算符的應用。
條件運算符的語法為:布爾表達式?值1:值2; 當布爾表達式的值為true時, 條件表達式的值為值1的值; 當布爾表達式的值為false時, 條件表達式的值為值2的值。
題目中布爾表達式"3>2"的返回值為true, 則條件表達式的值為4。
選項A、B、D錯誤, 選項C正確; 本題答案為C選項。
【15】下列不屬於表達式語句的是()。
〖A〗++i;
〖B〗j--;
〖C〗b#a;
〖D〗b *= a;
表達式是有運算符和運算對象構成的, "#"不是java中運算符。
故本題答案是C選項。
【16】下列程序的運行結果是()
public class Test {
    public static void main(String[] args) {
        int x = 3, y = 4, z = 5;
        String s = "xyz";
        System.out.println(s + x + y + z);
    }
}
〖A〗xyz12
〖B〗xyz345
〖C〗xyzxyz
〖D〗s12
本題考查"+"號在字符串中的應用, "+"在java中除了做加法操作之外, 還有一個非常重要的作用就是字符串的拼接操作。
當"+"兩邊為基本數據類型時做加法操作, 任意一邊為字符串類型時做拼接操作, 做拼接操作時數據類型自動轉為字符串類型。
題目中變量s為字符串類型, 變量x, y, z為整數類型, 所以表達式"s+x+y+z"等於"xyz345"。
故本題答案為B選項。
【17】下列程序的運行結果是()
public class Test {
    public static void main(String[] args) {
        char k = 'a', p = 'f';
        int data = p - k;
        System.out.println(data);
    }
}
〖A〗5
〖B〗0
〖C〗a
〖D〗f
本題考查數據類型之間的轉換。
char類型的數據, 每個字符都有一個十進制的ASCII碼值與之對應, 字符'a'對應的十進制數是97, 字符'f'對應的十進制數是102; 字符類型數據在做算術運算時會將自動轉為相應的數據。
所以data = p - k = 102 - 97 = 5; 故本題答案為A選項。
【18】若希望下列代碼段打印出"季軍", 則變量x的取值范圍是()
if (x == 0)
    System.out.println("冠軍");
else if (x > -3)
    System.out.println("亞軍");
else
    System.out.println("季軍");
〖A〗x = 0
〖B〗x > 0
〖C〗x > -3
〖D〗x <= -3
本題考查的是分支結構if elseif else 。
布爾表達式滿足哪個分支中條件, 就執行哪個分支中的程序。
題目要求輸出"季軍", 當if和else if中的條件不滿足時, 執行else中的程序。
A選項滿足了if條件, 故不正確; 選項B、C滿足else if中的條件, 故不正確; 選項D滿足else中的條件, 選項D正確; 故本題答案為D選項。
【19】下列程序的運行結果是()
public class Test {
    public static void main(String[] args) {
        int s = 0;
        for (int i = 1; i < 5; i++)
            for (int j = 1; j <= i; j++)
                s = s + j;
        System.out.println(s);
    }
}
〖A〗4
〖B〗6
〖C〗10
〖D〗20
本題考查for循環的嵌套。
本題總, 外層循環總共循環4次, 內循環累加j的值。
第一次循環時, i = 1, j = 1, 內循環執行1次, s = 1; 第二次循環時, i = 2, 內循環j從1循環至2, 循環2次, s = 1 + 1 + 2 = 4; 第三次循環時, i = 3, j從1循環至3, 循環3次, s = 4 + 1 + 2 + 3 = 10; 第四次循環時, i = 4, j從1循環至4, 循環4次, s = 10 + 1 + 2 + 3 + 4 = 20; 本題答案為D選項。
【20】下列Java語句中屬於跳轉語句的是()
〖A〗break
〖B〗try
〖C〗catch
〖D〗finally
break在java中作用為跳出循環, 選項A正確, 關鍵字try、catch、finally用來處理程序的異常, 選項B、C、D錯誤。
本題答案為A選項。
【21】下列關於構造方法的敘述中, 錯誤的是()。
〖A〗Java語言規定構造方法名與類名必須相同
〖B〗Java語言規定構造方法沒有返回值, 且不用void聲明
〖C〗Java語言規定構造方法不可以重載
〖D〗Java語言規定構造方法可以通過new自動調用
java中構造方法的定義要求為:方法名必須與類名一致, 沒有返回值, 也不能用void修飾, 構造方法分為有參構造方法和無參構造方法。
有參和無參的構造方法屬於方法的重載。
構造方法在創建對象的時候自動調用有參構造方法或者無參構造方法。
故本題答案為C選項。
【22】下列程序的運行結果是()
class Animal {
    public Animal() {
        System.out.print(" animal ");
    }
    public Animal(int n) {
        this();
        System.out.print(" " + n);
    }
}
class Dog extends Animal {
    public Dog() {
        super(12);
        System.out.println(" dog ");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal animal = new Dog();
    }
}
〖A〗animal 12 dog
〖B〗animal dog
〖C〗dog animal 12
〖D〗dog animal
本題考查面向對象中繼承, 多態, this, super關鍵字等。
Test類中, Animal animal = new Dog(); 父類的引用指向了子類的對象。
newDog(); 創建了子類對象, 調用Dog類的無參構造方法, 在類Dog的無參構造方法中, 執行了super(12); 此時調用了父類Animal的有參構造方法, 而父類Animal的有參構造方法中, 執行this(); 語句, 又調用本類的無參構造方法。
所以執行結果先輸出animal, 再輸出 12, 最后輸出dog。
故本題答案為A選項。
【23】子類繼承了父類的方法和狀態, 在子類中可以進行的操作是()
〖A〗更換父類方法
〖B〗減少父類方法
〖C〗減少父類變量
〖D〗增添方法
在java中, 子類繼承父類時, 可以在父類的基礎上增加自己的屬性和方法, 也可以重寫父類中的方法, 但無法更換和減少父類的方法和屬性, 本題答案為D選項。
【24】下列代碼段中, 能通過編譯的是()
〖A〗public class Animal { public void speak(); }
〖B〗public abstract class Animal { public void speak() { } }
〖C〗public class Animal { public abstract void speak(); }
〖D〗public abstract class Animal { public abstract void speak() { } }
抽象方法的定義需要加"abstract"關鍵字, 選項A錯誤; 抽象方法不能有方法體, 選項D錯誤; 含有抽象方法的類一定要是抽象類, 選項C錯誤; 抽象類中可以不包含抽象方法, 選項B正確。
本題答案為B
【25】有如下程序
public class Test {
    public static void main(String[] args) {
        int[] x = { 0, 1, 2, 3 };
        for (int i = 0; i < 3; i += 2) {
            try {
                System.out.println(x[i + 2] / x[i] + x[i + 1]);
            } catch (ArithmeticException e) {
                System.out.println("error1");
            } catch (Exception e) {
                System.out.println("error2");
            }
        }
    }
}
〖A〗error1
〖B〗error2
〖C〗error1 error2
〖D〗2 error2
第1次循環時, i = 0, 執行x[2] / x[0] + x[1]時, 因為x[0] = 0, 程序報"ArithmeticException"除數不能為0的異常, catch對其處理, 輸出"error1"。
第2次循環時, i = 2, 執行x[4] / x[2] + x[3], 數組x的下標最大值為3, 則程序會報異常:"ArraysIndexOutOfBoundsException"下標越界的異常, 程序中沒有捕獲此異常, 但存在異常的父類"Exception", 則執行父類異常中對異常的處理, 輸出error2。
本題答案為C選項。
【26】自定義異常類的父類可以是()。
〖A〗Error
〖B〗VirtualMachineError
〖C〗Exception
〖D〗Thread
在java中, 所有異常的父類為Exception類, 自定義異常繼承Exception類。
故本題答案為C選項。
【27】下列方法中, 不屬於類String的方法是()
〖A〗toLowerCase()
〖B〗valueOf()
〖C〗charAt()
〖D〗append()
選項A、B、C都屬於String類中的方法。
String類沒有append()方法。
故本題答案為D選項。
【28】為使下列代碼正常運行, 應該在下划線處填入的選項是
public class Test {
    public static void main(String[] args) {
        int[] numbers = new int[100];
        for (int i = 0; i < numbers.______________; i++)
            numbers[i] = i + 1;
    }
}
〖A〗size
〖B〗length
〖C〗dimension
〖D〗measurement
在java中, 獲取數組長度的屬性為length, 本題答案為B選項。
【29】下列程序的功能是將一個整數數組寫入二進制文件。在程序的下划線處應填入的選項是()
import java.io.*;
public class XieShuzu {
    public static void main(String[] a) {
        int[] myArray = { 10, 20, 30, 40 };
        try {
            DataOutputStream dos = new DataOutputStream(new FileOutputStream("ints.dat"));
            for (int i = 0; i < myArray.length; i++)
                dos._________(myArray[i]);
            dos.close();
            System.out.println("已經將整數數組寫入二進制文件:ints.dat");
        } catch (IOException ioe) {
            System.out.println("IO Exception");
        }
    }
}
〖A〗writeArray
〖B〗writeByte
〖C〗writeInt
〖D〗writeDouble
在java中, 整數類型默認以int類型為基本類型, 本題要求將整數類型數組myArray寫入二進制文件, 將數組中的每個int類型數據寫入文件。
DataOutputStream類提供writeInt()方法, 將一個int值寫入基礎輸出流中。
本題答案為C選項。
【30】所有字節輸入輸出流類都繼承自()。
〖A〗InputStream類和OutputStream類
〖B〗Reader類和Writer類
〖C〗object類
〖D〗Serializable接口
在java中, 所有字節輸入輸出流都繼承自InputStream類和OutputStream類。
故本題答案為A選項。
【31】要得到某目錄下的所有文件名, 在下列代碼的下划線處應填入的內容是(兩個下划線的填寫內容相同)()
__________ pathName = new _____________(args[0]);
String[] fileNames = pathName.list();
〖A〗FileInputStream
〖B〗FileOutputStream
〖C〗File
〖D〗RandomAccessFile
Java文件類以抽象的方式代表文件名和目錄路徑名。
該類主要用於文件和目錄的創建、文件的查找和文件的刪除等。
FileInputStream類、FileOutputStream類、RandomAccessFile類是對其內容進行讀寫, 選項A、B、D錯誤。
本題答案為C選項。
【32】RandomAccessFile是java.io包中的一個兼有輸入輸出功能的類。由於它是隨機訪問, 所以文件讀寫一個記錄的位置是()
〖A〗固定
〖B〗任意
〖C〗終止
〖D〗起始
RandomAccessFile(隨機訪問文件)類, RandomAccessFile對象類有個位置指示器, 指向當前讀寫處的位置, 當前讀寫n個字節后, 文件指示器將指向這n個字節后面的下一個字節處。
剛打開文件時, 文件指示器指向文件的開頭處, 可以移動文件指示器到新的位置, 隨后的讀寫操作將從新的位置開始。
本題答案為B選項。
【33】下列代碼中WindowAdapter處理的事件類是()
public class MyWindow extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
    }
    public void windowClosed(WindowEvent e) {
    }
    public void windowOpened(WindowEvent e) {
    }
}
〖A〗WindowEvent
〖B〗windowOpened
〖C〗windowClosing
〖D〗windowClosed
MyWindow類繼承了WindowAdapter類, 在重寫方法中傳入的參數為WindowEvent類, 則處理的事件為WindowEvent類。
本題答案為A選項。
【34】下列可以獲得構件前景色的方法是()。
〖A〗getSize()
〖B〗getForeground()
〖C〗getBackground()
〖D〗paint()
getSize()方法是獲取窗口的大小, 選項A錯誤; getForeground()獲取構件前景色, 選項B正確; getBackground()獲取構件后景色, 選項C錯誤; paint()繪畫, 選項D錯誤。
本題答案為B選項。
【35】下列不屬於Swing構件的是()
〖A〗JMenu
〖B〗JApplet
〖C〗JOptionPane
〖D〗Panel
Swing構件是AWT的擴展, 它提供了許多新的圖形界面構件。
Swing構件以"J"開頭。
本題答案為D選項。
【36】下列關於Java語言線程的敘述中, 正確的是()
〖A〗線程是由代碼、數據、內核狀態和一組寄存器組成
〖B〗線程間的數據是不共享的
〖C〗因多線程並發執行而引起的執行順序的不確定性可能造成執行結果的不確定
〖D〗用戶只能通過創建Thread類的實例或定義、創建Thread子類的實例建立和控制自己的線程
一個標准的線程由線程ID, 當前指令指針(PC), 寄存器集合和堆棧組成, 選項A錯誤; 線程間的數據可以共享, 選項B錯誤; 多線程具有並發性, 多線程同時運行, 結果可能會出現紊亂, 選項C正確; 線程創建除了繼承Thread類之外還可以實現Runnable接口, 選項D錯誤。
本題答案為C選項。
【37】閱讀下列代碼
public class Test implements Runnable {
    public void run(Thread t) {
        System.out.println("Running.");
    }
    public static void main(String[] args) {
        Thread tt = new Thread(new Test());
        tt.start();
    }
}
編譯運行代碼的結果是()
〖A〗拋出一個異常
〖B〗沒有輸出並正常結束
〖C〗輸出"Running"並正常結束
〖D〗出現一個編譯錯誤
Runnable接口中的run()方法沒有參數列表, 重寫時不能添加參數列表, 編譯出錯。
選項D正確, 本題答案為D選項。
【38】下列方法被調用后, 一定使調用線程改變當前狀態的是()。
〖A〗notify()
〖B〗sleep()
〖C〗yield()
〖D〗isAlive()
調用某個對象的notify()方法能夠喚醒一個正在等待這個對象的對象鎖的線程, 如果有多個線程都在等待這個對象的對象鎖, 則只能喚醒其中一個線程, 選項A錯誤。
sleep()使當前線程進入停滯狀態, 所以執行sleep()的線程在指定的時間內肯定不會執行; yield()應該做的是讓當前運行線程回到可運行狀態, 以允許具有相同優先級的其他線程獲得運行機會, 但有可能沒有效果。
選項B正確, 選項C錯誤。
isAlive()功能是判斷當前線程是否處於活動狀態, 選項D錯誤。
本題答案為B選項。
【39】下列是一個支持多線程並發操作的堆棧類代碼段, 在下划線處應填入的是()。
public class MyStack {
    private int idx = 0;
    private int[] data = new int[8];
    public _______ void push(int i) {
        data[idx] = i;
        idx++;
    }
    … …
}
〖A〗synchronized
〖B〗wait
〖C〗blocked
〖D〗interrupt
本題考查的是同步鎖的知識點。
多個線程調用一個對象的多個方法, 這些方法都被synchronized修飾, 那么這些線程共同競爭一把鎖, 最后表現的就是同步順序執行各個被synchronized修飾的方法。
本題答案為A選項。
【40】向Applet傳遞參數的正確描述是()
〖A〗<param name=age, value=20>
〖B〗<applet code=Try.class width=100, height=100, age=33>
〖C〗<name=age, value=20>
〖D〗<applet code=Try.class name=age,value=20>
Applet獲取參數是通過HTML文件中采用<PARAM>標記定義參數。
Java中還定義了相應的方法, 用來從HTML中獲取參數。
格式為:< param name = appletParameter1 value = value>。
本題答案為A選項。

編程題

【41】在考生文件夾中存有文件名為Java_1.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
程序的功能是打印一個序列的前10項, 該序列的第1項和第2項都是1, 以后的每一項都是前面兩項之和。
完成程序, 使程序輸出結果如下:
1 1 2 3 5 8 13 21 34 55
(1) new int
(2) int i = 2
(3) length
(4) f[i]
本題考查:數組的定義、賦值和遍歷。
(1) 數組的定義方式為:數據類型[]數組名=new 數據類型[數組長度];
(2) 定義變量i並初始化, 因為數組的下標從0開始, f[i - 2]表示第一個數, 所以變量i的初始值2。
(3) 數組中獲取數組的長度用length屬性。
(4) 遍歷數組元素。
【42】在考生文件夾中存有文件名為Java_2.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
創建一個二維整型數組, 並將其以4行4列左對齊的格式輸出, 程序輸出結果如下:
1 1 1 1
2 2 2
3 3
4
(1) [][]
(2) k - i
(3) aMatrix[i]
(4) println()
本題考查:二維數組的定義, 以及二維數組的元素賦值。
(1) 二維數組定義方式為:數據類型[][]數組名=new 數據類型[行數][];
(2) 給每一行的數組分配空間, 根據打印輸出的結果可知, 每一行的元素遞減。
(3) 內循環是對二維數組每一行的數據進行操作。
(4) 每一行輸出以后, 通過println()輸出換行符。
【43】在考生文件夾中存有文件名為Java_3.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
程序的功能是:輸入一個十進制整數, 將其二進制形式顯示出來。程序運行后, 輸入如下整數:

再按回車鍵后所得結果為:

(1)actionPerformed(2)output(3)output(4)WindowEvent
本題考查:swing窗口和監聽器的使用。
(1) 創建ActionListener對象必須重寫其中的actionPerformed(ActionEvent e)抽象方法
(2) 程序要求把輸入的數用二進制文本輸出。
JTextField類提供的setText()方法設置文本域中的文本值, 通過JTextField類output調用該方法。
(3) 通過Container類中add()方法將組件對象"output"添加到容器中去。
(4) WindowEvent處理此窗口上發生的窗口焦點事件, 點擊窗口會觸發該事件。
System.exit(0)方法為退出系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM