1. 程式人生 > 實用技巧 >Java刷題日記,20201208

Java刷題日記,20201208

Java刷題日記,20201208

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

開篇語

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

題目

1.第一題

  • 閱讀下列利用遞迴來求n!的程式
    class FactorialTest{
        static long Factorial(int n){//定義Factorial( )方法
            if (n==1)
                return 1;
            else
                return n* Factorial(______);
        }
        public static void main(String a[]){//main( )方法
            int n=8;
            System.out.println(n+ "!="+Factorial(n));
        }
    }
    
    為保證程式正確執行,在下劃線處應該填入的引數是______。
    A、n-1
    B、n-2
    C、n
    D、n+1
  • 所謂遞迴就是用自身的結構來描述自身。一個使用遞迴技術的方法將直接或間接地呼叫自身的方法。
    根據階乘的概念,可以寫出其遞迴定義:
    Factorial(n=1) n=1
    n*Factorial(n-1) n>1
    遞迴結構主要包括兩部分:定義遞迴頭和定義當前問題的同一性質的簡化。例如n!這個問題被劃分為求(n-1)!與n相乘兩個步驟;同理,求(n-1)!的問題被簡化為求(n-2)!與(n-1)相乘兩個步驟的問題,依此類推,直到求Fac(1),再逐級返回,依次求得Fac(1)、Fac(2)…Fac(n)。

2.第二題

  • 下列能表示字串sl長度的是______。
    A、sl.length()
    B、sl.length
    C、sl.size
    D、sl.size()
  • String類包括的方法有:length()、charAt()、indexOf()、lastIndexOf()、getChars()、getBytes()、toCharArray()等,其中,提取字串長度的方法是"length()",呼叫方法如下:
    String greeting="Hello";
    int n=greeting.length(); //返回字串的字元個數n=5

3.第三題

  • 下列方法中與Applet顯示無關的是______。
    A、update()
    B、draw()
    C、repaint()
    D、paint()
  • Applet顯示相關的3個方法:
    1、paint()方法:Applet的paint()方法具體執行Applet的繪製,該方法定義如下:
    public void paint(Graphics g)
    paint()方法有一個引數g是Graphics類的例項,該例項物件由瀏覽器生成,它包含了Applet的圖形上下文資訊,通過它向Applet中顯示資訊,該物件相當於Applet的畫筆。在呼叫paint()方法時,由瀏覽器將該物件傳遞給paint()方法。
    2、update()方法:
    public void update(Graphics g)
    用於更新Applet的顯示。該方法將首先清除背景,再呼叫paint()方法完成Applet的具體繪製。
    3、repaint()方法:
    public void repaint()
    repaint()方法主要用於Applet的重新顯示,它呼叫update()方法實現對Applet的更新。

4.第四題

  • 閱讀下列一個支援多執行緒併發操作的堆疊類程式碼段
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

  • Java中對共享資料操作的併發控制是採用傳統的封鎖技術。一個程式中單獨的、併發的執行緒對同一個物件進行訪問的程式碼段,稱為臨界區(Critical Sections)。在Java語言中,臨界區可以是一個語句塊或是一個方法,並且用"synchronized"關鍵字標識。Java平臺將每個由synchronized(Object)語句指定的物件設定一個鎖,成為物件鎖(monitor),其是一種獨佔的排他鎖(exclusive locks),這種鎖的含義是,當一個執行緒獲得了物件鎖後,便擁有該物件的操作權,其他任何執行緒不能對該物件進行任何操作。

5.第五題

  • 下列方法能夠用來實現執行緒之間通訊的是______。
    A、notify()
    B、run()
    C、sleep()
    D、join()
  • Java引入的wait()和notify(),是Java.lang.object類的方法,是實現執行緒通訊的兩個方法。

6.第六題

  • Java虛擬機器(JVM)執行Java程式碼時,不會進行的操作是______。
    A、載入程式碼
    B、校驗程式碼
    C、編譯程式碼
    D、執行程式碼

  • Java語言的執行模式是半編譯和半解釋型。Java編寫好的程式首先由編譯器轉換為標準位元組程式碼,然後由Java虛擬機器去解釋執行。
    Java虛擬機器(JVM)是可執行Java程式碼的假想計算機。只要根據JVM規格描述將直譯器移植到特定的計算機上,就能保證經過編譯的任何Java程式碼能夠在該系統上執行。
    位元組程式碼也是一種二進位制檔案,但不能直接在作業系統上執行,它可看作虛擬機器的機器碼。執行JVM位元組碼的工作是由直譯器來完成的。解釋執行過程分三步進行:程式碼的裝入、程式碼的校驗和程式碼的執行。

7.第七題

  • 當瀏覽器重新返回到包含Applet的頁面時呼叫的方法是______。
    A、start()
    B、init()
    C、stop()
    D、destroy()
  • 當瀏覽器重新返回Applet所在頁面時,Applet類的start()方法將被呼叫

題目總覽
總題目數量 錯誤數量 錯誤率
30 07 23.33%
錯題分析
錯誤題目涵蓋知識點 數量
Applet 2
JVM 1
多執行緒 2
String 1
演算法 1

今日小結/刷題總結

今天總共錯了七道題,目前來看是比昨天要好了的,但實際刷題過程中感受到了是自己會的題目佔比數量較多,因此錯誤題目數量有所減少
同時,一直常錯的知識點也仍然是有的,例如上表(錯題分析)中展示出來的內容,多執行緒,Applet,一直都是在錯的。
所以說,不能光刷,看完一遍就不看了,還是很需要重溫的。


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