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


選擇題

公共知識

【1】下列敘述中正確的是
〖A〗算法的時間復雜度與計算機的運行速度有關
〖B〗算法的時間復雜度與運行算法時特定的輸入有關
〖C〗算法的時間復雜度與算法程序中的語句條數成正比
〖D〗算法的時間復雜度與算法程序編制者的水平有關
為了能夠比較客觀地反映出一個算法的效率, 在度量一個算法的工作量時, 不僅應該與所使用的計算機、程序設計語言以及程序編制者無關, 而且還應該與算法實現過程中的許多細節無關。
為此, 可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量。
算法所執行的基本運算次數還與問題的規模有關; 對應一個固定的規模, 算法所執行的基本運算次數還可能與特定的輸入有關。
【2】帶鏈的棧與順序存儲的棧相比, 其優點是
〖A〗入棧與退棧操作方便
〖B〗可以省略棧底指針
〖C〗入棧操作時不會受棧存儲空間的限制而發生溢出
〖D〗所占存儲空間相同
帶鏈的棧就是用一個線性鏈表來表示的棧, 線性鏈表不受存儲空間大小的限制, 因此入棧操作時不會受棧存儲空間的限制而發生溢出(不需考慮棧滿的問題)。
【3】深度為5的完全二叉樹的結點數不可能是
〖A〗15
〖B〗16
〖C〗17
〖D〗18
設完全二叉樹的結點數為n, 根據深度為k的二叉樹至多有2 k - 1個結點, 再根據完全二叉樹的定義可知, 2 k - 1 - 1 < n≤2 k - 1。
本題中完全二叉樹的深度為5, 則2 5 - 1 - 1 < n≤2 5 - 1, 15 < n≤31。
因此, 結點數不能為15。
本題中完全二叉樹的深度為5, 則25 - 1 - 1> 因此, 結點數不能為15。
>
因此, 結點數不能為15。
>
本題中完全二叉樹的深度為5, 則25 - 1 - 1> 因此, 結點數不能為15。
>
因此, 結點數不能為15。
>

【4】線性表的長度為n。在最壞情況下, 比較次數為n - 1的算法是
〖A〗順序查找
〖B〗同時尋找最大項與最小項
〖C〗尋找最大項
〖D〗有序表的插入
順序查找要逐個查看所有元素, 會比較n次。
在最壞情況下, 尋找最大項無論如何需要查看表中的所有元素, n個元素比較次數為n - 1。
同時尋找最大項和最小項, 需要為判斷較大值和較小值分別進行比較, 會有更多的比較次數。
有序表的插入最壞情況下是插入到表中的最后一個元素的后面位置, 則會比較n次。
【5】下面屬於良好程序設計風格的是
〖A〗源程序文檔化
〖B〗程序效率第一
〖C〗隨意使用無條件轉移語句
〖D〗程序輸入輸出的隨意性
要形成良好的程序設計風格, 主要應注意和考慮:源程序文檔化; 數據說明的次序規范化, 說明語句中變量安排有序化, 使用注釋來說明復雜數據的結構; 程序編寫要做到清晰第一、效率第二, 先保證程序正確再要求提高速度, 避免不必要的轉移; 對所有的輸入數據都要進行檢驗, 確保輸入數據的合法性。
【6】下面屬於工具(支撐)軟件的是
〖A〗IOS系統
〖B〗數據庫管理系統
〖C〗財務管理系統
〖D〗Studio.NET
支撐軟件是介於系統軟件和應用軟件之間, 協助用戶開發的工具性軟件, 包括輔助和支持開發和維護應用軟件的工具軟件, 如需求分析軟件, 設計工具軟件, 編碼工具軟件, 測試工具軟件, 維護工具軟件等, 也包括輔助管理人員控制開發進程和項目管理的工具軟件, 如計划進度管理工具軟件, 過程控制工具軟件, 質量管理及配置管理工具軟件等。
IOS系統、數據庫管理系統屬於系統軟件, 財務管理系統屬於應用軟件, Studio.NET屬於支撐軟件。
【7】程序調試的任務是
〖A〗發現並改正程序中的錯誤
〖B〗診斷和改正程序中的錯誤
〖C〗發現程序中的錯誤
〖D〗設計和運行測試用例
程序調試的任務是診斷和改正程序中的錯誤; 而軟件測試是盡可能多的發現軟件中的錯誤。
軟件測試貫穿整個軟件生命周期, 程序調試主要在開發階段。
【8】在數據庫系統中, 數據模型包括概念模型、邏輯模型和
〖A〗物理模型
〖B〗空間模型
〖C〗時間模型
〖D〗謂詞模型
數據模型按照不同的應用層次分為3種類型:概念數據模型、邏輯數據模型、物理數據模型。

概念數據模型簡稱概念模型, 它是一種面向客觀世界、面向用戶的模型;
它與具體的數據庫管理系統無關, 與具體的計算機平台無關。

邏輯數據模型又稱邏輯模型, 它是一種面向數據庫系統的模型, 該模型着重於在數據庫系統一級的實現。

物理數據模型又稱物理模型, 它是一種面向計算機物理表示的模型, 此模型給出了數據模型在計算機上物理結構的表示。

【9】關系數據模型的三個組成部分中不包括
〖A〗關系的數據操縱
〖B〗關系的並發控制
〖C〗關系的數據結構
〖D〗關系的完整性約束
關系數據模型的三個組成部分:關系的數據結構(用二維表表示), 關系操縱(查詢、刪除、插入、修改), 關系的數據約束(實體完整性約束、參照完整性約束、用戶定義的完整性約束)。
【10】關系數據庫規范化的目的是為了解決關系數據庫中的
〖A〗數據操作復雜的問題
〖B〗查詢速度低的問題
〖C〗插入、刪除異常及數據冗余問題
〖D〗數據安全性和完整性保障的問題
關系模式進行規范化的目的是使關系結構更加合理, 消除存儲異常, 使數據冗余盡量小, 便於插入、刪除和更新等操作。

專業知識

【11】下列選項中, 不是由Java虛擬機完成的任務是
〖A〗加載Java代碼
〖B〗編譯Java代碼
〖C〗校驗Java代碼
〖D〗執行Java代碼
編譯java代碼是把java文件編譯為class文件, 由編譯器完成, jvm執行的是class文件, 執行需要加載, 校驗, 執行……選項B錯誤, 本題答案為B。
【12】下列選項中, 不是Java有效注釋的是
〖A〗//Using comments is a good habit.
〖B〗/Using comments is a good habit.
〖C〗/**Using comments is a good habit.*/
〖D〗/*Using comments is a good habit.*/
單行注釋:以" // "開頭后面接所要加的說明的內容

多行注釋:以"/"開頭, 以"/"結尾。

文檔注釋:以"/**"開頭, 以"*/"結尾。

沒有"/"的注釋, 選項B不是有效注釋, 本題答案為B。

【13】下列有關構造方法的描述中, 正確的是
〖A〗構造方法的名字可以隨意確定
〖B〗構造方法的返回類型是void
〖C〗構造方法可以重載
〖D〗構造方法是沒有參數的
構造器方法的名字是跟類名一致的, 選項A錯誤

構造器方法沒有返回值並且也不用void, 選項B錯誤

構造器分為無參構造器和有參構造器屬於方法的重載, 選項D錯誤, 選項C正確。
本題答案為C。

【14】下列變量定義中, 錯誤的是
〖A〗long k = 123L;
〖B〗float f = 3.14f;
〖C〗int i = "12";
〖D〗double d = 1.559;
在Java中整數默認類型為int類型, 浮點數默認為double類型, 用雙引號引起來的是String類型, 在整數后面加"L/l"是long類型, 小數后面加"F/f"即為float類型, 選項C錯誤, 本題答案為C。
【15】下列代碼段執行后, t的值為
int a = 2, b = 4, c = 6, t = 0;
t = a > b ? a : b > c ? b : c;
〖A〗0
〖B〗2
〖C〗4
〖D〗6
其考察三目運算 a > b ? a : b > c ? b : c; 是找出a, b, c三者最大值, 表達式a > b返回值為false, 結果為b, 表達式b > c返回值為false, 結果為c的值, 選項D正確, 本題答案為D。
【16】下列選項中, 不屬於邏輯運算符的是
〖A〗!=
〖B〗&
〖C〗||
〖D〗!
!是邏輯非, ||是邏輯或, &&是邏輯與 !=是關系運算符不等於

本題答案為A。

【17】break語句在循環中的作用是
〖A〗結束本次循環, 執行下一次
〖B〗跳出循環體, 結束循環
〖C〗終止程序運行
〖D〗執行完break后的一條語句就終止程序
break : (1).結束當前整個循環, 執行當前循環下邊的語句。
忽略循環體中任何其它語句和循環條件測試。
(2).只能跳出一層循環, 如果你的循環是嵌套循環, 那么你需要按照你嵌套的層次, 逐步使用break來跳出。
[逐層判斷, 逐步跳出](3).break在循環體內, 強行結束循環的執行, 也就是結束整個循環過程, 不在判斷執行循環的條件是否成立, 直接轉向循環語句下面的語句。
(4).當break出現在循環體中的switch語句體內時, 其作用只是跳出該switch語句體。
總的來說:就近原則, 結束當前的整個循環。
選項B正確, 本題答案為B。
【18】下列代碼段執行后, f的值為
int a = 2, b = 10, f;
f = a;
for (int i = 1; i < b; i++)
    f = f * a;
〖A〗2
〖B〗512
〖C〗20
〖D〗1024
循環體執行9次, 但是加上f初始值為2, 所以循環里面就是10個2相乘, 結果為1024, 選項D正確, 本題答案為D。
【19】下列代碼段執行后, x的值為
int x = 5;
do {
    x = x - 1;
} while (x-- > 0);
〖A〗0
〖B〗-1
〖C〗1
〖D〗4
考察了先"--" 與后"--"的區別 后"--"是先運算后自減一, 所以當x = 1時是符合循環的 但是符合之后還要自減一x值就為0了, 然后再循環一次, 即結果為-1, 選項B正確, 本題答案為B。
【20】下列代碼段執行后, n的值為
int n = 0;
int[] a = new int[5];
for (int i = 0; i < 5; i++)
    a[i] = 5 - i;
for (int i = 0; i < 5; i++)
    if (a[i] > i)
        n++;
〖A〗0
〖B〗2
〖C〗3
〖D〗4
第一個for循環是給數組賦值即a = { 5, 4, 3, 2, 1 } 第二個循環有a[0] > 0 n = 1, a[1] > 1 n = 2, a[2] > 2 n = 3, , a[3]不大於3, 循環結束 結果為3, 本題答案為C。
【21】若有語句Class c0 = Class.forName("java.util.Date "), 可得到類Date的修飾符的方法是
〖A〗c0.getModifiers()
〖B〗c0.getSuperclass()
〖C〗c0.getMethod()
〖D〗c0.getDeclaredMethods()
A)c0.getModifiers()//獲得屬性的修飾符, 例如public, static等

B)c0.getSuperclass()//獲取父類的Class對象

C)c0.getMethod()//獲取Class對象的方法:D)c0.getDeclaredMethods()//返回 Method 對象的一個數組, 這些對象反映此 Class 對象表示的類或接口聲明的所有方法, 包括公共、保護、默認(包)訪問和私有方法, 但不包括繼承的方法。
選項A正確, 本題答案為A。

【22】Java語言中擁有屬性和行為的實體是
〖A〗對象
〖B〗
〖C〗方法
〖D〗構造方法
Java 是一門面向對象語言, 對象擁有屬性和行為的實體, 實例化的類才有屬性和行為, 實例化的類也就是對象, 選項A正確, 本題答案為A。
【23】下列語句執行后, s的值為
String greeting = "Hello,everybody!";
String s = greeting.substring(0, 4);
〖A〗Hell
〖B〗ello
〖C〗Hello
〖D〗llo
public String substring(int beginIndex, int endIndex)返回一個新字符串, 它是此字符串的一個子字符串。
該子字符串從指定的 beginIndex 處開始, 直到索引 endIndex - 1 處的字符。
選項A正確, 本題答案為A。
【24】下列語句執行后, i的值為
String str = "rock\"n\"roll";
String str1 = "\"";
int i = str.indexOf(str1);
〖A〗5
〖B〗6
〖C〗7
〖D〗4
返回指定字符在此字符串中第一次出現處的索引。
選項D正確, 本題答案為D。
【25】下列程序段執行后的輸出結果是
int[][] b = { { 1, 2, 3 }, { 4, 5 }, { 6 } };
int sum = 0;
for (int i = 0; i < b.length; i++) {
    for (int j = 0; j < b[i].length; j++) {
        sum += b[i][j];
    }
}
System.out.println(sum);
〖A〗28
〖B〗6
〖C〗9
〖D〗21
b[0][0] + b[0][1] + b[0][2] + b[1][0] + b[1][1] + b[2][0] = 1 + 2 + 3 + 4 + 5 + 6 = 21, 選項D正確, 本題答案為D。
【26】自定義異常類的父類可以是
〖A〗Error
〖B〗Thread
〖C〗Exception
〖D〗VirtuaMachineError
所有異常的父類均可以為Exception, 選項C正確, 本題答案為C。
【27】下列語句執行時, 若文件"customer.dat"不存在, 則會產生的異常是
FileInputStream fis = new FileInputStream("customer.dat");
〖A〗FileNotFoundException
〖B〗EOFException
〖C〗NullPointerException
〖D〗ArithmeticException
A)FileNotFoundException 找不到文件異常

B)EOFException 文件結束異常

C)NullPointerException 空指針異常

D)ArithmeticException 算術異常

選項A正確, 本題答案為A。

【28】下列選項中, 實現了接口List的類是
〖A〗HashSet
〖B〗LinkedList
〖C〗TreeSet
〖D〗HashMap
A)HashSet 實現Set接口

B)LinkedList 實現List接口

C)TreeSet 實現Set接口

D)HashMap 實現Map接口

選項B正確, 本題答案為B。

【29】下列關於字符流的說法錯誤的是
〖A〗字符流是雙字節流
〖B〗字符流中的Unicode碼是使用一個字節表示的
〖C〗字符流又分為輸入和輸出兩部分
〖D〗字符流的抽象類為Reader和Writer
BMP 的字符是 Unicode 中最基礎和最常用的一部分, 以 UTF - 16 編碼時使用2字節, 以 UTF - 8 編碼時使用1至3字節。
超出 BMP 的字符以 UTF - 16 或 UTF - 8 編碼都需要4字節。
另外還有一個比較少用的編碼形式, UTF - 32, 它編碼任何 Unicode 字符都需要4個字節。
Unicode 的基礎是一個編號的字符集, 在字符集之上又規定了模塊化的編碼等等技術層次, 各種具體的編碼形式並不一致, Unicode 只有兩個字節這句話根本不成立。
選項B說法錯誤, 本題答案為B。
【30】下列選項中不屬於接口的是
〖A〗Serializable
〖B〗ObjectInput
〖C〗DataInputStream
〖D〗FilenameFilter
A)Serializable Serializable接口是啟用其序列化功能的接口。

B)ObjectInput ObjectInput 擴展 DataInput 接口以包含對象的讀操作。
DataInput 包括基本類型的輸入方法;
ObjectInput 擴展了 該接口, 以包含對象、數組和 String 的輸出方法。

C)DataInputStream 數據輸入流屬於Java類

D)FilenameFilter FilenameFilter是文件名過濾器, 用來過濾不符合規格的 文件名, 並返回合格的文件;
本題答案為C。

【31】下列選項中不屬於File類提供的操作是
〖A〗文件的建立
〖B〗文件的刪除
〖C〗文件的讀寫
〖D〗設置文件只讀屬性
File類是java.io包中的非流類, 它以系統無關的方式描述文件對象的屬性。
File類只操作文件在磁盤上的屬性, 而讀寫文件內容的功能則需要流類提供。
所以選項C說法錯誤。
本題答案為C。
【32】下列代碼實現了從一個文件中讀取字符並輸出的功能。下划線處應填入的代碼是
import java.io.*;
public class test {
    public static void main(String[] args) {
        String str = "";
        String r = "";
        try {
            BufferedReader br = new BufferedReader(new FileReader("d:\\test.txt"));
            while (___________________) {
                str += r;
            }
            System.out.println(str);
        } catch (IOException e) {
            System.out.println("文件讀取錯誤!");
        }
    }
}
〖A〗(r = br.readLine()) != null
〖B〗br.readLine() != null
〖C〗(r = readLine()) != null
〖D〗(r = br.readLine()) == null
BufferedReader類提供的readLine()讀取字符方法, 不為空才會一直讀取下去, 知道返回-1表示讀完。
選項A正確, 本題答案為A。
【33】Java中所有事件對象的基類是
〖A〗java.lang.Object
〖B〗java.util.EventObject
〖C〗java.util.Object
〖D〗java.lang.EventObject
Object在lang中, 選項C錯誤, EventObject在util包中, 選項D錯誤, 所有事件狀態對象都是從EventObject派生的根類。
選項B正確, 本題答案為B。
【34】Swing中用於顯示常用工具控件的容器是
〖A〗JToolBar
〖B〗JInternalFrame
〖C〗JTable
〖D〗JMenu
A)工具欄(JToolBar) B)JInternalFrame(窗口與面板)C)JTable(表格)D)JMenu(菜單和菜單項)本題答案為A。
【35】JOptionPane中參數messageType的含義是
〖A〗對話框中所顯示的描述信息
〖B〗定義message的樣式
〖C〗定義在對話框底部顯示的選項按鈕集合
〖D〗在對話框底部所顯示的選項按鈕集合的詳細描述
MessageType定義 message 的樣式。
外觀管理器布置的對話框可能因此值而異, 並且往往提供默認圖標。
選項B正確, 本題答案為B。
【36】下列說法中錯誤的是
〖A〗線程就是進程
〖B〗線程是一個程序的單個執行流
〖C〗多線程用於實現並發程序設計
〖D〗多線程是指一個程序的多個執行流
進程中可以包含多個線程, 選項A錯誤, 本題答案為A。
【37】閱讀下列程序:
public class ThreadTest {
    public static void main(String[] args) {
        Thread t = new Thread(new SayHello());
        t.start();
        new SayHello().run();
    }
}
class SayHello implements Runnable {
    int i = 0;
    public void run() {
        while (true) {
            System.out.println("  Hello " + i++);
            if (i == 2)
                break;
        }
    }
}
下列對程序編譯和運行結果描述的選項中, 正確的是
〖A〗程序不能通過編譯, 因為在main()方法中不能調用SayHello類的run()方法
〖B〗程序不能通過編譯, 因為在run()方法中不能調用Thread.currentThread()方法
〖C〗程序通過編譯, 運行時輸出 Hello 0 Hello 1
〖D〗程序通過編譯, 一次運行的輸出結果可以為:Hello 0 Hello 1 Hello 0 Hello 1
實現Runnable就可以不用.start()方法也可以執行線程, 把需要處理的代碼放到run()方法中, start()方法啟動線程將自動調用run()方法, 這個由java的內存機制規定的。
並且run()方法必需是public訪問權限, 返回值類型為void。
選項D正確, 本題答案為D。
【38】如果要讓線程進入睡眠狀態, 可以使用的方法是
〖A〗start()
〖B〗close()
〖C〗setDaemon()
〖D〗sleep()
A start()方法啟動線程

B 套接字的close()方法可以退出線程

C void setDaemon(boolean on)將該線程標記為守護線程或用戶線程。

D 使當前線程(即調用該方法的線程)暫停執行一段時間, 讓其他線程有機會繼續執行, 但它並不釋放對象鎖。

本題答案為D。

【39】在用戶的Applet中, 為了完成一些圖形化顯示, 一般需要重寫的方法是
〖A〗init()
〖B〗paint()
〖C〗start()
〖D〗draw()
paint()方法。
Applet的paint()方法具體執行Applet的繪制。
該方法的參數是一個Graphics類的對象, 該對象相當於Applet的畫筆, 通過它向Applet中顯示信息。
在調用paint()方法時, 由瀏覽器將該對象傳遞給paint()方法。
選項B正確, 本題答案為B。
【40】下列程序定義了一個Applet, 為了使程序運行時在瀏覽器中顯示字符串Good Morning !, 在下划線處應填入的是
import java.awt.*;
import javax.swing.*;
public class AppletTest extends ________ {
    JTextField f;
    public void ________() {
        Container contentPane = getContentPane();
        f = new JTextField();
        f.setText(" Good Morning!");
        contentPane.add(f);
    }
}
〖A〗JApplet, paint
〖B〗Applet, init
〖C〗JApplet, init
〖D〗Applet, paint
程序導入的是swing包, JApplet屬於swing包中的類, Applet屬於awt包中類, 選項B, D錯誤, 繼承JApplet類需重寫init初始化方法, 選項C正確, 本題答案為C。

編程題

【41】在考生文件夾中存有文件名為Java_1.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
程序的功能是計算一組學生成績的等級, 運行結果如圖所示。

1.int 2.i < scores.length 3.best < scores[i] 4.else if
考察了對數組的定義 循環結構和分支結構的知識點
填空1:考察了對數組的定義, 因為數組內容為整型所以要定義為int類型
填空2:獲取數組的長度用length屬性
填空3:是要選出最大值將其賦值給best 所以if判斷應該為其與數組中每個整數比較, 若小於則將數組值賦值給它既可
填空4:考察了分支結構基本語法填上else if既可
【42】在考生文件夾中存有文件名為Java_2.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。
存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
閱讀Java_2.java程序, 完成程序並運行, 所得結果為:
Hello World !
---------------------
Hello !
---------------------
HELLO WORLD !!
---------------------
Catch 3
Ending the print.
---------------------
1.greetings 2.catch 3.e 4.i++
考察了對數組的使用 異常的處理和循環結構的使用
填空1:考察了對數組的使用, 其想打印greetings數組內容所以寫greetings
填空2:是寫出了try 其對應catch 異常處理的一種方式
填空3:處理異常時用其引用去調用相關方法能獲取相關值
填空4 : while循環不能一直無限循環下去 加上朝着循環結束的趨勢條件i++既可
【43】在考生文件夾中存有文件名為Java_3.java的文件, 該程序是不完整的, 請
在注釋行"//**********Found**********"下一行語句的下划線地方填入
正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存
盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
程序運行后顯示如圖所示界面, 按"復制文件"按扭后, 將當前目錄下的a.txt
文件中的數據寫到另一個文件b.txt中。

1.JFrame 2.b 3.new FileInputStream 4.new FileOutputStream
考察了窗口和流的知識點
填空1:創建窗口, 需要new一個JFrame
填空2:將按鈕加入到f.getContentPane()
填空3:復制文件時讀取文件需用到FileInputStream流提供的read()讀取相關內容
填空4:復制文件時寫入文件需用到FileOutputStream流提供的write()寫入讀取到的相關內容


免責聲明!

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



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