日常Java練習題(每天進步一點點系列)

dapan發表於2021-09-09

圖片描述

1、下面的程式碼執行的結果是:


class B extends Object

{

    static

    {

        System.out.println("Load B");

    }

    public B()

    {

        System.out.println("Create B");

    }

}

class A extends B

{

    static

    {

        System.out.println("Load A");

    }

    public A()

    {

        System.out.println("Create A");

    }

}


public class Testclass

{

    public static void main(String[] args)

    {

        new A();

    }

}


正確答案: B 你的答案: B (正確)

Load B ->Create B->Load A -> Create A

Load B -> Load A ->Create B ->Create A

Load B -> Create B-> Create A -> Load A

Create B ->Create A ->Load B ->Load A


圖片描述

2、下面有關java例項變數,區域性變數,類變數和final變數的說法,錯誤的是?

正確答案: B 你的答案: B (正確)

例項變數指的是類中定義的變數,即成員變數,如果沒有初始化,會有預設值。

區域性變數指的是在方法中定義的變數,如果沒有初始化,會有預設值

類變數指的是用static修飾的屬性

final變數指的是用final 修飾的變數


題解:

區域性變數必須有初始值


3、執行如下程式碼段後,變數s1引用的字串值是( )。

String s1 = “ABCD”;

String s2 = “1234”;

System.out.println(s1 + s2);

正確答案: A 你的答案: A (正確)

ABCD

1234

ABCD1234

1234ABCD


題解:

變數s1引用的字串值是

這題出的牛,有誰跟我一樣看見輸出就覺得選C

其實題問的就是s1,牛這題


4、類A1和類A2在同一包中,類A2有個protected的方法testA2,類A1不是類A2的子類(或子類的子類),類A1可以訪問類A2的方法testA2。( )

正確答案: A 你的答案: A(正確)

正確

錯誤


題解:

public:可以被所有其他類所訪問

private:只能被自己訪問和修改

protected:自身、子類及同一個包中類可以訪問

default:同一包中的類可以訪問,宣告時沒有加修飾符,認為是friendly。

圖片描述


5、在一個基於分散式的遊戲伺服器系統中,不同的伺服器之間,哪種通訊方式是不可行的()?

正確答案: A 你的答案: A (正確)

管道

訊息佇列

快取記憶體資料庫

套接字


題解:

管道( pipe ):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程式間使用。程式的親緣關係通常是指父子程式關係。

既然是不同的伺服器之間進行通訊,怎麼可能會是具有親緣關係的程式呢?


6、下面有個hibernate延遲載入,說法錯誤的是?

正確答案: C 你的答案: C (正確)

Hibernate2延遲載入實現:a)實體物件 b)集合(Collection)

Hibernate3 提供了屬性的延遲載入功能

get支援延遲載入,load不支援延遲加

hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性


題解:

get()採用立即載入方式,而load()採用延遲載入


7、下面關於Spring的說法中錯誤的是()

正確答案: D 你的答案: D (正確)

Spring是一系列輕量級Java EE框架的集合

Spring中包含一個“依賴注入”模式的實現

使用Spring可以實現宣告式事務

Spring提供了AOP方式的日誌系統


題解:

Spring並沒有為我們提供日誌系統,我們需要使用AOP(面向方面程式設計)的方式,藉助Spring與日誌系統log4j實現我們自己的日誌系統。


8、servlet週期包含哪些:

正確答案: A B C 你的答案: A B C (正確)

初始化

銷燬

請求處理

開始


題解:

Servlet生命週期分成3個階段:

1)初始化階段:呼叫init方法

2)響應客戶請求:呼叫service

3)終止:呼叫destory方法

 

初始化階段:在下列時刻servlet容器裝載servlet

1 servlet容器啟動時,自動裝載某些servlet

2 在servlet容器啟動後,客戶首次向servlet傳送請求

3 servlet類檔案被更新之後,重新裝載servlet

 

Servlet被裝載之後,servlet容器建立一個servlet’物件並呼叫servlet的init方法,在servlet生命週期內,init方法只能被呼叫一次。servlet工作原理:客戶端發起一個請求,servlet呼叫service方法時請求進行響應,service對請求的方式進行了匹配,選擇呼叫dopost或者doget等這些方法,然後進入對應方法中呼叫邏輯層的方法,實現對客戶的響應。

 

響應客戶請求:對於使用者到達servlet的請求,servlet容器會建立特定於該請求的servletrequest和servletresponse物件,然後呼叫servlet的service方法,service方法從servletrequest物件中獲取客戶請求的資訊,處理該請求,並且透過servletresponse物件向客戶端返回響應資訊。

 

終止:當web應用終止或者servlet容器終止或servlet容器重新裝載servlet新例項時,servlet容器會呼叫servlet物件的destory方法,在destory方法中可以釋放servlet佔用的資源

圖片描述


9、已知如下的命令執行 java MyTest a b c 請問哪個語句是正確的? ( )

正確答案: C D 你的答案: C D (正確)

args[0] = “MyTest a b c”

args[0] = “MyTest”

args[0] = “a”

args[1]= "b"


題解:

題目這樣理解:java命令執行MyTest類下的main函式,命令列輸入java MyTest a b c,請問入參中對應的args為如下哪種?

main函式格式如下:public static void main(String[] args),入參中有一個String[] args,這是一個字串陣列,它早期是為了接收鍵盤錄入的資料的,而現在被Scanner(JDK 1.5以後才出現)所替代,透過String[] args錄入資料的格式是 java 類名(main方法所在類的類名) 字串1 字串2 字串3 …。對應本題,args[0]=a args[1]=b args[2]=c


10、關於java集合下列說法不正確的有哪些()

正確答案: A B D 你的答案: A B D (正確)

HashSet 它是執行緒安全的,不允許儲存相同的物件

ConcurrentHashMap 它是執行緒安全的,其中儲存的鍵物件可以重複,值物件不能重複

Collection介面是List介面和Set介面的父介面,通常情況下不被直接使用

ArrayList執行緒安全的,允許存放重複物件


題解:

A: HashSet 它不是執行緒安全的,屬於Set介面下的實現類,Set下的實現類特徵就是無序,不允許儲存相同的物件

B: ConcurrentHashMap 它是執行緒安全的HashMap實現,特徵也相似,其中儲存的值物件可以重複,鍵物件不能重複

C: Collection介面是List介面和Set介面的父介面,通常情況下不被直接使用

D: ArrayList執行緒不安全的,底層是陣列實現,允許存放重複物件


答案彙總:

1、正確答案: B

2、正確答案: B

3、正確答案: A

4、正確答案: A

5、正確答案: A

6、正確答案: C

7、正確答案: D

8、正確答案: A B C

9、正確答案: C D

10、正確答案: A B D

————————————————

版權宣告:本文為CSDN博主「牛哄哄的柯南」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/weixin_43883917/article/details/118163795?spm=1001.2014.3001.5501


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2797096/,如需轉載,請註明出處,否則將追究法律責任。

相關文章