Java基礎筆試練習(八)

Java基礎筆試練習(八)

1. 如下關於構造函數的描述錯誤的是 ( )

A.每一個類有且只能有一個構造函數。
B.構造函數是類的一種特殊函數,它的方法名必須與類名相同
C.構造函數的主要做用是完成對類的對象的初始化工做
D.通常在建立新對象時,系統會自動調用構造函數java

答案: Ac++

解析:
類除了無參構造方法,還有有參構造方法,有參構造方法還能夠經過重載寫出多參的構造方法(2參,3參,4參)
方法重載:同一個類中方法名稱相同,而參數的類型或個數不一樣git

2.在面向對象編程裏,常常使用is-a來講明對象之間的繼承關係,下列對象中不具有繼承關係的是?

A.手機與小米手機
B.企業家與雷軍
C.編程語言與Java
D.中國與北京github

答案: D
解析:
小米手機是一個手機/雷軍是一個企業家/java是一個編程語言/北京是一箇中國嗎?面試

3.如下程序運行後的輸出結果是()?

main()
{  
int m=12,n=34;
     
printf("%d%d",m++,++n);
     
printf("%d%d\n",n++,++m);
}

A.12353514
B.12353513
C.12343514
D.12343513正則表達式

答案: A
解析: >m++ 先輸出在自加,++m 先自加在輸出算法

4.下列關於功能性註釋不正確的說法是()?

A.功能性註釋嵌在源程序中,用於說明程序段或語句的功能以及數據的狀態
B.註釋用來講明程序段,須要在每一行都要加註釋
C.可以使用空行或縮進,以便很容易區分註釋和程序
D.修改程序也應修改註釋編程

答案: B
解析:數組

5.下面有關java和c++的描述,錯誤的是?

A.java是一次編寫多處運行,c++是一次編寫多處編譯
B.c++和java支持多繼承
C.Java不支持操做符重載,操做符重載被認爲是c++的突出特徵
D.java沒有函數指針機制,c++支持函數指針緩存

答案: B
解析:
JAVA沒有指針的概念,被封裝起來了,而C++有;JAVA不支持類的多繼承,但支持接口多繼承,C++支持類的多繼承;C++支持操做符重載,JAVA不支持;JAVA的內存管理比C++方便,並且錯誤處理也比較好;C++的速度比JAVA快。
C++更適用於有運行效率要求的狀況,JAVA適用於效率要求不高,但維護性要好的狀況。

6.應用程序的main方法中有如下語句,則輸出的結果( )

String s1=new String( 」 xyz 」 );
String s2=new String( 」 xyz 」 );
Boolean b1=s1.equals(s2);
Boolean b2=(s1==s2);
System .out.print(b1+ 」 」 +b2);

A.true false
B.false true
C.true true
D.false false

答案: A
解析: >
String s1=new String( 」 xyz 」 ); //建立了String類型的內容爲xyz的s1對象
String s2=new String( 」 xyz 」 ); //建立了String類型的內容爲xyz的s2對象
Boolean b1=s1.equals(s2); //比較s1對象和s2對象的內容相等,返回true。
Boolean b2=(s1==s2); //比較s1和s2兩個對象的存儲地址是否相等,明顯二者分別存儲在不一樣的地址,因此返回:false。
故答案爲:true false

7.執行以下程序,輸出結果是( )?

class Test
{
     private int data;
     int result = 0;
     public void m()
     {
         result += 2;
         data += 2;
         System.out.print(result + "  " + data);
     }
 }
 class ThreadExample extends Thread
 {
     private Test mv;
     public ThreadExample(Test mv)
     {
         this.mv = mv;
     }
     public void run()
     {
         synchronized(mv)
         {
             mv.m();
         }
     }
 }
 class ThreadTest
 {
     public static void main(String args[])
     {
         Test mv = new Test();
         Thread t1 = new ThreadExample(mv);
         Thread t2 = new ThreadExample(mv);
         Thread t3 = new ThreadExample(mv);
         t1.start();
         t2.start();
         t3.start();
     }
 }

A.0 22 44 6
B.2 42 42 4
C.2 24 46 6
D.4 44 46 6

答案: C
解析:

Test mv =newTest()聲明並初始化對data賦默認值
使用synchronized關鍵字加同步鎖線程依次操做m()
t1.start();使得result=2,data=2,輸出即爲2 2
t2.start();使得result=4,data=4,輸出即爲4 4
t3.start();使得result=6,data=6,輸出即爲6 6
System.out.print(result +" "+ data);是print()方法不會換行,輸出結果爲2 24 46 6

8. 在 main() 方法中給出的字節數組,若是將其顯示到控制檯上,須要( )。

A.標準輸出流System.out.println()。
B.創建字節輸出流。
C.創建字節輸入流。
D.標準輸入流System.in.read()。

答案: A
解析:

9.假設num已經被建立爲一個ArrayList對象,而且最初包含如下整數值:[0,0,4,2,5,0,3,0]。 執行下面的方法numQuest(),最終的輸出結果是什麼?

private List<Integer> nums;

//precondition: nums.size() > 0
//nums contains Integer objects
public void numQuest() {
int k = 0;
Integer zero = new Integer(0);
while (k < nums.size()) {
if (nums.get(k).equals(zero))
nums.remove(k);
k++;
}
}

A.[3, 5, 2, 4, 0, 0, 0, 0]
B.[0, 0, 0, 0, 4, 2, 5, 3]
C.[0, 0, 4, 2, 5, 0, 3, 0]
D.[0, 4, 2, 5, 3]

答案: D
解析: 略,一步一步來就能算出

10.如下哪個正則表達式不能與字符串「https://www.tensorflow.org/」(不含引號)匹配?()

A.[a-z]+://[a-z.]+/
B.https[://]www[.]tensorflow[.]org[/]
C.[htps]+://www.tensorflow.org/
D.[a-zA-Z.:/]+

答案: B
解析: >
[://],這是個很明顯的陷阱。[ ] 裏面是不重複的,因此等價於[:/]
若是[ ]後面沒有帶+號的話,是不會貪婪匹配的,就只能匹配到://中的其中一個

11.關於sleep和wait,如下描述錯誤的是?

A.sleep是線程類的方法,wait是object的方法
B.sleep不釋放對象鎖,wait放棄對象鎖
C.sleep暫停線程,但監控狀態依然保持,結束後會自動恢復
D.wait進入等待鎖定池,只有針對此對象發出notify方法得到對象鎖進入運行狀態

答案: D
解析:
D選項最終是進入就緒狀態,而不是運行狀態。

12.如下描述正確的是

A.CallableStatement是PreparedStatement的父接口
B.PreparedStatement是CallableStatement的父接口
C.CallableStatement是Statement的父接口
D.PreparedStatement是Statement的父接口

答案: B
解析:
CallableStatement繼承自PreparedSatement,PreparedStatement繼承自Statement

13.volatile關鍵字的說法錯誤的是

A.能保證線程安全
B.volatile關鍵字用在多線程同步中,可保證讀取的可見性
C.JVM保證從主內存加載到線程工做內存的值是最新的
D.volatile能禁止進行指令重排序

答案: A
解析:
出於運行速率的考慮,java編譯器會把常常常常訪問的變量放到緩存(嚴格講應該是工做內存)中,讀取變量則從緩存中讀。可是在多線程編程中,內存中的值和緩存中的值可能會出現不一致。volatile用於限定變量只能從內存中讀取,保證對全部線程而言,值都是一致的。可是volatile不能保證原子性,也就不能保證線程安全。

14.如下表達式中,正確的是()

A.byte i=128
B.boolean i=null
C.long i=0xfffL
D.double i=0.9239d

答案: C D
解析: null表示沒有地址;null能夠賦值給引用變量,不能將null賦給基本類型變量,例如int、double、float、boolean

15.經常使用的servlet包的名稱是?

A.java.servlet
B.javax.servlet
C.servlet.http
D.javax.servlet.http

答案: B D
解析:
JEE5.0中的Servlet相關的就下面這幾個包:
javax.servlet
javax.servlet.jsp
java.servlet.jsp.el
java.servlet.jsp.tagext
而最用得多的就是
javax.servlet
javax.servlet.http
這兩個包了.

16.Java的體系結構包含( )。

A.Java編程語言
B.Java類文件格式
C.Java API
D.JVM

答案: A B C D
解析:

17.對於代碼 var a = 10.42; 取出 a 的整數部分,如下代碼哪些是正確的?

A.parseInt(a);
B.Math.floor(a);
C.Math.ceil(a);
D.a.split('.')[0];

答案: A B
解析: >Math.ceil(); ceiling(天花板) 因此向上取整
Math.floor();floor(地板)因此向下取整
split是對字符串的分割,而10.42編譯器自動類型推斷中應該是double類型的,因此d錯誤

18.判斷一塊內存空間是否符合垃圾收集器收集的標準有哪些?

A.給對象賦予了空值null,如下再沒有調用過
B.對象從新分配了內存空間
C.給對象賦予了空值null
D.給對象賦予了新值

答案: A B D
解析:

在java語言中,判斷一塊內存空間是否符合垃圾收集器收集標準的標準只有兩個:
1.給對象賦值爲null,如下沒有調用過。
2.給對象賦了新的值,從新分配了內存空間。

19.局部內部類能夠用哪些修飾符修飾?

A.public
B.private
C.abstract
D.final

答案: C D
解析:
局部內部類是放在代碼塊或方法中的,不能有訪問控制修飾符,且不能用static修飾

20.Java.Thread的方法resume()負責從新開始被如下哪一個方法中斷的線程的執行()。

A.stop
B.sleep
C.wait
D.suspend

答案: D
解析:
suspend() 和 resume() 方法:兩個方法配套使用,suspend()使得線程進入阻塞狀態,而且不會自動恢復,必須其對應的 resume() 被調用,才能使得線程從新進入可執行狀態

推薦

大廠筆試內容集合(內有詳細解析) 持續更新中....

ProcessOn是一個在線做圖工具的聚合平臺~

文末

歡迎關注我的微信公衆號:Coder編程
歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~
新建了一個qq羣:315211365,歡迎你們進羣交流一塊兒學習。謝謝了!也能夠介紹給身邊有須要的朋友。

文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~
微信公衆號

相關文章
相關標籤/搜索