1. 程式人生 > 實用技巧 >Java模擬試題刷題日記,20201210

Java模擬試題刷題日記,20201210

Java刷題日記,20201210

雖然我什麼都不會,但這並不妨礙我在比賽中抱著大佬的大腿躺~

反思

昨天(1209),沒有更新刷題日記,主要原因是沒有進行刷題,更無從談起更新日記

  • 為什麼沒有刷題呢?
  • 是因為時間不夠。
  • 為什麼時間不夠呢?
  • 是因為昨天一天的滿課且全是考試,因此將時間重心放在了自己的專業課考試上,並沒有在意刷題日記的更新
  • 為什麼要考試呢?
  • 因為接近於學期末,需要有一次期末考試考核學習成果
    PS.這點無法改變,返回上一級繼續深問
  • 除了考試的時間,在那之外還有時間嗎?
  • 有的
  • 為什麼那一段時間沒有用來刷題並更新刷題日記?
  • 因為考試結束後做了一些瑣事,如吃飯,取快遞,喝奶茶等,因此遺忘掉了該事件,同時,用了一個較為整塊的時間進行了手機遊戲的遊玩,因此沒有了時間。
    問題結束
    並不是沒有時間,而是因為自己將用在了打手機遊戲上
    以上為 5WHY 法[1]
    求原因,以下為解決方案
    所以接下來需要做的是,在每天需要做完的事做完之前,不能夠遊玩遊戲。
    昨天(1209)的刷題日記將會在明天(1211)的時候補上,可能會與明天(1211)的不同步釋出,但一定會有釋出。

開篇語

因為試題量[2]過大,因此只記錄自己做錯的試題,所以會有一些試題量特別大,有一些試題量特別小,但每一道都儘量帶有解析。
在每一次的刷題日記的末尾,還會有一次今日的刷題總結,反饋一次今天的題目整體難度感知以及感覺自己對知識點的掌握程度。
在多天的刷題日記後,會有一天不做新題,回顧舊題,但每天都會有一次更新。
PS.但可能會有一天各種原因沒有做或者就是我偷懶了,會在第二天的刷題總結中進行反思。

題目

1.第一題

  • 點選視窗內的按鈕時,產生的事件是______。
    A、MouseEvent
    B、WindowEvent
    C、ActionEvent
    D、KeyEvent

  • MouseEvent:處理滑鼠拖動、移動、單擊、按下、釋放或者進入、退出元件的事件。
    WindowEvent:處理視窗啟用、失去活動視窗、最小化、開啟、關閉或者退出的事件。
    ActionEvent:處理按鈕、列表雙擊、單擊選單專案。
    KeyEvent:處理鍵盤的輸入。

2.第二題

  • Applet的預設佈局管理器是______。
    A、BorderLayout
    B、FlowLayout
    C、GridLayout
    D、PanelLayout

  • FlowLayout是Panel和Applet的預設佈局管理器。構件在容器中的放置規律是從上到下、從左到右進行放置,如果容器足夠寬,第一個構件先新增到容器中第一行的最左邊,後續的構件依次新增到上一個構件的右邊,如果當前行已放置不下該構件,則放置到下一行的最左邊。構件的大小不隨容器的大小改變而改變。

3.第三題

  • 閱讀下列程式碼片段
class InterestTest ______ ActionListener{
    ……
     public void actionPerformed(ActionEvent event){
        double interest = balance * rate/100;
        balance += interest;
        NumberFormat format =
                NumberFormat.getCurrencyInstance( );
        System.out.printlb("balance = "+
                formatter.format(balance));
    }
    private double rate;
}

在下劃線處,應填的正確選項是______。
A、Implementation
B、Inheritance
C、implements
D、extends

  • 每類事件都有對應的事件監聽器,監聽器是介面。在類中使用implements關鍵字實現介面。

4.第四題

  • 使新建立的執行緒參與執行排程的方法是______。
    A、run()
    B、start()
    C、init()
    D、resume()

  • 執行緒的生命週期主要分為如下幾個狀態:新建狀態、可執行狀態、執行狀態、阻塞狀態、終止狀態。
    用new關鍵字和thread類或其子類建立一個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態。

5.第五題

  • AWT中用來表示對話方塊的類是______。
    A、Font
    B、Color
    C、Panel
    D、Dialog

  • Font類提供的構造方法和方法可以對字型的大小、字型的樣式等進行設定。
    Color類用來設定顏色。
    Panel通常也稱為面板,是一種透明的容器,既沒有標題,也沒有邊框,它不能作為最外層的容器單獨存在,它首先必須作為一個構件放置到其他容器中,然後再把它當作容器,把其他構件放在它裡面。
    Dialog:對話方塊,對話方塊是Window類的子類。

6.第六題

  • 當Applet需要更新顯示內容時,應該呼叫的方法是______。
    A、paint()
    B、update()
    C、start()
    D、repaint()

  • repaint()方法主要用於Applet的重新顯示,它呼叫update()方法實現對Applet的更新。Applet程式可以在需要顯示更新時呼叫該方法,通知系統重新整理顯示。

7.第七題

  • 如果執行緒正處於執行狀態,則它可能到達的下一個狀態是______。
    A、只有終止狀態
    B、只有阻塞狀態和終止狀態
    C、可執行狀態,阻塞狀態,終止狀態
    D、其他所有狀態

  • 執行狀態是執行緒佔有CPU並實際執行的狀態,此時執行緒狀態的變遷有3種情況:終止狀態、可執行狀態、阻塞狀態。

8.第八題

  • 閱讀下列程式
public class Test implements Runnable{
  private int x=0;
  private int y=0;
  boolean flag=true;
  public static void main(String[] args){
     Test r=new Test();
     Thread t1=new Thread(r);
     Thread t2=new Thread(r);
     t1.start();
     t2.start();
  }
  public void run(){
     while(flag){
        x++;
        y++;
        System.out.println("("+x+","+y+")");
        if(x>=10)
          flag=false;
     }
  }
}

下列對程式執行結果描述的選項中,正確的是______。
A、每行的(x,y)中,可能有x≠y;每一對(x,y)值都出現兩次。
B、每行的(x,y)中,可能有x≠y;每一對(x,y)值僅出現一次。
C、每行的(x,y)中,x=y;每一對(x,y)值都出現兩次。
D、每行的(x,y)中,x=y;每一對(x,y)值僅出現一次。

  • 在本程式中,Test類實現了Runnable介面,在main()方法中,以Test類的兩個例項物件分別建立了t1、t2兩個執行緒,並呼叫執行緒的start()方法將執行緒啟動。在建立的執行緒中,Test類的run()方法就是執行緒體,當main()方法中的t1、t2啟動時,是從Test類物件的run()開始執行的。
    在Test類中首先用private定義了兩個int型別的私有成員變數x、y,併為其賦初值x=0,y=0,並定義了一個boolean型別的變數flag。在run()方法中,使用while迴圈來控制輸出,while迴圈的判斷條件就是布林型變數flag,當flag=true時,執行迴圈體,直到x>=10時,程式執行語句flag=false;退出整個迴圈,run()方法執行結束。
    變數XY是程式外部定義的,所以每一對(x,y)值僅出現一次。t1與t2兩個執行緒執行的先後順序不一定,所以可能有x≠y。

9.第九題

  • 閱讀下列程式碼
class Test implements Runnable{
    public int run(){
        int i = 0;
        while (true){
            i++;
            System.out.println("i="+i);
        }
    }
}

上述程式碼的編譯結果是______。
A、程式通過編譯並且run()方法可以正常輸出遞增的i值
B、程式通過編譯,呼叫run()方法將不顯示任何輸出
C、程式不能通過編譯,因為while的迴圈控制條件不能為"true"
D、程式不能通過編譯,因為run()方法的返回值型別不是void

  • run()方法必須是public訪問許可權,返回值型別為void。

10.第十題

  • 在關閉瀏覽器時呼叫,能夠徹底終止Applet並釋放該Applet所有資源的方法是______。
    A、stop()
    B、destroy()
    C、paint()
    D、start()

  • stop():當Applet被覆蓋時,可用該方法停止執行緒。
    destroy():關閉瀏覽器時呼叫,徹底終止Applet,從記憶體解除安裝並釋放該Applet的所有資源。
    paint():畫Applet介面的基本方法。
    start():在init()方法完成後,將呼叫start()方法,使Applet成為啟用狀態。

11.第十一題

  • 如果執行緒呼叫下列方法,不能保證使該執行緒停止執行的是______。
    A、sleep()
    B、stop()
    C、yield()
    D、wait()

  • sleep()方法的作用是讓當前執行緒處於休眠狀態,並持續一定的時間,該時間的長短由sleep()方法的引數決定。sleep()方法結束後,執行緒將進入可執行狀態。
    stop()方法的作用是當執行緒完成執行並結束後,將不再執行。
    yield()方法的作用是暫停當前執行緒的執行,從而允許與它具有相同優先順序的執行緒執行,如果不存在可執行且與它同優先順序的執行緒,則繼續執行當前執行緒。
    wait()方法的作用是,當某執行緒需要在synchronized塊中等待共享資料狀態改變時,呼叫wait()方法,這樣該執行緒等待並暫時釋放共享資料物件的鎖,其它執行緒可以獲得該物件的鎖,並進入synchronized塊對共享資料進行操作,而此執行緒則放入wait pool中,轉入阻塞狀態。

12.第十二題

  • 閱讀下列Java語句
ObjectOutputStream out =
        new ObjectOutputStream(new ______("employee.dat"));

在下劃線處,應填的正確選項是______。
A、File
B、FileWriter
C、FileOutputStream
D、OutputStream

  • ObjectOutputStream:既繼承了OutputStream抽象類,又實現了ObjectOutput介面,這是Java用介面技術代替雙重繼承例子,其構造方法引數是序列化了的物件。
    FileOutputStream:用於對磁碟檔案涉及的資料流進行輸出處理,即向一個檔案物件中寫入資料。

13.第十三題

  • 在下列程式的空白處,應填入的正確選項是______。
import java.io.*;
public class WriteInt{
   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.writeInt(myArray[i]);
        dos.______;
        System.out.println("Have written binary file ints.dat");
        }
     catch(IOException ioe)
   {  System.out.println ("IO Exception");
   }
  }
}

A、start()
B、close()
C、read()
D、write()

  • DataOutputStream是OutputStream的子類,DataOutputStream具備資料型別或格式轉換的功能,即向流中寫入資料時,可以實現對二進位制位元組資料的編碼功能。
    OutputStream的子類繼承以下方法:
    1、write()方法:向輸出流寫入資料的方法;
    2、flush()方法:強制清空緩衝區,並將緩衝區中的現有資料寫入外設;
    3、close()方法:當輸出流使用完畢後,可以呼叫close()方法將其關閉,斷開Java程式與外設資料來源的連線,釋放此連線所佔用的系統資源。
    程式使用語句"dos.writeInt(myArray[i]);"向流中寫入int型別的資料,完成資料寫入後,需要使用語句"dos.close();"來釋放此連線所佔用的系統資源。

14.第十四題

  • 為了將HelloApplet(主類名為HelloApplet.class)嵌入在greeting.html檔案中,應該在下列greeting.html檔案的橫線處填入的程式碼是______。
<HTML>
<HEAD>
<TITLE> Greetings </TITLE>
</HEAD>
<BODY>
<APPLET ______>
</APPLET>
</BODY>
</HTML>

A、HelloApplet.class
B、CODE="HelloApplet.class"
C、CODE="HelloApplet.class" WIDTH=150 HEIGHT=25
D、CODE="HelloApplet.class" VSPACE=10 HSPACE=10

  • 將小應用程式HelloApplet嵌入在greeting.html檔案中,必須使用特殊的HTML標記標記實現Applet或JApplet的嵌入執行。
    CODE=appletFile:這個屬性指定包含Applet或JApplet位元組碼的檔名。
    WIDTH=pixels HEIGHT=pixels:這兩個在標記中必須指定的屬性,定義了Applet顯示區以畫素為單位的高度和寬度。但由Applet執行過程中所產生的任何視窗或對話方塊不受此約束。

15.第十五題

  • Java類庫中,將資訊寫入記憶體的類是______。
    A、java.io.FileOutputStream
    B、java.io.ByteArrayOutputStream
    C、java.io.BufferedOutputStream
    D、java.io.DataOutputStream

  • FileOutputStream:用於對磁碟檔案涉及的資料流進行輸出處理,即向一個檔案物件中寫入資料。
    ByteArrayOutputStream:位元組陣列輸出流。這個類將一個位元組陣列作為輸出流,而任何記憶體塊都可以以位元組陣列的形式使用,故利用該類可以對記憶體進行寫入操作。
    BufferedOutputStream:緩衝區優化了位元組資料傳送。
    DataOutputStream:進行位元組輸出的基本資料型別判斷。

16.第十六題

  • 向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檔案中採用標記定義引數。

17.第十七題

  • Java中的執行緒模型由三部分組成,與執行緒模型組成無關的是______。

A、虛擬的CPU
B、程式程式碼
C、作業系統的核心狀態
D、資料

  • Java中的執行緒模型包含3部分:
    1、一個虛擬的CPU。
    2、該CPU執行的程式碼。
    3、程式碼所操作的資料。

題目總覽
總題目數量 錯誤數量 錯誤率
30 17 56.66%
錯題分析
錯誤題目涵蓋知識點 數量
圖形介面 7
IO 3
多執行緒 6
其他 1

今日小結/刷題總結

圖形介面直接7連,多執行緒緊跟其後,拿下6連,隨後IO流有些許不足,僅拿下三連
正如前幾天一直說的那樣,因為不會的題目沒有大量刷到,所以錯誤數量仍然是比較好看的資料
今天就出現問題了,有一些題純粹就是對這個知識點根本不瞭解因此完全不可能會
所以說,還是前幾天一直說的那樣,要看,要看,要看。


  1. 求解問題的方法--主要為通過多次追問探尋底層真實原因。如例子中發現了根本原因不在於時間不足而在於將時間用來了打手機遊戲。 ↩︎

  2. 試題量--主要為Java語言特點和實現機制 ↩︎